next up previous contents
Elõre: A konkrét deklarációk Fel: A tervezés egyes fázisai Vissza: A látvány (look-and-feel) megtervezése

Leképezés adatstruktúrákra és vezérlési szerkezetekre

Az elõbb vázolt megjelenés a képernyõn, illetve kezelési mód azt sugallja, hogy szükségünk van egy, a fõmenüt leíró adatstruktúrára és az azt kezelõ fõmenü függvényre, illetve létre kell hozni egy olyan adatstruktúrát, amellyel leírhatjuk, hogy egy almenü hol helyezkedik el a képernyõn, milyen menüpontjai vannak, azokhoz milyen funkció (milyen végrehajtandó programrész, vagy milyen további almenü) tartozik, stb.

Nyilvánvaló tehát, hogy kell egy adatstruktúra, ami az egyes menüpontokra vonatkozó információkat tartja nyilván (a menüpont neve, a hozzá tartozó help-információ, a hozzárendelt kiválasztó billentyû, kiválasztották-e, milyen feladatot lát el, esetleges paraméter). A menüpontokat menülistákba kell szerveznünk. Egy ilyen listát ki kell egészítenünk a képernyõn való megjelenésre vonatkozó információkkal (milyen hosszú a lista, hány karakter széles, a listát tartalmazó doboz hol helyezkedik el a képernyõn, stb.), és megadhatjuk azt is, hogy egy adott menü milyen hierarchia szinten helyezkedik el a menü-fán.

A look-and-feel-re vonatkozó meggondolásokból következik, hogy az almenüket kezelõ menüfüggvényt ugyanolyan funkcióként érdemes felfogni, mint a programunk ténylegesen végrehajtandó egyes részeit. Igy tehát célszerû az egyes menülistákat megszámozni, és a menükezelõnk ezen szám alapján tudja eldönteni, melyik menülistát kell megjelenítenie és kezelnie. Természetesen az is célszerû, hogy az egyes menüpontok a végrehajtandó programrészletekre vonatkozó default paramétereket tartalmaznak, és a menüpont kiválasztásakor ezen paraméterrel hívja meg a menükezelõ a megfelelõ részprogramot.

Ilyen meggondolások mellett egy almenü megjelenítése belsõ vezérlési szerkezetként úgy nyivánul meg, hogy a menükezelõ függvény önmagát hívja meg úgy, hogy a rekurzív hívás alkalmával az almenü azonosítóját, mint paramétert használja.

Hogy valósítsuk meg egy adott menüponthoz tartozó függvény aktivizálását? A válasz igen egyszerû: indirekt függvényhívást kell alkalmaznunk, azaz a menüpont leíró struktúrában egy függvényre mutató pointermezõt kell deklarálnunk. Az egyes menüpontok definiálásakor ezt a struktúramezõt a ténylegesen meghívandó függvény címével kell majd inicializálnunk.