Az előző post-ban áttekintettük, hogy milyen részei lesznek a programnak. Nézzük most a felhasználó kezelő modult. E nélkül be sem tudunk lépni a programba, így ez a legfontosabb rész. Az ábra mutatja, hogy milyen osztályokból áll össze.
A dőlt betükkel írt változók felhasználó bevitelt jelentenek, az egyéb jelöléseket UML alapján használom. A hash_tabla magyarázata:
Az osztályok közötti adatok átadásának több módja van:
1. public változó, ekkor be kell forgatni a header fileokat mindkét osztályba.
2. közös osztály amit mindkét kommunikáló osztály elér. Ekkor a közös osztály header file-ját kell beforgatni mindenhova.
3. public függvényekkel private változókat írunk,olvasunk. A header probléma itt is megmarad
4. öröklődés, derived class protected változókkal. Itt a gyerek konstruktora meghívja a szülőét. Nem biztos, hogy jó megoldás. Nekem már sikerült végtelen ciklust létrehozni ezen az alapon
5. konstruktorban átadott értékek. de hogy adom vissza az eredményt a felsőbb osztálynak?
6. hash tábla. Itt csak a táblára mutató pointert kell az újonnan létrehozandó osztály konstruktorában átadni. Minden adatátvitel ezen a táblán megy keresztül.
Tekintve, hogy a hash tábla bejegyzésenként két értéket tartalmaz, az index-et és az igazi értéket, ez a legkényelmesebb. Egy kis bibi van csak, hogy az igazi érték csak egy féle lehet, pl. string vagy integer. Javasolt stringként kezelni mindent.
Eger_timer, egermozgas: az ablakokat nem hagyjuk örökké nyitva, hanem egy timer vezérlése alapján becsukjuk őket, ha nincs egérmozgás. Ha a felh. rángatja az egeret, mindig újraindítjuk a timer-t mouseMoveEvent segítségével.
shmem: megosztott memória terület (qsharedmemory). Ha azt akarom, hogy a program csak egy példányban fusson egy munkaállomásom, akkor írhatok egy 1 byte-os file-t, amit minden példány indulásakor megvizsgálok, és ha létezik, már fut a program. Ha hibával leáll a program, törölhetem az ott maradt pid file-t kézzel , hogy egyáltalán elinduljon a dolog. Hasonlóan működik a shared memory is. Minden példány indulásakor megpróbálok létrehozni egy virtuális pid file-t a memóriában. Ha nem sikerül, már fut a program. Persze a futás befejezésekor fel kell szabadítani ezt a memória területet.
Legközelebb egy kis adatbázis tervezés lesz a téma