Íme egy példaprogram, mely eredetileg Programozáselmélet tárgy beadandó feladataként készült 2002/2003 tanév első félévében, majd rákövetkező félévben grafikus felhasználói felületet és egyéb kiegészítéseket kapott, hogy Programozási nyelvek III. tárgy beadandó feladataként is megfeleljen. A feladat egy mesterség szimulációja volt, jelen esetben egy borász mindennapjainak azon tevékenységeire fókuszáltunk, melyek borának eladásával kapcsolatosak.
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 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 helyisé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.
A feladat egy 12 osztályból álló hierarchiát kapott maga alá. Az ezt leíró modellek, grafikonok, ábrák megtekinthetők a dokumentációban. A dokumentáció online megtekinthető a programból is, vagy letölthető erről az oldalról. A Borkereskedőnek létezik párhuzamos változata is a Delphi TThread osztályára alapozva, mely a Programozási elmélet tárgy második félévének beadandó feladataként készült.
Az osztályhierarchia kialakítása kihasznál egy-két Delphi sajátosságot, emiatt nem a legszerencsésebb megoldás objektumorientált szempontból. Az alkalmazás átírásra került Eiffel nyelvre is, és ezek a nem szerencsés megoldások bizony kiütköztek az átalakítás során, és többletmunkát jelentettek.
Az említett szerencsétlen tervezés eredményeképp nincs a programban dinamikus kötés, mely Delphiben nem is jelentett gondot a futásidejű típusinformációk és a castolás használata mellett, de Eiffelben ezek hiánya miatt újabb osztályokat kellett bevezetni, és az absztrakt metódusok néha üres törzzsel lettek implementálva egy-egy leszármazottban.
A megvalósítás egyik legszembetűnőbb hiányossága talán a propertyk mellőzése. Bár legtöbbször tipikus Get és Set metódusokra volt szükség, ezeket mégsem propertyken keresztül kapcsoltuk a rejtett adattagokhoz.
Az alkalmazás HTML Helpet kapott, illetve a dokumentáció oldalai érhetők el ilyen módon. Miután ezt a Delphi 7-es verziója sem támogatta, ezért a HTML Help API-t megvalósító unitokat kellett include-olni a projecthez.
A program megírásának a célja a Delphi Socket interfészének programozásának bemutatása volt. A forráskódban számos megjegyzés segíti a megértést, de a fenti cikk elolvasása mindenféleképpen szükséges a megértéshez.
A program működése:
Az egyetlen lenyíló menüből két opció látható (Kapcsolódás, Kapcsolat megszakítása). Ezek segítségével lehet másik számítógéphez csatlakozni annak IP címe vagy hálózati neve alapján. A program a háttérben megteszi a szükséges ellenőrzéseket (van-e ilyen nevű gép), majd ha minden rendben folyt, akkor létrehozza a kapcsolatot. A Kapcsolat megszakítása menüpont kiválasztása esetén a felépült kapcsolatot lehet megszüntetni.
A létrejött kapcsolat után szabadon lehet gépelni a felső mezőbe, annak változásai azonnal megjelennek a célgépen. Pár gomb is el van helyezve még a formon, ezek csak a Font beállítására valók, a kapcsolat meglétében nem játszanak szerepet.
Négyféle, 16 darab, méretét tekintve véletlenszerűen generált objektum jelenik meg és mozog az ablakban. Amint egy objektum eléri a képernyő szélét, visszapattan róla. A jobb oldali sávon az egyes alakzatok pozíciói láthatók (K = kör, T = téglalap, H = háromszög, P = paralelogramma).
Az alkalmazás felületét két részre lehet osztani. Az egyik egy TImage komponens, amelyen megjelennek az alakzatok. A formon szabadon hagyott rész
a második felület. Itt jelennek meg a TLabel komponensek, melyek segítségével az egyes alakzatok aktuális pozícióját írja ki a program.
Az egyes alakzatokat külön unit tartalmazza. Ezekben a unitokban fejthetők ki az alakzatokra vonatkozó specialitások. Mindegyik objektum a
grafobj-ból származik. Az ott meghatározott absztrakt metódusok az alakzatok unitjában vannak megvalósítva.
A grafobj tartalmaz egy TGrafObj osztálydeklarációt a következő publikus metódusokkal:
Delphi7.
Bakos Natália
Egyszerű számológép készítése grafikus felülettel.
Egy tipikus számológép felület segítségével tudunk valós számokkal alapvető aritmetikai (összeadás, kivonás, szorzás, osztás) műveleteket végrehajtani. Az = jel lenyomásáig számol, figyelembe veszi a műveletek precedenciáját is. A kis példaprogramban találhatunk példát néhány tipikus vezérlési szerkezetre, bemutatja a formok valamint a unitok használatát (egy különálló unit tartalmazza az aritmetikai műveletek megvalósítását).
Delphi7.
Kőszegi Judit
A program egy Magyar-Angol és Angol-Magyar szótárprogram, amely értelemszerűen szótározásra használható! Ezen kívül lehetőség van a szótár karbantartására, azaz további szavakkal való bővítésre, illetve a már meglévő szavak törlésére. Miután eléggé kiszélesítettük a tudásunkat, lehetőségünk van annak letesztelésére. A program képes mindegyik nyelven felmérni a tudásunkat. A kérdezett szavak lehetnek véletlenszerűek, illetve magunk is kiválaszthatjuk őket. A kiválasztott szavak elmenthetők, és később ismét betölthető, hogy a tudásunk ismét lemárjük. Rendelkezésünkre áll tovább még egy segítség menü is, ahol leírást kapunk a program működéséről, illetve a program alján is olvasható kis segítség. A program az angol és a magyar nyelvet támogatja, azaz Angol-Magyar és Magyar-Angol szótár található benne. Így a fent említett funkciók is e két nyelven érhetőek el. Mindenféleképpen hasznos kisebb gyerekek tudásának bővítésére és annak felmérése.
      Delphi 2005
      Batha Dorián
      dictionary.zip
