Viselkedési minták Behavioral patterns.

Slides:



Advertisements
Hasonló előadás
Óraregisztrálási modul
Advertisements

ADATBÁZISOK.
Kliens-szerver architektúra
C++ programozási nyelv Gyakorlat hét
Programozás III OOP ALAPOK.
Az MVC tervezési minta 2. előadás.
Programozás III KOLLEKCIÓK 2..
RENDSZERINTEGRÁLÁS B_IN012_1
Fekvőbeteg adatbázis szervezés GyógyinfokPirisa Levente.
3. A programozás eszközei, programozás-technikai alapismeretek
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
© 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.
13.a CAD-CAM informatikus
OBJEKTUMORIENTÁLT PROGRAM
Vizuális modellezés Uml és osztálydiagram UML eszközök
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Mutatók, tömbök, függvények
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
SZÁMÍTÓGÉP ARCHITEKTÚRÁK
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
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.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Szoftvertechnológia Rendszertervezés.
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
Bevezetés a C++ programozási nyelvbe
1 Operációs rendszerek Az ütemezés megvalósítása.
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,
A PHP (PHP: Hypertext Preprocessor) nyílt forráskódú, számítógépes szkriptnyelv, legfőbb felhasználási területe a dinamikus weboldalak készítése. Emiatt.
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
Hálózati Bombermen Belicza András Konzulens: Rajacsics Tamás BME-AAIT.
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT
Gépi tanulás Tanuló ágens, döntési fák, általános logikai leirások tanulása.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Objektumorientált tervezés Út az objektumig Az objektum fogalma, jellemzői Objektummal kapcsolatos fogalmak Hardverfogalmak A rendszer modell nézetei Objektumorientált.
HF MINTA 2012/2013. ősz. HF Minta  Objektum-orientált program  „Adatvezérelt” alkalmazás írása  Fájl kezelés (olvasás, írás)  Menü készítése  5-6.
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor.
Objektumvezérelt rendszerek tervezése 9.óra – Builder, Observer © Nagy Csaba.
Objektumvezérelt rendszerek tervezése 5.óra – Singleton, Visitor, Abstract Factory © Nagy Csaba.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Programozás, programtervezés
Minuet: A Scalable Distributed Multiversion B-Tree Írta: Benjamin Sowell, Wojciech Golab, Mehul A. Shah Feldolgozta: Fokin Miklós, Hodosy Gábor, Tóth Tamás.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Számítógépes grafika I. AUTOCAD alapok
Grafikus programozás Készítette: Csernok László
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Programstruktúrák. Program A program utasítások olyan sorozata, amely a számítógépen önállóan képes megoldani egy feladatot. A program háttértáron futtatható.
A szoftver mint komplex rendszer: objektumorientált megközelítés.
Programozási nyelvek csoportosítása.
Strukturális tervezési minták
Programtervezési minták
Programozási alapok.
Neumann János Informatikai Kar
Gépészeti informatika (BMEGEMIBXGI)
Adatbázis alapismeretek
Beépített függvények használata programozáskor
Kulcsrakész Közgyűjteményi Portál
Adatkötés Sablonokkal
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Mesterséges intelligencia
Számítógépes algoritmusok
Adatbázis-kezelés.
Dependency Injection Tesztduplikátumok, Mock-ok, Fake-ek Feladat
Algoritmus készítés.
Előadás másolata:

Viselkedési minták Behavioral patterns

Chain of Responsibility

Chain of Responsibility Cél A hívást nem egy konkrét objektum kapja meg, hanem az objektumok egy lánca. A kérés végigmegy a lánc objektumain, amiig valamelyik fel nem dolgozza. Alkalmazási terület Egynél több objektum is feldolgozhat egy kérést. És előre nem tudhatjuk, melyik fogja megtenni. A handler kiderítése automatikus legyen Egy kérést néhány objektumnak szeretnénk elküldeni anélkül, hogy a konkrét vevőt meghatároznánk A kérést kezelni tudó objektumok körét dinamikusan akarjuk megadni.

