Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaJudit Papné Megváltozta több, mint 10 éve
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.