05. Szkeleton tervezése - AdjustmentBeaver/szoftlab GitHub Wiki
Szkeleton tervezése
A szkeleton modell valóságos use-case-ei
Use-case diagram

Szkeleton use-case diagram
Use-case leírások
| Use-case neve | start |
|---|---|
| Rövid leírás | Elindítja/folytatja a játékot. |
| Aktorok | user, game |
| Forgatókönyv | Ha a felhasználó szüneteltette a játékot, ezzel tudja folytatni a szimulációt. Ha új játékot indít, vagy betölt egy mentést, akkor a játék indítja el/folytatja a szimulációt betöltés után. |
| Use-case neve | stop |
|---|---|
| Rövid leírás | Megállítja a játékot. |
| Aktorok | user, game |
| Forgatókönyv | A felhasználó szüneteltetheti a játékot. Ha mentés történik, a játék szünetelteti a játékot. |
| Use-case neve | new |
|---|---|
| Rövid leírás | Betöltődik egy új játék. |
| Aktorok | user, game |
| Forgatókönyv | A felhasználó elindít egy új játékot. A pálya és a kezdőállapot betöltődik. (Opcionális: a játékos választhat szintet is.) Ha a játékos megnyer egy pályát, a játék betölti a következő szintet. Ha elveszíti, akkor a játék betölti ugyanazt a szintet. |
| Use-case neve | load |
|---|---|
| Rövid leírás | A játékos betölt egy tetszőleges mentést. |
| Aktorok | user |
| Forgatókönyv | A felhasználó kiválaszt egy mentést, és az alapján töltődik be egy adott pálya és játékállapot. |
| Use-case neve | save |
|---|---|
| Rövid leírás | A játékos elmenti a játék állását. |
| Aktorok | user |
| Forgatókönyv | A játékos elmenthet egy adott játékállapotot. Ekkor a játék a mentés idejére megáll, és elmentődik az aktuális állás. |
| Use-case neve | exit |
|---|---|
| Rövid leírás | A játékos kilép a programból. |
| Aktorok | user |
| Forgatókönyv | A játékos kilép a játékból. A program befejezi a szimulációt, és megfelelő módon leáll. |
| Use-case neve | resume |
|---|---|
| Rövid leírás | Játék folytatása. |
| Aktorok | game |
| Forgatókönyv | Mentést követően a játék automatikusan folytatja a szimulációt, ha a mentés előtti pillanatban a játék futott. |
| Use-case neve | simulate |
|---|---|
| Rövid leírás | Pályaelemek viselkedésének szimulálása |
| Aktorok | game |
| Forgatókönyv | A következő időpillanatra lépteti a játék állását. Az aktuális vonatok elindulnak, a pályán lévők mozognak és az ütközésdetektálás is lezajlik. |
| Use-case neve | init |
|---|---|
| Rövid leírás | A programot inicializálja. |
| Aktorok | game |
| Forgatókönyv | Inicializálja a programot elindításkor. Létrehozza a játékhoz szükséges szimulációs időzítőt, illetve a pályakezelő objektumot. |
| Use-case neve | subscribe |
|---|---|
| Rövid leírás | A megfelelő objektumokat feliratkoztatjuk a szimulációra. |
| Aktorok | - |
| Forgatókönyv | Egy játék kezdésekor a játék feliratkoztatja a szimulációban részt vevő objektumokat (vonatok, vonat-ütemező) a szimulációl időzítőre. |
| Use-case neve | activate |
|---|---|
| Rövid leírás | Speciális Node-okat vezérel felhasználói bemenet alapján. |
| Aktorok | user, node |
| Forgatókönyv | A felhasználói bemenet alapján lehet állítani bizonyos Node-ok tulajdonságait. |
| Use-case neve | activate switch |
|---|---|
| Rövid leírás | Felhasználói bemenetre állítja át egy váltó irányát, ha lehetséges. |
| Aktorok | user, node |
| Forgatókönyv | A felhasználói bemenet alapján az adott váltó irányát állítja. Két állás közül tud választani. Ilyenkor a váltó irányából csak a beállított Node felé tud menni egy vonat. A másik két irányból ettől függetlenül egy irányba lehet továbbhaladni. Csak akkor engedélyezett a váltás, ha a váltón nem tartózkodik vonat. |
| Use-case neve | activate tunnel |
|---|---|
| Rövid leírás | Felépít/lebont egy alagútszájat, ha lehetséges. |
| Aktorok | user, node |
| Forgatókönyv | A felhasználói bemenet alapján lehetőséget nyújt alagútszájak építésére. Maximum két alagútszáj lehet felépítve egy időben, harmadikat már nem tud építeni a felhasználó. Ha volt már egy alagútszáj a pályán, akkor megépül köztük egy alagút, amelyen vonat haladhat át. Egy alagútszájat lebonthat a játékos, ha nincs másik a pályán, vagy nem halad vonat a felépített alagútban. Ellenkező esetben nem tudja lebontani. |
| Use-case neve | collision check |
|---|---|
| Rövid leírás | Megvizsgálja, hogy történt-e a kocsik közt ütközés. |
| Aktorok | - |
| Forgatókönyv | A vonat végigvizsgálja, hogy valamelyik (saját) vonatrésze ütközött-e más vonat részeivel. Ha ütközés történt, felrobbantja magát. |
| Use-case neve | move |
|---|---|
| Rövid leírás | Mozgatja a vonatokat. |
| Aktorok | train |
| Forgatókönyv | A vonat végigmegy az őt alkotó részein, és egyenként megváltoztatja a pozíciójukat a sebesség és a Node-ok által meghatározott irány alapján. |
| Use-case neve | visit node |
|---|---|
| Rövid leírás | A Node megadja a kocsik új irányát. |
| Aktorok | train, node |
| Forgatókönyv | Amikor a vonat egy kocsija csomóponthoz ér, akkor az megadja a kocsi új irányát az alapján, hogy honnan jött és mi a következő szomszédos csomópont. Ha nincs következő ilyen Node (“vakvágány”), a vonatot felrobbantja. |
| Use-case neve | visit station |
|---|---|
| Rövid leírás | A vonat áthalad egy állomáson, az állomás leszállíttatja a megfelelő utasokat, ha lehetséges. |
| Aktorok | train, node |
| Forgatókönyv | Megvalósítja a visit Node feladatait, valamint ha a vonat megfelelő kocsija beérkezik, akkor leszállíttatja annak a kocsinak az utasait - ha ennek feltételei teljesülnek. Akkor szállíthatja le az utasokat, ha a vonat legelső nem üres kocsija az állomással azonos színű. |
| Use-case neve | visit switch |
|---|---|
| Rövid leírás | A vonat áthalad egy váltón, a váltó a megfelelő irányba küldi a vonatot. |
| Aktorok | train, node |
| Forgatókönyv | Megvalósítja a visit Node feladatait, továbbá a váltó beállításaitól függően határozza meg, hogy a váltó melyik irányába haladjon tovább a vonat. |
| Use-case neve | visit tunnel |
|---|---|
| Rövid leírás | A vonat elér egy SpecialPlace Node-ot. Ha van felépítve alagút, átengedi, egyéb esetben felrobbantja a Node a vonatot. |
| Aktorok | train, node |
| Forgatókönyv | Megvalósítja a visit Node feladatait. Ha nincs a pályán két felépített alagútszáj a SpecialPlace-ek helyén, akkor “vakvágányként” viselkedik, a vonat felrobban. Ha van, akkor köztük egy alagút áll fent, amelyen keresztül a vonat szokás szerint közlekedik. Az alagút eltakarja a vonat benne haladó részét. |
| Use-case neve | explode |
|---|---|
| Rövid leírás | Felrobbantja a vonatot. |
| Aktorok | - |
| Forgatókönyv | Ha a feltételek megkövetelik, a vonat felrobbantja magát. A játék véget ér, majd automatikusan újrakezdődik az aktuális pályával. |
A szkeleton kezelői felületének terve, dialógusok
A felhasználó által futtatható szekvenciák a következőek:
-
Start
- sd_startGame
-
Stop
- sd_stopGame
-
New -> Subscribe
- sd_newGame, sd_mapBuilding, sd_subsciption
-
Load -> Subscribe
- sd_loadGame, sd_subScription
-
Save -> Resume
- sd_saveGame, sd_resumeGame
-
Exit
-
Simulate -> Move, Collision Check, Explode, Visit Node
- sd_notifying, sd_trainMoving, sd_collisionChecking, sd_trainExplode, sd_unloading
-
Move/Visit node
- sd_trainMoving, sd_unloading, sd_trainExplode
-
Collision Check
- sd_collisionChecking, sd_trainExplode
-
Explode
- sd_trainExplode
-
Activate
- sd_activate
A számok bevitelével választhatja ki a felhasználó melyik részt szeretné
futtatni.
Egy rész lefutása után a bevitelre újra lehetőség van.
A felhasználónak az egyes műveletek alkalmával lehetősége lesz a szekvencia
zajlásának a befolyásolására.
A következő szekvenciák érintettek:
-
Collision Checking: Megadható történt-e ütközés
-
Train Movinging: Megadható, hogy a vonat milyen típusú csomóponthoz érkezett, majd ezeknek a specializált változatai (pl.: fel van-e építve az alagút)
-
Unloading: Az utasok leszállásának feltételének teljesülése adható meg.
-
Activate: Megadható a csomópont típusa és a művelet (váltás, építés) teljesülésének feltétele.
-
Resume Game: A játék futott-e előző állapotában.
-
Notifying: Van-e elindítandó vonat.
A szekvenciák ellenőrizhetősége érdekében az egyes metódusok kiírják az osztályukat és a nevüket:
TrainPart.setNextNode
A döntési helyzetekben a következő felhasználói reakciók érkezhetnek:
-
Eldöntendő kérdés esetén: Yes, No
-
Csomópont típusára vonatkozó kérdés esetén: Station, Switch, Tunnel
A döntéseket a parancsok első néhány betűjének bevitelével lehet végrehajtani, ekkor a szekvencia annak megfelelően fut le.
Game.resumeGame
[?] Futott a játék a mentés előtt?
[>] **Y**
SimulationTimer.start
Szekvencia diagramok a belső működésre















