User Tools

Site Tools


nyariegyetem2016

This is an old revision of the document!


21. ELTE Kárpát-medencei Nyári Egyetem, Informatika szekció, txtUML tananyagok

2016. július 7.

A programsorozat weblapja itt elérhető.

Bevezető

Az UML modellezést hagyományosan szoftverrendszerek architektúrájának tervezésére szokták használni. Az UML eszköztára azonban ma már futtatható modellek létrehozását is lehetővé teszi, így nincs szükség a “tervezés” és a “kódolás” szétválasztására. Mivel a grafikus UML diagramok szerkesztése nehézkes, különösen a viselkedés részletes leírása esetén, ezért egy szöveges modellező nyelvet fogunk használni a feladatok megoldásához, a grafikus diagramokat pedig generálni fogjuk. Kipróbáljuk továbbá a modellek interaktív futtatását, és összekapcsolását Java-ban írt szoftverekkel.

Tervezett program, 2016. július 7.

  • 9:00-9:45 Bevezető, osztálymodellezés
  • 9:45-10:30 Osztálymodellezés a gyakorlatban
  • Szünet
  • 11:00-11:30 Állapotmodellezés
  • 11:30-12:15 Állapotmodellezés a gyakorlatban
  • Ebédszünet
  • 14:00-14:45 Végrehajtható modellezés
  • 14:45-15:30 Végrehajtható modellezés gyakorlat
  • Szünet
  • 16:00-17:15 Egy “életszerű” modellezési feladat

Letöltések

  • Az előadás diasora
  • A feladatok megoldásához szükséges szoftverkörnyezet
  • Mintamegoldások:
    • osztálymodellezés
    • állapotmodellezés
    • végrehajtható modellezés
    • “életszerű” modellezési feladatok

Feladatok

Előkészületek
  • Töltse le a szükséges szoftvert, csomagolja ki a zip fájlt!
  • Az eclipse-nyariiskola könyvtárban az eclipse futtatható állományt kell elindítani.
  • Az Eclipse rákérdez, hogy melyik workspace-t (munkaterületet) használja: ekkor a (szintén zip fájlból kicsomagolt) workspace-nyariiskola könyvtárt kell megadni (az elérési útvonalával együtt). Használja a fájlválasztó dialógusablakot a könyvtár kiválasztásához.
  • Az Eclipse elindulása után ellenőrizze, hogy megtalálható-e a menüsorban a txtUML menü, és a bal oldalon elhelyezkedő Project explorer területen láthatóak-e a következő Eclipse projektek:
    eloadas, _1_osztalymodellezes, _2_allapotmodellezes, _4_modellezes
Osztálymodellezés

A következő feladatokat az _1_osztalymodellezes projekt university.xtxtuml fájljában kell megoldani, a diagram definíció(ka)t pedig a UniversityDiagram.java fájlban kell elhelyezni.

  1. Készítsen egy egyetem (University) osztályt, amelynek adattagjai a neve és az alapítás éve, és rendelkezik egy művelettel a név megváltoztatásához! (A művelet törzse üresen hagyható.)
  2. Egészítse ki a diagramleírást az elkészült osztállyal, és generálja le az osztálydiagramot! Érdemes a dialógusablakban az állapotgépek generálására vonatkozó opciót kikapcsolni, hogy ne keletkezzenek felesleges, üres állapotdiagramok.
  3. Az egyetemnek vannak karjai (Faculty), azokon belül pedig tanszékei (Department). Ezek mindegyikének van neve. Modellezze ezt két új osztály és két kompozíció segítségével! Egészítse ki a diagramleírást és generálja újra az osztálydiagramot!
  4. Vegyen fel egy új osztályt személyek (Person) modellezéséhez. Minden személynek van neve és telefonszáma.
  5. Általánosítás segítségével modellezze, hogy a személyek lehetnek hallgatók vagy munkatársak, a munkatársak pedig oktatók vagy ügyintézők. A hallgatókról nyilvántartjuk a kreditjeik számát, a munkatársakról a fizetésüket, az oktatókról pedig, hogy rendelkeznek-e PhD fokozattal.
  6. Asszociációk segítségével modellezze a következőket: Minden hallgató az egyetem valamelyik karán tanul. Minden munkatárs valamelyik tanszék dolgozója. Minden tanszékeknek van egy vezetője, aki tanár. Senki sem vezethet egyszerre több tanszéket. Egészítse ki a diagramleírást és generálja újra az osztálydiagramot!
Állapotmodellezés

