Kártyapakli rendezés
A következő bemutatásra kerülő program célja az, hogy éreztesse a generikus programozási szemléletet. Ennek érdekében egy kártyacsomagot fogunk készíteni, amely egy kártyapaklit (valahány lapból álló tömböt, de mindenképpen pozitív számú lapból állót), valamint egy rendezést tartalmaz, amely a paklit rendezi. A kártyalapot, mint típust a sablon csomag paraméterként kapja, a hozzá tartozó rendezési elvvel együtt. A példányosítás a főprogramban történik.
A főprogramban francia kártya paklit fogunk definiálni és létrehozni, amelyben a lapok egy színből és egy értékből alkotott párként lesznek reprezentálva. (rekord)
A rendezésre kétféle példát mutatunk. Az egyikben csak érték szerint rendezünk, a másikban pedig szín és azon belül érték szerint tesszük sorrendbe a lapokat. Megfigyelhetjük, hogy minél általánosabb egy sablon, annál több mindent kell megadnunk a főprogramban. Ezért figyeljünk az egyensúlyra, és ne vigyük túlzásba az általánosítást! A programban megtartjuk a már alkalmazott felépítéseket. (pl. alprogram bejelentések)
kartyacsomag.ads
kartyacsomag.adb
kartyacsomag_teszt.adb
magyarázat:
Figyeljük meg a kartyacsomag.ads /.adb fájlok egyszerű és áttekinthető szerkezetét. A kartyacsomag.adb fájlban a rendezésen belül egy generikus csere található beágyazva és a csere példányosítása is megtörténik. Itt az egységbezárás elve is érvényesül, hiszen a cserének az (élettartamát,) láthatóságát korlátoztuk. (Csak innen lesz elérhető.)
A főprogram (kartyacsomag_teszt.adb) meglehetősen bonyolultnak tűnik első pillantásra, azonban egyszerű részekből épül fel. Itt definiáljuk, hogy mit értünk francia kártya lap alatt. A pakli lapjainak számát a színek és értékék alapján számoljuk ki. Figyeljük meg, hogy a kartyacsomag nevű generikus csomagnak példányosításkor átadandó paraméterek között szereplő rendezési elvek két kártyalap egymáshoz való viszonyát fogalmazzák meg.