Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor.

Hasonló előadás


Az előadások a következő témára: "Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor."— Előadás másolata:

1 Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor

2 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Iterator Cél: tároló-objektum elemeinek sorozatos elérése a reprezentációtól függetlenül Alkalmazhatóság:  egy tároló objektum tartalmát el akarjuk érni függetlenül a belső reprezentációtól  egyidejűleg többszörös bejárásra is szükség van  egységes interfészre van szükség különböző tároló szerkezetekhez © Fülöp Lajos

3 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Iterator © Fülöp Lajos

4 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Iterator példa - leírás Van két típusú listánk  Feladatok listája (TodoList) ArrayListben tárol  Feladatok gyűjteményének listája (ToDoListCollection) HashMapben tárol A két listát egységesen akarjuk bejárni Az egységes bejárással kiíratjuk a feladatokat (ListPrinter) © Fülöp Lajos

5 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Iterator példa - résztvevők Aggregate – Iterating Client – ListPrinter ConcreteAggregate  ToDoListCollectionImpl  ToDoListImpl Iterator, ConcreteIterator  Beepitett java iteratorokat használunk © Fülöp Lajos

6 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Iterator példa - diagram © Fülöp Lajos

7 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Iterator - megjegyzés Kötelező programban előfordulhat  Saját iterátort kell írni (ne a beépített nyelvit h.)  Composite-ot kellene iterálni Ez nem egyszerű feladat, ezért végső esetben kiváltható Visitor minta, vagy az alapértelmezett Composite bejárással Composite::Component ~ Iterator::ConcreteAggregate Ha több Composite reprezentációnk van akkor lesz több ConcreteAggregate (ez nem kötelező)  Tipp Iterator::Iterator plusz infot kell hogy tároljon arról, hogy hol jár a Composite fában (pl. egy verem referenciákkal az éppen bejárt elemekre) Component getChild(int) metódusát használni kell © Fülöp Lajos

8 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Iterator – megjegyzés példa © Fülöp Lajos

9 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék State Cél: objektum viselkedésének megváltoztatása belső állapotváltozás hatására (kívülről úgy tűnik, mintha az osztályát változtatná meg) Alkalmazhatóság:  objektum viselkedése állapotának függvénye, és az futás közben változhat  operációkban nagy elágazások vannak, többen ugyanazon szerkezettel, pl. valami konstanstól függővé téve

10 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék State

11 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék State példa Egy RPG kalandjátékban a karakterünk attól függően, hogy milyen műveletet végzünk vele több állapotban is lehet. Az egyes műveletek végrehajtásának az eredménye függ az adott állapottól is.

12 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék State példa Context – Context AbstractState – IState ConcreteState  MovingState  PanickingState  RestingState  AttackingState

13 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék State példa

14 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Interpreter Cél: egy nyelv nyelvtanának reprezentálása a hozzá tartozó interpreterrel (szintaxis fa épül, majd a nyelv szavai ezen lesznek elemezve) Alkalmazhatóság:  nyelv megadható, melynek szintaxisfáján történhet az elemzés  nagyobb feladatokhoz jobbak az elemző- generátorok (osztályhierarchia nagy lehet) © Fülöp Lajos

15 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Interpreter © Fülöp Lajos

16 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Interpreter példa - leírás Van egy személyek elérhetőségét (Contact) tároló kollekciónk (ContactList). Interpreter segítségével definiálunk egy kifejezést, amit arra használhatunk, hogy a kollekcióban az adott kritériumoknak megfelelő Contact-okra keresve visszakapjuk a megfelelő Contact-ok egy halmazát © Fülöp Lajos

17 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Interpreter példa - résztvevők AbstractExpression – Expression NonTerminalExpression  ContainsExpression  EqualsExpression  AndExpression TerminalExpression  VariableExpression  ConstantExpression © Fülöp Lajos

18 Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Interpreter példa - diagram © Fülöp Lajos


Letölteni ppt "Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor."

Hasonló előadás


Google Hirdetések