Borkereskedő. Dokumentáció a Programozási módszertan elmélete című tárgy beadandó programjához. Magyar Attila mattila@inf.elte.hu 2002.11.26.



Hasonló dokumentumok
Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Objektum Orientált Szoftverfejlesztés (jegyzet)

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat

4. Öröklődés. Programozás II

Programozási nyelvek Java

Programozás I. 2. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

JAVA PROGRAMOZÁS 3.ELŐADÁS

Programozás 1. 2.gyakorlat

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Prezentáció használata

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2.

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

Számítógépes grafika

4. Példa: Másodfokú egyenlet megoldása (program2_1.vi)

Dr. Pétery Kristóf: Word 2003 magyar nyelvű változat

Tartalomjegyzék. Bevezetés...2

2. Beadandó feladat dokumentáció

1.1 Szakdolgozat témája A Program célja A használt technológiák ismertetése A program megtervezése...

4. Gyakorlat ellenőrzött osztályozás

Egy dinamikus adatbázis megvalósítása egy megrendelő-raktározó alkalmazáson keresztül.

Előzmények

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Aronic Road Útnyilvántartó program

Tartalom Kontextus modellek Viselkedési modellek Adat-modellek Objektum-modellek CASE munkapadok (workbench)

Bevezetés. A WebAccess használatának bemutatása előtt néhány új funkció felsorolása következik:

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

Access 2010 Űrlapok és adatelérés

OOP #14 (referencia-elv)

117. AA Megoldó Alfréd AA 117.

Adatstruktúrák, algoritmusok, objektumok

Bosch Video Management System. Kezelési útmutató

Access adatbázis elérése OLE DB-n keresztül

Sorompó kezelés mérlegműszerrel

Idősoros elemző. Budapest, április

VBA. Visual Basic for Applications

Áttérés az Access 2010-es verziójára

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Animációk, effektusok


C# osztályok. Krizsán Zoltán

Az Egálnet Honlapvarázsló használati útmutatója

Delphi programozás III.

Delphi programozás IV.

Szentgotthárd Városi Televízió és Kábelüzemeltető Nonprofit Kft. TULAJDONOS

Beállítások módosítása

PHP5 Új generáció (2. rész)

Kezelési leírás. Agilent 34410A Digitális asztali multiméter

VELUX CAD VELUX ablaktervező rendszer AutoCAD-hez FELHASZNÁLÓI KÉZIKÖNYV

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Számítógépes grafika

Analízis modell kidolgozása I.

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Objektumorientált programozás C# nyelven

NETFIT modul Tanári felület Felhasználói útmutató. Magyar Diáksport Szövetség

évi nyári olimpiai játékok

MUNKAANYAG. Martonosiné Csertő Brigitta. Az értékesítési folyamat mely fázisaiban és. hogyan ellenőrizzük az élelmiszerek- és

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése

AUTOMATIKUS GÉPJÁRMŰ BELÉPTETŐ RENDSZER

ArcGIS 8.3 segédlet 6. Dr. Iványi Péter

Objektum orientált alapelvek

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

II. év. Adatbázisok és számítógépek programozása

Dr. Pétery Kristóf: Excel 2003 magyar nyelvű változat

GÁZTURBINA-OPERÁTOROK TOVÁBBKÉPZÉSÉRE SZOLGÁLÓ SZIMULÁTOR FEJLESZTÉSE

Tartalom. Történeti áttekintés. Történeti áttekintés Architektúra DCOM vs CORBA. Szoftvertechnológia

A SZOFTVERTECHNOLÓGIA ALAPJAI

Pulzus óra SL388. Kezelési utasítás. 4. A szimbólumok magyarázata. 5. Funkciók. 6. Biztonsági tudnivalók. 1. Bevezetés. 2. A szállítás tartalma

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

MAGYAR POSTA BEFEKTETÉSI ZRT. e-befektetés. Felhasználói kézikönyv

BAUSFT. Pécsvárad Kft Pécsvárad, Pécsi út 49. Tel/Fax: 72/ ISO-bau. Szigetelés kiválasztó verzió.

Év zárása és nyitása 2015-ről 2016-ra

15. Programok fordítása és végrehajtása

Objektumorientált programozás C# nyelven

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

1. feladat. Keresse meg, hogy kik teljesítették a legtöbb kreditet, kiknek a legrosszabb az átlaguk, kik a legfiatalabbak, stb.