Command Cél Alkalmazási terület A kéréseket egy objektumba zárni. Így a klienst többféle kéréssel parametrizálhatjuk, a kéréseket sorba állíthatjuk vagy loggolljuk, visszavonható műveleteket tárolhatunk Alkalmazási terület Egy végrehajtandó művelettel parametrizálhatunk egy objektumot. A parancsok a callback függvények OO megfelelői. A kérések különböző időben való létrehozása, sorbaállítása, végrehajtása. A Command objektumnak az eredeti kéréstől független, saját életciklusa van. A visszavonható műveletek támogatására. A Command interfész rendelkezhet egy Unexecute művelettel, ami az előző hívást eredményét visszacsinálja

Command

Command

Command

Interpreter Cél Alkalmazási terület Egy adott nyelv nyelvtanának megtestesítése. Ezt használja egy fordító, amely a nyelv kifejezéseit fordítja le. Alkalmazási terület Amikor egy nyelvet kell lefordítani, ahol a kifejezéseket egy absztrakt szintaktikai fa írja le. A legjobb az, ha a nyelv egyszerű, a hatékonyság nem kritikus fontosságú.

Interpreter

Iterator Cél Alkalmazási terület Egy aggregát objektum egymásutáni elemeihez való hozzáférés biztosítása anélkül, hogy annak a megvalósítását feltárnánk Alkalmazási terület Egy aggregát objektum tartalmához való hozzáférés esetén, a belső reprezentáció feltárása nélkül Az aggregát objektumhoz több iterátor támogatása A különböző aggregát struktúrákhoz egységes iterációs interfész biztosítása

Iterator

Mediator Cél Alkalmazási terület Hozzunk létre egy olyan objektumot, ami egy objektumcsoport együttműködését támogatja. A Mediator pattern elősegíti a laza objektumkapcsolatot, hiszen az egyes objektumok nem hivatkoznak explicit módon egymásra. Az együttműködés módja így egymástól függetlenül módosítható Alkalmazási terület Egy objektumcsoport tagjai egymással jól definiált, de komplex módon működnek együtt. A kölcsönös függőséget nehéz megérteni Egy bonyolult objektum kódjának felhasználásakor, amelyik sok más objektummal kommunikál Osztályok közötti elosztott viselkedést kell módosítanunk, de alosztályok létrehozása nélkül

Mediator

Mediator

Memento Cél Alkalmazási terület Az egységbezárás megsértése nélkül mentsük el az objektum belső állapotát. Az objektum állapota így később visszaállítható lesz. Alkalmazási terület Az objektum (egy részének) pillanatnyi állapotát el kell menteni, illetve később az állapotot visszaállítani, és Az állapot lekérdezését lehetővé tévő közvetlen interfész megmutatná az implementációt, ami sérti az egységbezárást.

Memento

Observer Cél Hogyan tudják objektumok értesíteni egymást állapotuk megváltozásáról anélkül, hogy függőség lenne a konkrét osztályaiktól Példa MVC vagy Document-View architektúra A felhasználó megváltoztatja az egyik nézeten az adatokat, hogyan frissítsük a többit?

Observer

Observer Szereplők a klasszikus megvalósításban Subject Observer Tárolja a beregisztrált Observer-eket Interfészt definiál Observer-ek be- és kiregisztrálására valamint értesítésére Observer Interfészt definiál azon objektumok számára, amelyek értesülni szeretnének a Subject-ben bekövetkezett változásról (Update művelet) ConcreteSubject Az observer-ek számára érdekes állapotot tárol Értesíti a beregisztrált observer-eket, amikor az állapota megváltozik ConcreteObserver Referenciát tárol a megfigyelt ConcreteSubject objektumra Olyan állapotot tárol, amit a megfigyelt ConcreteSubject állapotával konzisztensen kell tartani Implemetálja az Observer interfészét (Update művelet), ez az, amit a Subject meghív, amikor a ConcreteSubject állapota megváltozik. Ebben frissíti a saját állapotát a megfigyelt ConcreteSubject állapotának megfelelően

