Gyerekcsomagok (Nyolc királynő)
Egy Ada program a csomag koncepcióján alapul.
Az Ada nyelv a csomagok által támogatja programunk modulokra történő felbontását. Amint már korábban láttuk csomagjaink különböző entitásokat, típusokat, hozzájuk tartozó műveleteket, vagy akár más programegységeket is tartalmazhatnak, amelyeket elérhetővé tehetnek (specifikáció) a csomagot használó, a csomagot implementáló (törzs) valamit, a csomagot „bővítő” kódok (gyerekcsomagok) felé. Ezáltal a csomag az enkapszuláció egy erős és sokoldalú nyelvi eszköze.
A csomagok használatával elkerülhetőek a névütközések, korlátozhatóak a láthatóságok.
Segítségükkel „fa-szerű” hierarchiába szervezhetjük az egyes programrészeket, ezáltal biztosítva azt, hogy minden programegység csak azokhoz az információkhoz férjen hozzá, amelyekre szüksége van. Ez a felépítés lehetővé teszi az egyes programrészek közötti függőségek minimalizálását. (Elkerülhetőek a felesleges újrafordítások is, melyekkel nagy programok esetén sok időt megtakaríthatunk. Bizonyos esetekben - előrelátó tervezéssel - könnyebbé tehető a tesztelés is. ( privát gyerekcsomagok, private with ))
Egy csomagnak lehetnek állapotai (golbális / non-lokális változói) is melyek befolyásolhatják a csomag által tartalmazott más programegységeknek a működését.
Ennek az elvnek a használatával lehetőségünk nyílik „egyke csomagok” létrehozására is.
Óva intünk mindenkit attól, hogy az „egyke” szót olvasva azt gondolja, hogy a „csomag” és az „osztály” ugyanazt a fogalmat jelöli.
(Paraméter nélküli generic csomag példányosításával több ilyen „egyke csomag” is létrehozható.)
Megjegyezzük azonban, hogy - mint azt a későbbiek során látni fogjuk - a csomagoknak fontos szerep jut az objektum orientált programozás során is.
Ebben a programunkban a „nyolc királynő probléma” egy megoldását mutatjuk be, vegyes alapú számrendszer használatával... (visszalépéses keresés + számlálás)
szamrendszerek.ads
szamrendszerek-szamabrazolas.ads
szamrendszerek-vegyes_alapu_szamrendszer.ads
szamrendszerek-vegyes_alapu_szamrendszer.adb
szamrendszerek-vegyes_alapu_szamrendszer-teszt.ads
szamrendszerek-vegyes_alapu_szamrendszer-teszt.adb
nyolc_kiralyno.adb
megjegyzések:
A program kódjának vizsgálata során figyeljük meg, hogy egy típus tulajdonságait, valamint a rajta végezhető műveleteket, külön „állíthatjuk be” a csomagot kívülről elérők felé, valamint a gyerekcsomagok irányába.
kiegészítések:
Sok esetben használunk a teszteléshez gyerekcsomagokat. Amikor ez nem kielégítő (pl. „bele szeretnénk látni” a csomag törzsébe) azt a megoldást választjuk, hogy elhelyezünk egy seperarate „tesztelő eljárást” a csomag torzsében az end közelében, melynek deklarációja a csomag kívülről látható részében kap helyet. (Ebben az esetben azonban nem kerülhetjük el az újrafordítást.)
A GNAT fordító esetében elnevezési szabályok vonatkoznak a gyerekcsomagokat, és a separate egységeket tartalmazó fájlokra is. Ezek természetesen megváltoztathatók.
separate_eljarasos_program-szamot_kiir.adb
separate_eljarasos_program.adb
Csatolmány | Méret |
---|---|
gyerekcsomagos.zip | 9.09 KB |
separate.zip | 1 KB |