Kommunikációs diagramok















Napló
| Kezdet | Időtartam | Résztvevők | Leírás |
|---|---|---|---|
| március 7. 16:30 | 2 óra | Dobai, Dömötör, Földvári, Kövér, Telek | Megbeszélés: use casek, cli formátum |
| március 7. 17:00 | 1 óra | Dobai | Use-case diagram |
| március 8. 14:00 | 2 óra | Dobai, Dömötör, Földvári, Kövér, Telek | Megbeszélés: hibajavítások, cli formátum |
| március 8. 18:00 | 2 óra | Dobai | Use-case leírások |
| március 8. 23:00 | 1 óra | Dömötör | init, newGame, subscription szekvencia és kommunikációs diagramok |
| március 9. 15:30 | 1 óra | Kövér, Telek | Kommunikációs diagramok |
| március 9. 20:00 | 2 óra | Dömötör | collision, load, start, exlplode, notifying, mapBuilding szekvencia, kommunikációs diagramok |
| március 12. 15:00 | 1,5 óra | Földvári | A szkeleton kezelői felületének terve, dialógusok, szerkesztés |
| március 12. 16:00 | 1 óra | Telek | Kommunikációs és use-case diagram formázás |
| március 12. 19:00 | 1 óra | Dobai, Földvári, Telek | Megbeszélés |
| március 12. 19:00 | 0,5 óra | Földvári | Bugfix |
| március 12. 19:00 | 0,5 óra | Telek | Use-case és kommunikációs diagram javítás |
| március 12. 20:00 | 0,5 óra | Telek | Dokumentum összeszerkesztése |