Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
OBJEKTUM VEZÉRTELT
RENDSZEREK TERVEZÉSE
5. óra
ovrt kancsuki.sed.hu Szőke Gábor - 2016
COMPOSITE Összetétel
ovrt kancsuki.sed.hu Szőke Gábor - 2016
COMPOSITE PÉLDA
• Számítógép alkatrészekből/egységekből épül fel
• Adott számítógép árát az alkatrészek árai határozzák meg – Számoljuk ki, de hogyan?
• Próbáljuk megoldani!
© Fülöp Lajos
ovrt kancsuki.sed.hu Szőke Gábor - 2016
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
ovrt kancsuki.sed.hu Szőke Gábor - 2016
COMPOSITE PÉLDA
ovrt kancsuki.sed.hu Szőke Gábor - 2016
COMPOSITE
• Hol használható?
– Fa-struktúra reprezentálására
• Csoportba foglalás
• Hierarchiák
• Fájlrendszer
– Ha nem akarunk különbséget tenni összetett és egyedi objektumok között - uniformitás
ovrt kancsuki.sed.hu Szőke Gábor - 2016
PÉLDA: FÁJLSZERKEZET (JAVABAN)
• Client: Commander
• Component: Resource
– Operation: getSize()
• Leaf: File
• Composite: Folder
ovrt kancsuki.sed.hu Szőke Gábor - 2016
Resource.java
File.java Folder.java
Commander.java
ovrt kancsuki.sed.hu Szőke Gábor - 2016
DECORATOR Díszítő
ovrt kancsuki.sed.hu Szőke Gábor - 2016
DECORATOR PÉLDA
• Ablakkezelő rendszer
– A megrendelő szeretne
• Sima ablakot
• Csúszkás ablakot
• Ikonos ablakot
• Csúszkás és ikonos ablakot
– Majd később bejelenti, hogy szeretne keretes ablakot is…
ovrt kancsuki.sed.hu Szőke Gábor - 2016
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
ovrt kancsuki.sed.hu Szőke Gábor - 2016
DECORATOR
© Nagy Csaba
ovrt kancsuki.sed.hu Szőke Gábor - 2016
DECORATOR
• Hol használható?
– Felhasználói felületi elemeknél
• Ablakok
• Képek, ikonok dinamikus összeállításánál – Pl.: Eclipse projektkeresőben fájlok ikonjai
– Bárhol ahol futás közbeni dinamikus objektum-típusok kellenek.
• Pl.: ilyenek a Java-s fájlkezelő streamek is
ovrt kancsuki.sed.hu Szőke Gábor - 2016
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
ovrt kancsuki.sed.hu Szőke Gábor - 2016
DECORATOR PÉLDA
• Component – Text
• ConcreteComponent – Literal
• Decorator – TextDecorator
• ConcreteDecorator – ToUpperDecorator
• Operation – get()
• Decorator.cpp
© Fülöp Lajos
ovrt kancsuki.sed.hu Szőke Gábor - 2016
DECORATOR PÉLDA
© Fülöp Lajos
ovrt kancsuki.sed.hu Szőke Gábor - 2016
Text.java
Literal.java TextDecorator.java
ovrt kancsuki.sed.hu Szőke Gábor - 2016
ReverseDecorator.java
ToUpperDecorator.java
ovrt kancsuki.sed.hu Szőke Gábor - 2016
Client.java
ovrt kancsuki.sed.hu Szőke Gábor - 2016
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
O R V T