A tömörítési eljárás megkezdéséhez jelöljük ki a tömöríteni kívánt fájlokat vagy mappát.

Kaspersky Internet Security Felhasználói útmutató

7. gyakorlat Tervlapok készítése, a terv elektronikus publikálása

(a 23/2014 (VI.30) NGM és az azt módosító 2/2015. (II. 3.) NGM rendeletek alapján)

libgdx alapok, első alkalmazás

Adatbázis rendszerek I

Programozási Paradigmák és Technikák

Jogosultságkezelés felhasználói leírás

szolgáltatásról

BAUSFT. Pécsvárad Kft Pécsvárad, Pécsi út 49. Tel/Fax: 72/ WinWatt

Indítsuk el a PowerPoint 2010 alkalmazást, majd a Nézet/Mintanézetek/Diaminta paranccsal lépjünk be a minta nézetbe.

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

LM OG PA2. Használati utasítás

Szoftvertechnológia. Feladatgyűjtemény. Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék

Objektum orientált programozás (Object Oriented Programming = OOP)

Moodle tanulói kézikönyv

Kézikönyv. SOFiSTiK SOFiCAD-B (Vasalásszerkesztő modul) 16.5 és 17.1 verzió

Mérési útmutató. Széchenyi István Egyetem Távközlési Tanszék. SDR rendszer vizsgálata. Labor gyakorlat 1 (NGB_TA009_1) laboratóriumi gyakorlathoz

A C++ öröklés. (Előfeltétel: 12. tétel ismerete)

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Átírás:

Borkereskedő Dokumentáció a Programozási módszertan elmélete című tárgy beadandó programjához Magyar Attila mattila@inf.elte.hu 2002.11.26.

2 Tartalomjegyzék: Beadandó feladat 3 Borkereskedő 3 Állandók 4 Osztályok és objektumok 5 UML modellek 6 Környezet és megvalósítás 10 Delphi Forrás 11 2

3 Beadandó feladat Az ELTE TTK Programtervező matematikus szakán a 7. félévben tanított Programozási Módszertan Elmélete című tárgy követelményei alapján a beadandó feladat egy objektum elvű módon megvalósított mesterség-szimuláció, azaz adott foglalkozást űző vállalkozó (például: ács) életét szimuláló alkalmazás. Bármely objektum-orientált nyelv válaszható a megvalósítás eszközéül. A programot felhasználói dokumentációval, valamint megfelelő felhasználóbarát környezettel kell ellátni. Borkereskedő Ezesetben a megvalósítandó feladat egy borkereskedő szimulációja. Élete során bort termel, és eladja azt az üzletében. A szimuláció során csupán az eladásra összpontosítunk, azaz feltételezzük hogy a borászunknak rendelkezésére áll egy kifogyhatatlan borforrás, ez lesz az ő pincéje. Természetesen borát nem a pincéjében kínálja, ehhez rendelkezik egy üzlettel, ahová a vendégeit várja. Az üzletben igyekezik a lehető legjobb feltételeket biztosítani a borkóstoláshoz és eladáshoz, ezért különféle kellékeket tart raktáron a különféle borok mellett. Ha ezen kellékek fogynak el, ezekből a szakboltban (borászboltban) vásárolhat, természetesen pénzért. Ilyen kellék például a sajt, vagy pohár. Tehát adott a borászunk, aki rendelkezik egy kiinduló tőkével, és kifogyhatatlan mennyiségű borral. Elmegy az üzletébe,visz egy adag bort a pincéjéből, majd a szakboltból kellékeket is hoz. Ezután vendégek érkezésére vár, akik ittlétük alatt, bort kóstolnak (közben sajtot rágcsálnak, eltörik poharukat, vagy leöntik a terítőt ), nagyobb mennyiséget rendelnek, és ha kiszolgálták őket kannákba töltött borukkal, fizetnek és távoznak. A borász a kiszolgálások közben szemmel tartja az üzlet raktárkészletét, és ha bármilyen bornak vagy kelléknek hiányát tapasztalja, elmegy a pincébe avagy a szakboltba hogy pótolja amit szükséges. Majd visszatér az üzletbe és várja az újabb vendégeket. A szimulációban adott számú vendég létezik, akik visszatérő fogyasztók. Számuk legfeljebb hat lehet. Szintén rendelkeznek pénztárcával, és nekik van alkoholszintjük is. Ha nem az üzletben tartózkodnak, alkoholszintjük csökken, pénzük gyarapszik, közben adott valószínűséggel újra és újra visszatérnek az üzletbe borozgatni, ha az épp nyitva van. Kóstolgatás közben alkoholszintjük növekszik, rendelés után pénzük fogy a 3

