Objektumvezérelt rendszerek tervezése 4.óra – Composite, Decorator © Fülöp Lajos
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék OMT notations © Nagy Csaba OMT (Object Modeling Technique) Nem UML! (de azért nagyon hasonló) Gamma et al. használják minták megadásához Osztály, Object, Interaction diagramok-at ír le
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék OMT notations © Nagy Csaba A kliensnek tényleges szerepe van a mintában. A kliensnek szerepe nincsen meghatározva a mintában, de a megértésben segíthet melyik osztályokkal állhat kapcsolatban.
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék OMT notations © Nagy Csaba Öröklődés Tartalmazás 1..* Asszociáció példányosítás Attribútum neve
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék OMT notations © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Composite Cél: rész-egész szerkezetek leképezése objektum- hierarchiára (fa-szerkezetre), miközben a kliens a rész és egész egységeket azonosan kezeli Alkalmazhatóság: rész-egész szerkezetek hierarchiáját kell leírni a kliensnek nem kell hogy észrevegye a különbségeket a kompozíciók és primitívek között © Fülöp Lajos
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Példa Számítógép alkatrészekből/egységekből épül fel Reprezentáljuk composite mintával? Adott számítógép árát az alkatrészek árai határozzák meg Számoljuk ki, de hogyan? © Fülöp Lajos
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Composite példa – Composite.cpp Component – Egység Composite – Összetettegység Specializáljuk a Composite-ot: Szgep, Lap, Kartya Leaf FloppyDisk, Videokartya, Hangkartya, Alaplap Operation – Ar() : visszaadja az adott egység árát Jeloljuk a mintaresztvevoket sztereotipusokkal Minta neve::minta résztvevő neve © Fülöp Lajos
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Composite példa © Fülöp Lajos, Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Decorator Cél: további felelősségek/tulajdonságok dinamikus csatolása az objektumhoz. Flexibilis alternatíva a funkcionalitás öröklődéses bővítése mellett Alkalmazhatóság: új felelősségeket kell hozzáadni egyes objektumokhoz dinamikusan, miközben a kliens objektumok ezt transzparensen érzékelik © Fülöp Lajos, Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Decorator © Nagy Csaba
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Decorator példa Szövegmegjelenítő program Tetszőleges szöveget akarunk módosítani A módosításnak flexibilisnek kell lennie A felhasználó futási időben (dinamikusan) közli a rendszerrel, hogy nagybetűsíteni szeretné a szöveget (megnyom egy gombot a user interfacen, amit a kiválasztott szövegre érvényesíteni kell) © Fülöp Lajos
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Decorator példa Component – Text ConcreteComponent – Literal Decorator – TextDecorator ConcreteDecorator – ToUpperDecorator Operation – get() Decorator.cpp © Fülöp Lajos
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Decorator példa © Fülöp Lajos
Szegedi Tudományegyetem – Szoftverfejlesztés Tanszék Feladat Minden hallgató mondjon a teremben egy további lehetséges konkrét dekorátort az előző példához! Minden csapat mondjon a teremben saját ötleten alapuló Composite vagy Decorator példát! (nem hangzott el órán és nem volt választható projekttéma) © Fülöp Lajos, Nagy Csaba