This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
nyariegyetem2016 [2016/07/06 21:40] deva |
nyariegyetem2016 [2016/07/07 17:10] (current) deva |
||
---|---|---|---|
Line 27: | Line 27: | ||
* [[http://txtuml.inf.elte.hu/nyariegyetem/projects.zip|Példák és feladatok]] | * [[http://txtuml.inf.elte.hu/nyariegyetem/projects.zip|Példák és feladatok]] | ||
* Mintamegoldások: A nap folyamán folyamatosan tesszük elérhetővé az egyes gyakorlati feladatok mintamegoldásait. A letöltött mintamegoldásokat ki kell csomagolni, majd az Eclipse-ben a //File// -> //Import...// -> //General// -> //Existing Projects into Workspace// választás után a dialógusablakban a kicsomagolt könyvtárt kell megadni, és a //Finish// gombra kattintva a projekt megjelenik a munkaterületen. | * Mintamegoldások: A nap folyamán folyamatosan tesszük elérhetővé az egyes gyakorlati feladatok mintamegoldásait. A letöltött mintamegoldásokat ki kell csomagolni, majd az Eclipse-ben a //File// -> //Import...// -> //General// -> //Existing Projects into Workspace// választás után a dialógusablakban a kicsomagolt könyvtárt kell megadni, és a //Finish// gombra kattintva a projekt megjelenik a munkaterületen. | ||
- | * osztálymodellezés: még nem elérhető | + | * osztálymodellezés: [[http://txtuml.inf.elte.hu/nyariegyetem/megoldasok/university.zip|megoldás]] |
- | * állapotmodellezés: még nem elérhető | + | * állapotmodellezés: [[http://txtuml.inf.elte.hu/nyariegyetem/megoldasok/alarm.zip|megoldás]] |
- | * végrehajtható modellezés: még nem elérhető | + | * végrehajtható modellezés: [[http://txtuml.inf.elte.hu/nyariegyetem/megoldasok/alarm_main.zip|megoldás]] |
- | * "életszerű" modellezési feladatok: még nem elérhető | + | * "életszerű" modellezési feladat: [[http://txtuml.inf.elte.hu/nyariegyetem/megoldasok/vendingmachine.zip|megoldás]] |
=== Feladatok === | === Feladatok === | ||
Line 40: | Line 40: | ||
* Az Eclipse rákérdez, hogy melyik //workspace//-t (munkaterületet) használja: az alapbeállítás megfelel, de másik (üres, erre a célra létrehozott) könyvtár is választható. | * Az Eclipse rákérdez, hogy melyik //workspace//-t (munkaterületet) használja: az alapbeállítás megfelel, de másik (üres, erre a célra létrehozott) könyvtár is választható. | ||
* Az Eclipse elindulása után: //File// -> //Import...// -> //General// -> //Existing Projects into Workspace//. A dialógusablakban a második zip fájlból kicsomagolt //projects// könyvtárt kell megadni. A //Finish// gombra kattintva bekerülnek a munkaterületre a következő projektek, amelyek a bal oldalon elhelyezkedő //Project explorer// területen láthatóak:\\ //eloadas//, //_1_osztalymodellezes//, //_2_allapotmodellezes//, //_4_modellezes// | * Az Eclipse elindulása után: //File// -> //Import...// -> //General// -> //Existing Projects into Workspace//. A dialógusablakban a második zip fájlból kicsomagolt //projects// könyvtárt kell megadni. A //Finish// gombra kattintva bekerülnek a munkaterületre a következő projektek, amelyek a bal oldalon elhelyezkedő //Project explorer// területen láthatóak:\\ //eloadas//, //_1_osztalymodellezes//, //_2_allapotmodellezes//, //_4_modellezes// | ||
+ | * Ha a projekteken hibát jelez az Eclipse, akkor a //Project// -> //Clean// menüpont segítségével fordítsa újra őket! | ||
+ | * Ellenőrizze, hogy a //Project// -> //Build Automatically// opció be van-e kapcsolva! | ||
== Osztálymodellezés == | == Osztálymodellezés == | ||
Line 58: | Line 60: | ||
- 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! | - 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! | ||
- 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! | - 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! | ||
- | - 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! | + | - Egy szignál, egy állapot és egy állapotátmenet 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! |
- | - Ha a risztó //élesített// állapotban mozgást érzékel, //riasztás// állapotba kerül. | + | - Ha a riasztó //élesített// állapotban mozgást érzékel, //riasztás// állapotba kerül. |
- Vegyen fel egy szignált a riasztó kikapcsolásához is. Ennek legyen egy adattagja, ami a kikapcsoláskor megadott jelszót reprezentálja! | - Vegyen fel egy szignált a riasztó kikapcsolásához is. Ennek legyen egy adattagja, ami a kikapcsoláskor megadott jelszót reprezentálja! | ||
- 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.) | - 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.) | ||
Line 90: | Line 92: | ||
- 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 //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! | - 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 //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 == | + | == Egy komplex modellezési feladat == |
+ | |||
+ | Ezeket a feladatokat a //_4_modellezes// projektben kell megoldani. | ||
+ | |||
+ | - A //Run// -> //Run configurations...// menü segítségével hozzon létre egy új //Java Application// típusú futtatási konfigurációt, ahol a //Project//: //_4_modellezes//, a //Main class//: //tester.Tester//. A konfiguráció futtatása grafikusan megjelenít egy italautomatát, de a gombok nem működnek rajta. A feladat az, hogy a //VendingMachine.xtxtuml// fájlban létre kell hozni az automata működését leíró modellt, a //Glue.java// fájlban pedig össze kell kötni azt a grafikus felhasználói felülettel. | ||
+ | - Az elvárt működés: | ||
+ | - A fenti sárga gombokkal pénzt lehet bedobni az automatába, az válaszként az eddig összesen bedobott összeget írja ki. | ||
+ | - Az italok nevére kattintva vásárlást lehet indítani. | ||
+ | - Ha nem elég a pénz, akkor ezt üzenet jelzi. | ||
+ | - Ha a kért ital kifogyott, ezt is üzenet jelzi. | ||
+ | - Egyébként az üzenet tájékoztat a vásárlás sikerességéről, és a visszaadott pénz mennyiségéről. | ||
+ | - Ha nincs bedobva pénz, akkor az italok nevére kattintva az üzenetben az adott ital ára jelenik meg. | ||
+ | - A return gomb segítségével a bedobott pénz visszakérhető vásárlás nélkül. | ||
+ | - A fenti fehér mezőbe egy számot írva és valamelyik ital nevére kattintva a "karbantartó" az adott italból a megadott darabszámot teszi be az automatába, így növeli a készletet. | ||
+ | - Vizsgálja meg a //Glue.java// fájlt, derítse fel, hogy milyen szignálok fognak jönni a grafikus felület irányából a modellbe, és tervezze meg, hogy a grafikus felületen megjelenítendő üzenetet lekérdező metódus hogyan fogja az üzenetet lekérni a modellből! | ||
+ | - Tervezze meg és implementálja az alkalmazás osztálymodelljét, generáljon osztálydiagramot! | ||
+ | - Készítse el az egyes osztály(ok) állapotmodelljét és generáljon állapotdiagramokat! | ||
+ | - A //Glue.java// fájlban a jelölt helyeken hozzon létre objektumokat a modell osztályaiból és kapcsolja őket össze szükség szerint! A fájl egyes függvényeiből küldjön szignálokat az objektumoknak. | ||
+ | - Egészítse ki a modellt utasításokkal (entry, exit, effect, műveletek)! |