A következő feladatokat a _2_allapotmodellezes projekt AlarmDevice.xtxtuml fájljában kell megoldani.

  1. Az AlarmDevice osztály egy riasztóberendezést reprezentál, ami kezdetben kikapcsolt állapotban van. Vegyen fel egy kezdőállapotot és egy kezdő állapotátmenetet a kikapcsolt állapothoz!
  2. Generálja le az AlarmDeviceDiagram leírás segítségével az osztálydiagramot és a hozzá tartozó állapotdiagramot! Az állapotdiagram generálására vonatkozó opciót be kell kapcsolni a dialógusablakban!
  3. Egy szignál, egy állapot és egy állapotátment hozzáadásával modellezze a következőket: Ha a riasztót bekapcsoljuk, akkor élesített állapotba kerül. Generálja újra a diagramot!
  4. Ha a risztó élesített állapotban mozgást érzékel, riasztás állapotba kerül.
  5. Vegyen fel egy szignált a riasztó kikapcsolásához is. Ennek legyen egy adattagja, ami a kikapcsoláskor megadott jelszót reprezentálja!
  6. Egy elágazás-állapot segítségével modellezze a következőt: Ha a riasztó élesítve van, és a kikapcsoláskor helyes jelszót adunk meg, akkor a riasztó kikapcsol. Helytelen jelszó esetén riaszt. Generálja újra diagramot! (Az átmenetek őrfeltételei nem fognak látszani a generált diagramon, ez a generálás hiányossága.)
  7. Egyetlen új állapotátmenet segítségével modellezze a következőt: Riasztás állapotból helyes jelszó megadásával kikapcsolható a riasztó, helytelen jelszó esetén továbbra is riaszt. Generálja újra a diagramot!
Végrehajtható modellezés

A következő feladatokat a _2_allapotmodellezes projekt (vagy a hozzá tartozó mintamegoldás) továbbfejlesztésével kell megoldani.

  1. Írjon konstruktort az AlarmDevice osztályhoz, amely paraméterként megkapja a riasztó jelszavát. A konstruktor olyan művelet, amelynek neve azonos az osztály nevével és nincs visszatérési típusa (még void sem).
  2. A Package Explorer-ben kattintson jobb egérgombbal az alarm csomagra, és válassza a NewClass menüpontot! A dialógusablakban töltse ki az új Java osztály nevét (pl. Test) és kapcsolja be a main metódus generálására vonatkozó opciót! A Finish gomb segítségével hozza létre a Java osztályt!
  3. A létrehozott Java fájlba másolja be a következő importokat:
    import alarm.model.AlarmDevice;
    import hu.elte.txtuml.api.model.Action;
    import hu.elte.txtuml.api.model.ModelExecutor;
  4. A main metódusba másolja be a következő utasításokat:
    ModelExecutor.Settings.setExecutorLog(true);
    AlarmDevice device = Action.create(AlarmDevice.class, "titok");
    Action.start(device);
    ModelExecutor.shutdown();
  5. Szükség esetén generálja le, és nyissa meg az AlarmDevice állapotgépét, hogy az látható legyen!
  6. Válassza a RunRun configurations menüpontot! A dialógusablak bal oldalán lévő listában válassza a txtUML Application-t, majd a lista fölött kattintson a New launch configuration ikonra (fehér lap plusz jellel)! A Project és a Main class mezőkben az aktuális projektnek és a main függvényt tartalmazó Java osztálynak kell lennie. Kattintson a Run gombra! Ha minden helyesen van beállítva, akkor az állapotdiagramon animációval mutatja, ahogyan a kezdő állapotátmenet végrehajtásra kerül.
  7. A main metódusban az Action.start hívás után küldjön szignálokat a device-nak az Action.start metódus segítségével! Futtassa újra a korábban beállított indítókonfigurációt és ellenőrizze, az állapotgép viselkedését az animáció alapján! Kísérletezzen a következő esetekkel:
    1. Helyes jelszó küldése.
    2. Helytelen jelszó küldése.
    3. Mozgás hatására bekövetkező riasztás.
    4. Olyan szignál küldése, amire az adott állapotban nem reagál az állapotgép (pl. két élesítés egymás után).
  8. Ha marad idő, egészítse ki a modellt egy Timeout szignállal, és módosítsa a riasztó viselkedését úgy, hogy mozgás érzéselése esetén egy várakozó állapotba kerüljön. Ha a várakozó állapotban helyes jelszó érkezik, akkor a riasztó kikapcsol, hibás jelszó vagy Timeout hatására viszont riaszt. Ellenőrizze a megoldás helyességét a main függvény módosításával a diagram animáció követésével!
Életszerű modellezési feladatok
nyariegyetem2016.1467807841.txt.gz · Last modified: 2016/07/06 14:24 by deva