Strukturális tervezési minták

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

ADATBÁZISOK.
Adatbázis gyakorlat 1. Szerző: Varga Zsuzsanna ELTE-IK (2004) Budapest
A normalizálás az adatbázis-tervezés egyik módszere
A digitális jövő kutatási előrejelzések tükrében
C++ programozási nyelv Gyakorlat hét
Hálózati architektúrák
EE/R adatmodell (Extended E/R) 1 Az objektum orientált szemlélet elterjedésével egyre nőtt az igény az olyan SDM (Semantic Data Model) modellek iránt,
Programozás III KOLLEKCIÓK 2..
RENDSZERINTEGRÁLÁS B_IN012_1
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
OBJEKTUMORIENTÁLT PROGRAM
Vizuális modellezés Uml és osztálydiagram UML eszközök
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 5. rész – Osztályok III.
Osztott alkalmazások kezelése. VIR elosztott architektúra indítékai: - meglévő komponensek integrációja - WEB / Internet elterjedése (nemzetköziség) -
Porkoláb Zoltán, Kozsik Tamás, Zsók Viktória,
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Összekapcsolható funkciók Címek Időpontok Projektek Számlák Dokumentumok Cikkek Értékesítési lehetőségek Feladatok Telefonhívások.
Szoftvertechnológia Rendszertervezés.
WEB MES (webes gyártásirányító rendszer)
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Ficsor Lajos CPP6 / 1 Virtuális bázisosztály Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Objektumok. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum adatok (attribútumok) és metódusok (operációk,műveletek) összessége,
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
Objektumorientált tervezés és programozás II. 3. előadás
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Adatszerkezetek 1. előadás
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Objektumorientált programozás
Java web programozás 11..
XML Mi az XML?  Extensible Markup Language  Kiterjeszthető jelölő nyelv  Adatok, adatstruktúrák leírására szolgál  A HTML és az SGML tapasztalataira.
Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor.
Objektumvezérelt rendszerek tervezése 4.óra – Composite, Decorator © Fülöp Lajos.
Objektumvezérelt rendszerek tervezése
Objektumvezérelt rendszerek tervezése 9.óra – Builder, Observer © Nagy Csaba.
Objektumvezérelt rendszerek tervezése 5.óra – Singleton, Visitor, Abstract Factory © Nagy Csaba.
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. Számítógép- hálózatok dr. Herdon Miklós dr. Kovács György Magó Zsolt.
Adatbázisszintű adatmodellek
Programozás III JPA.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
A jövő HR megoldása Fejér Tamás. perbit.insight Munkavállaló kezelő Munkakör kezelő Toborzás kezelő Továbbképzés kezelő.
Kiss Balázs Geográfus MSc/I. évf..  Hazánkban leginkább használt levelezőrendszerek  Üzleti levelezőrendszerek  Thunderbird  Gmail  Apple Mail 
IP címzés Gubó Gergely Konzulens: Piedl Péter Neumann János Számítástechnikai Szakközépiskola Cím: 1144 Budapest Kerepesi út 124.
A szoftver mint komplex rendszer: objektumorientált megközelítés.
Programtervezési minták
UML használata a fejlesztésben, illetve a Visual Studio 2010-ben
Viselkedési minták Behavioral patterns.
Operációs rendszerek.
Neumann János Informatikai Kar
Hernyák Zoltán Programozási Nyelvek II.
Hálózati architektúrák
Bevezetés Tematika Számonkérés Irodalom
Dependency Injection Tesztduplikátumok, Mock-ok, Fake-ek Feladat
OOP és Python Vincellér Zoltán.
Előadás másolata:

Strukturális tervezési minták

Strukturális tervezési minták A strukturális tervezési minták lényege az, hogyan formálnak osztályok illetve objektumok nagyobb struktúrákat. A strukturális osztály minták az öröklődést használják ki. Például azokban a nyelvekben, ahol a többszörös öröklődés megengedett, két osztályból egyet mixelhetünk. Ez nagyon hasznos lehet, ha olyan library-kat használunk, amelyeket külön fejlesztettek és együtt kell működniük. Egy másik példa a Adapter minta. Az adapter az egyik interfészt megfelelteti egy másik (adaptált) interfésznek. Ezzel szemben a strukturált objektum minták objektumokból építkeznek, így érik el az elvárt struktúrát. Ez a módszer azt a rugalmasságot hordozza, hogy az objektumokat futásidőben is felépíthetjük. A Composite egy strukturális osztály minta. Azt írja le, hogyan építhetünk fel egy osztályhierarchiát primitív és kompozit objektumokból. A kompozitokat primitív és más kompozit objektumokból építhetjük fel. A Proxy mintában a proxy helyettesíthet illetve fenntartja a helyét egy másik objektumnak. A proxy megjeleníthet helyben egy távoli objektumot, illetve nagyméretű objektumot, amit igény szerint töltenek be. A proxy biztosíthatja a hozzáférést bizalmas objektumokhoz.

Strukturális tervezési minták A Flyweight tervezési minta olyan struktúrát tárgyal, amely megosztott objektumokat használ. Az objektumokat két okból szokás megosztani: hatékonysági és konzisztencia okból. Azok az alkalmazások, amelyek sok objektumot használnak, különösen sok figyelmet kell fordítsanak az objektumok erőforrásigényére. Nyilvánvalóan csak azokat az objektumokat lehet megosztani, amelyeknek nincs a környezettől függő állapotuk. Ha ilyen állapot megadására szükséges, akkor azt a Flyweight objektumnak argumentumként kell átadni. Amíg a Flyweight sok kis objektum használatával foglalkozik, addig a Facade azt mutatja, hogy egyetlen objektum hogyan reprezentál egy egész alrendszert. A Bridge tervezési minta kettéválasztja az objektum absztrakcióját az implementációjától – így azt függetlenül módosíthatjuk. A Decorator leírja, hogyan adhatunk többlet funkcionalitást az objektumoknak dinamikusan. A Decorator egy nyílt végű struktúra, amely rekurzívan alkotja meg az összetett objektumot.