4 fizetés által. Ha túl részegek vagy nem rendelkeznek elegendő pénzzel a rendelésük teljesítéséhez természetesen a borász nem szolgálja ki és kirúgja őket az üzletből. Létezik még ellenőr is a programban, csak hogy színesítse az eseményeket. Időnként ellátogat az üzletbe és vizsgálódik. Ellenőrzi hogy a raktáron mindenből elegendő mennyiség áll-e rendelkezésre, valamint ellenőrzi hogy van-e részeg ember a helységben. A tapasztaltak alapján jutalmazza, vagy bünteti az üzlet tulajdonosát, de égbekiáltó szabályszegések esetén ki is üríttetheti a borozót. Az ellenőrnek hangulata is van, ami büntetések során javul, jutalmazások során pedig romlik. A büntetés/jutalmazás mértékének meghatározásakor az ellenőr természetesen figyelembe veszi saját hangulatát is. Állandók A program néhány jellemzője előre meghatározott. Ilyenek a vendégek maximális száma, a különböző bor- és kellékfajták, vagy az ellenőr hangulatai. Ezek felsorolása látható alább: Borfajták: Merlot Bikavér Kékfrankos Olaszrizling Aszú Szamorodni Kellékek: Sajt Terítő Pohár Kanna Vendégek: Borszakértő Tokaji borászkolléga Külföldi turista Környékbeli bácsi Vendégmunkás Szegedi tanár 4

5 Ellenőr hangulatai: Jókedvű Hétköznapi Rosszkedvű A szimuláció indítása előtt lehetőség van elvégezni néhány kezdeti beállítást, melyeket aztán már futás közben nem módosíthatunk. A borász neve mellett megadhatjuk kiinduló pénzmennyiségét is (0 és 99999 között). A vendégek számát (azaz a borozónk férőhelyét) is állíthatjuk legfeljebb 6-ig, valamint hogy a vendégek mennyi pénzzel rendelkezzenek kezdetben (szintén 0 és 99999 között). Módosítható az ellenőr neve, és kezdeti hangulata is, éppúgy mint az összes épület elnevezése. Szintén 6-ig állítható a borász négy fő műveletének időtartama is (leltárazás, kiszolgálás, borhozás, vásárlás), azaz hogy hány körig tartson, egy-egy művelet a felsoroltak közül. Osztályok és objektumok A feladatnak megfelelően a programban a következő osztályok szerepelnek: Pince, Üzlet, Szakbolt osztályok melyek származtathatók egy közös Hely osztályból, Borász, Vendég, Ellenőr osztályok melyek származtathatók egy közös Ember osztályból, Kiszolgál, Borthoz, Vásárol osztályok melyek származtathatók egy közös Tennivaló osztályból, valamint maguknak a boroknak és kellékeknek lesz egy összevont Dolog osztálya. Pincéből, Üzletből, Szakboltból egy-egy objektum létezik a program futása során, valamint magának a Hely osztálynak lesz egy Sehol objektuma, itt tartozkodnak majd a Vendégek és az Ellenőr amikor nem az Üzletben vannak. Borászból és Ellenőrből szintén csak egy-egy objektum szükséges, míg Vendégből annyi objektum szükséges ahány visszatérő vendéggel szeretnénk futtatni a szimulációt. Kiszolgál, Borthoz, Vásárol típusú objektumok mind a borász tennivalói, ezért ezeket majd a Borász osztály fogja tartalmazni. Kiszolgál típusú objektumból mindig annyi létezik egy időpillanatban, ahány rendelés épp teljesítésre vár. Borthoz és Vásárol osztályokból egyszerre csak három-három objektum létezhet, ilyen típusú műveletekből a borász nem ad hozzá újabbakat tennivalólistájához, hogyha már elérték a maximális számukat. Egy-egy borhozás vagy vásárlás tennivaló mindig az aktuálisan fogyóban lévő borokra vagy kellékekre vonatkozik, azaz a borász mindig csak azokból hoz amire tényleg szükség is van. 5

