23
OBJEKTUM VEZÉRTELT RENDSZEREK TERVEZÉSE 5. óra

OBJEKTUM VEZÉRTELT RENDSZEREK TERVEZÉSEkancsuki.sed.hu/sites/kancsuki.sed.hu/files/... · ovrt Szőke Gábor - 2016 kancsuki.sed.hu COMPOSITE • Cél: rész-egész szerkezetek

  • 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