Adapter Cél Alkalmazási terület Átkonvertálja az osztály interfészeit más interfésszé, ahogy azt a kliens várja. Lehetővé teszi olyan osztályok együttműködését, amelyek egyébként inkompatibilisek lennének. Alkalmazási terület Egy létező osztályt kívánunk használni, de az interfésze nem olyan, mint amire szükségünk van Létre akarunk hozni egy újrahasznosítható osztályt, ami együttműködik egy még nem létező osztállyal, illetve ilyan osztályokkal, amelyek interfésze inkompatibilis. (Csak az objektum adapter) néhány létező alosztályt kívánunk használni, de nem praktikus mindegyik alosztályból öröklődéssel új interfészt adaptálni. Az objektum adapter az ősosztály interfészeit adaptálhatja.

Adapter Class adapter

Adapter Object adapter

Bridge Cél Alkalmazási terület Az absztrakció és az implementáció kettéválasztása, így azok egymástól függetlenül módosíthatók. Alkalmazási terület El akarjuk kerülni az absztrakció és az implementáció végleges összekapcsolását. Mind az absztrakció, mind az implementáció esetén legyen lehetőség alosztályokkal való funkcionális bővítésre. Az implementáció megváltoztatása ne legyen hatással a kliensre Meg akarjuk osztani az implementációt a kliensek között, de ezt elrejtjük a kliens elől.

Bridge

Composite Cél Alkalmazási terület Fa struktúrák létrehozása rész-egész hierarchiák reprezentációjára. A Composite minta lehetővé teszi a kliensnek, hogy az egyedi objektumokat, illetve az kompozit objektumokat egyformán kezelje. Alkalmazási terület Rész-egész hierarchiájú objektumok ábrázolása a Kliens ne tegyen különbséget az egyedi illetve a kompozit objektumok között. A kliens a struktúra minden objektumát egyformán kezeli.

Composite

Composite

Decorator Cél Alkalmazási terület Az objektumok funkcióinak dinamikus bővítése. A Decorator tervezési minta rugalmas alternatívát ad az öröklődéssel való funkcióbővítéssel szemben. Alkalmazási terület Az objektumok funkcióinak dinamikus bővítése egyenes módon (azaz a többi objektumra való kihatások nélkül) Visszavonható funkcióbővítések esetén Amikor az öröklődéssel való funkcióbővítés nem praktikus. Gyakran a bővítési lehetőségek nagy száma az alosztályok számának kombinatorikus robbanását idézi elő. Amikor az osztálydefiníció nem elérhető az örökléshez.

Decorator

Decorator

Decorator

Decorator A JAVA nyelv tele van (nem vizuális) Decorator példákkal A FilterInputStream osztály egy Decorator ami becsomagol bármilyen input stream osztályt. Lényegében ez egy absztrakt osztály, ami nem végez semmilyen műveletet, csupán egy olyan rétege biztosít, ahol a megfelelő metódusok megjelennek. Ezeket a metódus hívásokat továbbija a szülő stream osztályoknak. Néhány érdekes FilterInputStream osztály: BufferedInputStream CheckedInputStream DataInputStream DigestInputStream InflaterInputStream PushbackInputStream

Façade Cél Alkalmazási Terület Egységesített interfész(eke)t kínálni egy alrendszerben A Façade tervezési minta egy magas szintű interfészt kínál, amely az alrendszer használatát megkönnyíti. Alkalmazási Terület A façade egy egyszerű alapértelmezett nézetet kínál egy alrendszerről, amely a legtöbb kliensnek elegendő. A façade alkalmazásával az alrendszert a klienstől és egyéb alrendszerektől elkülöníthetjük, így az alrendszerek függetlenné, és hordozhatóbbá válnak. Réteges alrendszer struktúrát akarunk létrehozni. A façade segítségével minden alrendszer réteghez egy belépési pontot rendelhetünk.

Façade

Façade

Flyweight Cél Alkalmazási terület Megosztás segítségével nagyszámú, ‘finomszemcséjű’ objektum hatékony támogatása. Alkalmazási terület Az alkalmazásunk nagyszámú objektumot kezel és a tárolási költség magas az objektumok előfordulási száma miatt és a legtöbb objektum állapota kívülről jövő (vagy azzá tehető) és az objektumok nagy csoportja kicserélhető viszonylag kevés megosztott objektummal, ha a kívülről jövő állapotokat eltávolítjuk és az alkalmazás nem függ az objektumok azonosításától. Mivel a flyweight objektumok megoszthatók lehetnek, ezért különböző objektumok is azonosnak vallhatják magukat.

Flyweight

Flyweight

Flyweight

Flyweight

Proxy Cél Alkalmazási terület Egy objektumot helyettesítő vagy annak helyét fenntartó objektum létrehozása. Alkalmazási terület A proxy akkor alkalmazható, amikor egy objektumhoz rugalmasabb, sokoldalúbb referenciára van szükség A távoli proxy helyileg jeleníti meg a távoli memóriacímen lévő objektumot A virtuális proxy az erőforrás-igényes objektumokat igény szerint jtölti be A protection proxy az eredeti objektumhoz való hozzáférést szabályozza A smart reference az egyszerű pointert helyettesíti olyan esetekben, amikor az objektum elérésekor további műveletek szükségesek.

Proxy

Proxy