6 UML Modellek Az előző fejezet alatt felvázolt osztályokat többek közt a következő UML modellekkel és azok diagramjaival írhatjuk le: Statikus modell A Tennivaló osztály, három leszármazottjával (Kiszolgálás, Borhozás, Vásárlás), melyek tartalmaznak Dolog osztálybeli objektumokat (borok és kellékek). A leltár művelet egyszerűsége miatt (végrehajtása azonnali, paraméterei nincsenek) nem kapott külön osztályt, még csak nem is objektuma a Tennivaló osztálynak, egyszerű függvényként lett megvalósítva. Az osztálydiagrammok: Tennivaló Fajtája Időtartama Kiszolgálás Vendég Borok Borhozás Borok Vásárlás Kellékek * Dolog Fajtája Egysége Ára Mennyisége 6

7 Az Ember osztály és annak leszármazottai: Ember Neve Holvan Elmegy Borász Pénze Tennivalói Üzlete Pincéje Szakboltja Kiszolgál Borthoz Vásárol Nyit/Zár Leltáraz Vendég Pénze Alkoholszint Kóstol Rendel Ellenőr Hangulata Büntet Jutalmaz Kiüríttet Vizsgál * Tennivaló 0..6 Üzlet Kiszolgálás Pince Borhozás Szakbolt Vásárlás * Dolog * 7

8 Ebből az összetettebb ábrából leolvasható, miszerint a Borász, Vendég, Ellenőr osztályok közös őse az Ember, és hogy egy Borász tartalmaz meghatározatlan számú Tennivalót, valamint egy-egy-egy Üzlet-, Pince-, és Szakboltbeli objektumot. Továbbá hogy egy Üzlet tartalmaz egy Ellenőrt, és több Vendéget. Az ábra alsó része a két kisebb diagram egyszerűsített változata. A Hely osztály diagramja hasonló ahhoz amit már a Tennivaló osztálynál láthattunk: Dolog Fajtája Egysége Ára Mennyisége Hely Neve Távolsága Nyitva-e 10 4 6 Pince Borok Szakbolt Kellékek Üzlet Borok Kellékek Vendégek Dinamikus modell A program osztályhiearchiájának legösszetettebb elemét a Borászt kiemelve, megadom annak állapotdiagramját, részletezve azt az állapotot amikor az üzletében tartózkodik: 8

9 BORÁSZ ÁLLAPOTA Pincében van Borthoz Üzletben van Vásárol Szakboltban van Máshol van Nyit Zár Üzletben van kiszolgál kiszolgálás elmegy do: döntés kiürítés elég leltáraz leltárazás kevés borthoz vásárol 9

10 Funkcionális modell A funkcionális modellhez a mennyiségszámítás adatfolyam diagramját szemléltetem: Üzlet Eredeti mennyiség Vásárlás Vásárolt mennyiség Mennyiségszámítás Új mennyiség Eredeti mennyiség Mennyiségszámítás Vásárolt mennyiség Eredeti mennyiség + Vásárolt mennyiség Új mennyiség Környezet és megvalósítás A feladat megvalósításához a Borland Delphi környezetét választottam, azaz a programot Object Pascal nyelven írom. Egyetlen exe fájlból áll majd, mely minden 32 bites Microsoft Windows környezetben futtatható. Indítás után a főablakot láthatjuk, melyről minden fontos információt leolvashatunk majd a szimuláció futása során. Három vezérlő gomb látható középen, Elindít, Beállítások, Kilép feliratokkal, melyekkel értelemszerűen a szimuláció indítását, kezdeti beállításait, és a programból való kilépést végezhetjük. Egy szimuláció mindig a beállítások gomb alatt megadott jellemzőknek megfelelő tulajdonságokkal indul. Futás közben a gombok megváltoznak, indítás és beállítás helyett egy Léptet gomb lesz látható, valamint kilép helyett egy Leállít. Értelemszerűen a szimuláció leállításával a főablak eredeti állapotához léphetünk vissza, míg a léptet gomb nyomogatásával léptethetjük a programot előre az időben. Közben a főablakban nyomon követhetjük az eseményeket, egyrészt a gombok feletti kiírólistán, másrészt a gombok alatt a borászunk és üzletének tulajdonságainak változásait figyelemmel követve. Ezen tulajdonságok között a különféle listákra kattintva, további információkat tartalmazó ablakokat nyithatunk meg, valamint 10

