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 14:35]
deva
nyariegyetem2016 [2016/07/07 17:10] (current)
deva
Line 23: Line 23:
 === Letöltések === === Letöltések ===
  
-  * Az előadás diasora +  * Az előadás ​[[http://​txtuml.inf.elte.hu/​nyariegyetem/​txtuml.pdf|diasora]] 
-  * feladatok ​megoldásához szükséges szoftverkörnyezet +  * [[http://​txtuml.inf.elte.hu/​nyariegyetem/​eclipse-nyariegyetem.zip|Eclipse 4.5.2 + txtUML 0.4.1 verzió]] 
-  * Mintamegoldások:​ +  * [[http://​txtuml.inf.elte.hu/​nyariegyetem/​projects.zip|Példák és feladatok]] 
-    * osztálymodellezés +  * 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. 
-    * állapotmodellezés +    * osztálymodellezés: [[http://​txtuml.inf.elte.hu/​nyariegyetem/​megoldasok/​university.zip|megoldás]] 
-    * végrehajtható modellezés +    * állapotmodellezés: [[http://​txtuml.inf.elte.hu/​nyariegyetem/​megoldasok/​alarm.zip|megoldás]] 
-    * "​életszerű"​ modellezési ​feladatok+    * végrehajtható modellezés: [[http://​txtuml.inf.elte.hu/​nyariegyetem/​megoldasok/​alarm_main.zip|megoldás]] 
 +    * "​életszerű"​ modellezési ​feladat: [[http://​txtuml.inf.elte.hu/​nyariegyetem/​megoldasok/​vendingmachine.zip|megoldás]]
  
 === Feladatok === === Feladatok ===
Line 35: Line 36:
 == Előkészületek == == Előkészületek ==
  
-  * Töltse le a szükséges szoftvert, csomagolja ki a zip fájlt! +  * Töltse le a [[http://​txtuml.inf.elte.hu/​nyariegyetem/​eclipse-nyariegyetem.zip|szükséges szoftvert]] és a  [[http://​txtuml.inf.elte.hu/​nyariegyetem/​projects.zip|feladatokat]]majd csomagolja ki a két zip fájlt ​(például az asztalra)
-  * Az ''​eclipse-nyariiskola''​ könyvtárban az ''​eclipse''​ futtatható állományt kell elindítani. +  * Az ''​eclipse-nyariegyetem''​ 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 rákérdez, hogy melyik //​workspace//​-t (munkaterületet) használja: az alapbeállítás megfelel, de másik (üres, erre célra létrehozott) ​könyvtár ​is választható
-  * 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//​+  * Az Eclipse elindulása után: //​File// ​-> //​Import...//​ -> //General// -> //Existing Projects into Workspace//​. A dialógusablakban ​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ő projektekamelyek ​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 57: 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 89: 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.1467808520.txt.gz · Last modified: 2016/07/06 14:35 by deva