Observer

State Cél Alkalmazási terület Egy objektum változtathassa meg a viselkedését, amikor a belső állapota megváltozik. Úgy tűnik, mintha az objektum az osztályát változtatta volna meg Alkalmazási terület Az objektum viselkedése a belső állapotától függ, és e viselkedést valós időben változtatni kell A műveleteknek nagy, az objektum belső állapotától függő feltételes utasításaik vannak. A State tervezési minta minden feltétel ágat külön osztályba tesz. Így egy objektum állapotát egy külön objektumba helyez, ami a többi objektumtól függetlenül módosítható.

State

Strategy Cél Alkalmazási terület Algoritmus családokat definiálunk, az algoritmusokat különválasztjuk, és csereszabatossá tesszük. Strategy segítségével az algoritmusok közül választhatunk függetlenül a klienstől Alkalmazási terület Olyan osztályaink vannak, amelyek csak viselkedésükben különböznek. A Strategy segítségével az osztályunkat a sok viselkedés egyikével ruházhatjuk fel. Egy algoritmus különböző változataira van szükségünk. A Strategy-t akkor használhatjuk, ha ezeket az algoritmusokat osztályhierarchiában implementáltuk Az algoritmus olyan adatot használ, amiről a kliensnek nem kell tudnia. A Strategy tervezési minta segít elkerülni a komplex, algoritmus specifikus adatok feltárását. Egy osztály sokféle viselkedést definiál, amelyek a műveleteiben többször megjelennek feltételként.

Strategy

Template Method Cél Példa Egy műveleten belül algoritmus vázat definiál, és ennek néhány lépésének implementálását a leszármazott osztályra bízza. Példa Framework-ben dokumentum megnyitás. A framework-ben legyen adott két osztály, Application és Document. Ezekből kell a programozónak egy-egy saját osztály leszármaztatnia, amikben megvalósítja az alkalmazás specifikus viselkedést.

Template Method Következmények A példában az OpenDocument egy ún. template method Meghatározza a műveletek sorrendjét Meghív néhány absztrakt műveletet, melyeket a leszármazott osztályban felül kell definiálni, hogy meghatározott viselkedést rendeljünk hozzá az aktuális igényeknek megfelelően Következmények Lehetővé teszi ún. hook függvények definiálását: kiterjesztési pontok Lehetővé teszi, hogy az algoritmus invariáns részeit egy helyen definiáljuk, és a változó részeket a leszármazott osztályban adjuk meg Kód duplikálás elkerülése: a hierarchiában a közös kódrészeket a szülő osztályban egy helyen adjuk meg (template method), ami a különböző viselkedést megvalósító egyéb műveleteket hívja meg. Ezeket a “különböző viselkedést megvalósító egyéb műveleteket” a leszármazott osztályban felül kell/lehet definiálni.

Template Method

Visitor Cél Alkalmazási terület Egy objektum struktúra elemein végrehajtandó műveletet testesít meg. A Visitor segítségével új művelet definiálható anélkül, hogy megváltoztatnánk azt az osztályt amin a műveletet végrehajtjuk. Alkalmazási terület Az objektumstruktúra különböző interfészekkel rendelkező osztályt tartalmaz. A műveleteket ezeken az objektumokon szeretnénk végrehajtani – a konkrét osztályaiktól függetlenül Számos össze nem függő műveletet kel végrehajtani egy objektumstruktúra ragjain, és nem szeretnénk „összeszemetelni” az osztályaikat ezekkel a műveletekkel. Az objektumstruktúrát meghatározó objektumok ritkán változnak, de gyakran kell új műveletet adni a struktúrához.

Visitor