11 ellenőr érkezésekor automatikusan felbukkan egy vele kapcsolatos ablak, amely távozásakor el is tűnik. A Leállít gombot bármikot megnyomva, leállíthatjuk az aktuális szimulációt. Újra előkerül a Kilép és a Beállítások gomb. Ezekután vagy módosítunk a paramétereken és új szimulációt indítunk, vagy a Kilép gombbal bezárjuk a programot. Delphi forrás Az osztályok adattagjainak és metódusainak (és azok típusainak) pontos megadásához mellékelem jelenlegi definíciójukat Object Pascalban: INTERFACE // DOLOG TDolog = class Fajta : String; Egyseg : String; Mennyiseg : Integer; Ar : Integer; constructor Init (f,e : String; m,a : Integer); function GetFajta : String; function GetEgyseg : String; function GetMennyiseg : Integer; function GetAr : Integer; procedure SetFajta (f : String); procedure SetEgyseg (e : String); procedure SetMennyiseg (m : Integer); procedure SetAr (a : Integer); // HELY THely = class Nev : String; Nyitva : Boolean; constructor Init (n: String; ny : Boolean); virtual; function GetNev : String; function GetNyitva : Boolean; procedure SetNev(n : String); procedure SetNyitva (ny : Boolean); // EMBER TEmber = class Nev : String; Holvan : THely; constructor Init (n : String); virtual; function GetNev : String; 11

12 function GetHolvan : THely; procedure SetNev (n : String); procedure SetHolvan (h : THely); function Elmegy (h : THely) : Integer; virtual; function Kiir : String; virtual; // csak a dinamikus kotes miatt // TENNIVALO TTennivalo = class Fajta : String; Ido : Integer; constructor Init (i : Integer); virtual; function GetIdo : Integer; procedure SetIdo (i : Integer); function GetFajta : String; procedure SetFajta (f : String); // SZAKBOLT TSzakbolt = class (THely) Kellekek : TList; constructor Init (n : String; ny : Boolean); override; function GetCountKellekek : Integer; function GetItemKellekek (i : Integer) : Pointer; function IsKellek(d : TDolog) : Boolean; function SearchKellek (d : TDolog) : Integer;overload; function SearchKellek (s : String) : Pointer;overload; function GetCountKanna : Integer; function GetCountSajt : Integer; function GetCountTerito : Integer; function GetCountPohar : Integer; function GetFirstKanna : TDolog; function GetFirstSajt : TDolog; function GetFirstTerito : TDolog; function GetFirstPohar : TDolog; procedure AddKellek (f,e : String; m,a : Integer); procedure DelKellek (i : Integer); // PINCE TPince = class (THely) Borok : TList; constructor Init (n : String; ny : Boolean); override; function GetCountBorok : Integer; function GetItemBorok (i : Integer) : Pointer; function SearchBor (b : String) : TDolog; procedure AddBor (f,e : String; m,a : Integer); procedure DelBor (i : Integer); TVendeg = class (TEmber) Penz : Integer; AlkoholSzint : Integer; Rendelt : Integer; // VENDEG 12

13 constructor Init (n : String); override; function GetPenz : Integer; function GetAlkoholSzint : Integer; function GetRendelt : Integer; procedure SetRendelt (i : Integer); procedure SetPenz (p : Integer); procedure SetAlkoholSzint (a : Integer); function Kiir : String; override; //csak a dinamikus kotes miatt function Kostol (b : TDolog) : Integer; function Rendel (b : TEmber) : TTennivalo; function Elmegy (h : THely) : Integer; override; // UZLET TUzlet = class (THely) Kellekek : TList; Borok : TList; Vendegek : TList; VanEllenor : Boolean; constructor Init (n : String; ny : Boolean); override; function GetCountKellekek : Integer; function GetItemKellekek(i : Integer) : Pointer; function IsKellek(d : TDolog) : Boolean; function SearchKellek (d : TDolog) : Integer; overload; function SearchKellek (s : String) : Pointer; overload; function GetCountKanna : Integer; function GetCountSajt : Integer; function GetCountTerito : Integer; function GetCountPohar : Integer; function GetFirstKanna : TDolog; function GetFirstSajt : TDolog; function GetFirstTerito : TDolog; function GetFirstPohar : TDolog; procedure SetVanEllenor(b : Boolean); function GetVanEllenor : Boolean; procedure AddKellek (f,e : String; m,a : Integer); procedure DelKellek (i : Integer); function GetCountBorok : Integer; function GetItemBorok(i : Integer) : Pointer; function SearchBor (b : String) : TDolog; procedure AddBor (f,e : String; m,a : Integer); procedure DelBor (i : Integer); procedure SetItemVendegek (i : Integer; p : Pointer); procedure VendegekPack; function IsVendeg (v : TVendeg) : Boolean; function GetCountVendegek : Integer; function SearchVendeg (v : TVendeg) : Integer; overload; function SearchVendeg (s : String) : Integer; overload; function GetItemVendegek(i : Integer) : Pointer; procedure AddVendeg(v : TVendeg); procedure DelVendeg(i : Integer); TBorthoz = class (TTennivalo) Borok : TList; // BORTHOZ 13

