User Tools

Site Tools


nyariegyetem2016

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 ​feladatokmé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)! 
nyariegyetem2016.1467834041.txt.gz · Last modified: 2016/07/06 21:40 by deva