====== Tervezési minták - gyakorló feladatai ====== ===== 1. feladat ===== Készítsen egy egyszerûsített szakértõ rendszert, amely a következõ formátumú nyelvet értelmezi IF kifejezés THEN utasitas ahol a kifejezés egy logikai kifejezés, ami tartalmazhat a) valós számok közötti +, -, *, / operátorokat b) valós számok közötti <, <=, ==, >, >=, != operátorokat, c) logikai kifejezések közötti AND, OR NOT operátorokat az utsítás egy CCommand osztályból származó objektum Felhasználandó minták: **interpreter, factory** ===== 2. feladat ===== Egészítse ki az elõadáson tárgyalt Command pattern példaprogramját, úgy, hogy az hozzáadás, törlés mellett módosítás, illetve még két, tetszõlegesen kiválasztott parancsot tartalmazzon Tegye lehetõvé makrók írását, ahol a makró elemi parancsokat illetve további makrókat tartalmazhaz. Felhasználandó minták: **command, composite ** ===== 3. feladat ===== Egészítse ki az elõadáson tárgyalt Iterátor pattern példaprogramját, úgy, hogy létrehoz négy külsõ iterátort, amelyek csupán az egyes emloyee peldányokon iterálnak végig. Felhasználandó minták: **iterator** ===== 4. feladat ===== Egészítse ki az elõadáson tárgyalt Command pattern példaprogramját, úgy, hogy az egyes mûveletek elõtt elmenti a relevásn objektumok státuszát, és lehetõvé teszi egy vagy több parancs visszavonását. Felhasználandó minták: **command, memento** ===== 5. feladat ===== Egészítse ki az elõadáson tárgyalt Command pattern példaprogramját, úgy, hogy az minden eseményt 'lustán' logol egy fájlba. A 'lusta' logolás egy bejegyzés listát tart kaban, amely n bejegyzés után vagy kilépéskor ír a fájlba. Felhasználandó minták: **command, observer, proxy** ===== 6. feladat ===== Implementáljon 4 kölönbözõ sorbarendezõ algoritmust egész számokból álló tömb sorbarendezésére. A tömb méretétõl függõen alkalmazzon más-más algoritmust. Felhasználandó minták: **strategy, factory** ===== 7. feladat ===== Imlementáljon genetikus algoritmust. Az alkalmazás működjön hatékonyan nagyszámú populáció esetén. (**flyweight**). A genetikus operátorok (**command**) mentsék el az objektumok státuszát, így legyen lehetőség a kezdeti populáció újra előhívására illetve az algoritmus 'ujrajátszására' (**memento**) Felhasználandó minták: **flyweight**, **command**, **memento** ===== 8. feladat ===== 1. Tekintse a következő tipikus domain nevet: ''alpha.ait.uni-miskolc.hu'' Ez különböző al-domainekből épül fel. Tegyük fel, hogy mindegyik al- domain az uni-miskolc.hu nevű gép fájlrendszerének egy könyvtárát jelöli. Bármely al-domain tartalmazhat al-domaineket, illetve HTML fájlokat, amiket URL segítségével érünk el. Építse fel az al-domain hierarchiát. A **composite** pattern segítségével mutassa meg a) a könyvtár tartalmát vagy b) a hivatkozott fájl tartalmát. Felhasználandó minták: **composite**