14 constructor Init (i : Integer); override; function GetCountBorok : Integer; function GetItemBorok (i : Integer) : Pointer; function SearchBor (b : String) : TDolog; procedure AddBor (f,e : String; m,a : Integer); procedure DelBor (i : Integer); // VASAROL TVasarol = class (TTennivalo) Kellekek : TList; constructor Init (i : Integer); override; function GetCountKellekek : Integer; function GetItemKellekek(i : Integer) : Pointer; function SearchKellek(k : String) : TDolog; procedure AddKellek (f,e : String; m,a : Integer); procedure DelKellek (i : Integer); // KISZOLGAL TKiszolgal = class (TTennivalo) Vendeg : TVendeg; Borok : TList; constructor Init (i: Integer); override; function GetVendeg : TVendeg; procedure SetVendeg (v : TVendeg); function GetCountBorok : Integer; function GetItemBorok (i : Integer) : Pointer; function SearchBor (b : String) : TDolog; procedure AddBor (f,e : String; m,a : Integer); procedure DelBor (i : Integer); // BORASZ TBorasz = class (TEmber) Penz : Integer; Tennivalo : TList; Uzlet : TUzlet; Pince : TPince; Szakbolt : TSzakbolt; Ido : Integer; MitCsinal : Integer; constructor Init (n : String); override; function GetPenz : Integer; procedure SetPenz (p : Integer); function GetUzlet : TUzlet; procedure SetUzlet (u : TUzlet); function GetPince : TPince; procedure SetPince (p : TPince); function GetSzakbolt : TSzakbolt; procedure SetSzakbolt (sz : TSzakbolt); procedure SetIdo (i : Integer); function GetIdo : Integer; procedure AddIdo (i : Integer); procedure DecIdo (i : Integer); procedure SetMitCsinal (i : Integer); function GetMitCsinal : Integer; 14

15 function Kiir : String; override; // csak a dinamikus kotes miatt function GetCountTennivalo : Integer; function GetItemTennivalo (i : Integer) : Pointer; function IsTennivalo (t : TTennivalo) : Boolean; function SearchTennivalo (t : TTennivalo) : Integer; overload; function SearchTennivalo (s : String) : Integer; overload; procedure AddTennivalo (t : TTennivalo); procedure DelTennivalo (i : Integer); procedure TennivaloPack; function GetCountVasarlas : Integer; function GetCountBorhozas : Integer; function GetCountKiszolgalas : Integer; function GetFirstBorhozas : TBorthoz; function GetFirstVasarlas : TVasarol; function GetFirstKiszolgalas : TKiszolgal; procedure ClearKiszolgal; function Vasarol : Integer; function Borthoz : Integer; procedure Nyit; procedure Zar; function Kiszolgal : Integer; procedure Leltaraz; function Elmegy (h : THely) : Integer; override; // ELLENOR TEllenor = class (TEmber) Hangulat : String; Lepes : Integer; Mehet : Boolean; constructor Init (n : String); override; function GetHangulat : String; procedure SetHangulat (h : String); function GetMehet : Boolean; procedure SetMehet(b : Boolean); procedure Buntet (b : TBorasz; o : Integer); procedure Jutalmaz (b : TBorasz; o : Integer); procedure Kiurittet (b : TBorasz); function Vizsgal (b : TBorasz) : Integer; function Elmegy (h : THely) : Integer; override; function Kiir : String; override; //csak a dinamikus kotes miatt 15