A szoftver a torpedó nevezetű táblás játék számítógépes változata Windows operációs rendszert futtató számítógépek számára. A programban lehetőség van hálózaton történő játékra is TCP/IP protokollon keresztül.
      Delphi 5
      Ézsiás Tamás
      Torpedo.zip
A Mesterlogika játék számítógépes megvalósítása. A számítógép "gondol" egy négy színből álló összeállításra, a felhasználó pedig megpróbálja azt kitalálni. Hat színből lehet választani: piros, kék, zöld, sárga, magenta és világoskék. A felhasználó kirak egy színösszeállítást, a gép pedig értékeli. Az értékelés menete:
      Delphi 7
      Kovács Péter
      Mesterlogika.zip
Vonaldiagramot kirajzoló program, mely DLL-ből veszi a kirajzoló függvényt.
      Delphi 7
      Iván Bernadett Diana
      FVrajzolo.zip
Invariáns, elő- és utófeltétel ellenőrzés objektumokon, sablonok, önelemzés, annotációk és virtuális metódus elkapás segítségével.
      Delphi XE 2
      Kovács Lajos Tibor
      Helyesseg.zip
A program a Delphi nyelv objektumorientált eszközeit hivatott bemutatni. Lehetõség van különbözõ alakzatok megadására, amiknek egy absztrakt õsosztálya van, az öröklõdés bemutatására. A különbözõ alakzatok felülírják a kerület és terület számoló függvényeket. Az alakzatokat egy ötelemû, õsosztály típusú tömbben tárolódnak, a polimorfizmus szemléltetésére, illetve kerület és terület függvényüket dinamikus kötés segítségével hívja meg a program. Az alakzatok típusait külön unitba szervezve tároljuk.
      Delphi 7
      Sári Attila
      oopdemonstracio.zip