Objektumorientált felbontás

Hasonló dokumentumok
Az objektumorientált megközelítés elınye: Hátránya:

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése

Szoftverprototípus készítése

Bánsághi Anna 1 of 67

Objektumorientált paradigma és a programfejlesztés

Szoftvertechnológia 2008/2009. tanév 2. félév 8. óra. Szoftvertechnológia

Objektumorientált paradigma és programfejlesztés Bevezető

OOP. Alapelvek Elek Tibor

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

Interfészek. PPT 2007/2008 tavasz.

Már megismert fogalmak áttekintése

Objektum orientált programozás Bevezetés

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Iman 3.0 szoftverdokumentáció

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

A SZOFTVERTECHNOLÓGIA ALAPJAI

Objektumelvű programozás

S01-7 Komponens alapú szoftverfejlesztés 1

UML (Unified Modelling Language)

OO rendszerek jellemzői

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Norway Grants. Az akkumulátor mikromenedzsment szabályozás - BMMR - fejlesztés technológiai és műszaki újdonságai. Kakuk Zoltán, Vision 95 Kft.

Számítógép architektúra

Szoftver újrafelhasználás

Szoftverarchitektúrák 3. előadás (második fele) Fornai Viktor

14. Objektum-orientált tervezés

NC program ellenorzo szimulátor fejlesztése objektumorientált módszerrel

Szoftvermérés:hogyan lehet a szoftvertermék vagy a szoftverfolyamat valamely jellemzőjéből numerikus értéket előállítani.

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 5. óra. Kocsis Gergely, Supák Zoltán

10-es Kurzus. OMT modellek és diagramok OMT metodológia. OMT (Object Modelling Technique)

Szekvenciális hálózatok és automaták

Alkalmazások architektúrája

Interaktív, grafikus környezet. Magasszintû alkalmazási nyelv (KAL) Integrált grafikus interface könyvtár. Intelligens kapcsolat más szoftverekkel

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Programozási alapismeretek 4.

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

Osztott Objektumarchitektúrák

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

III. Alapfogalmak és tervezési módszertan SystemC-ben

Java grafikai lehetőségek

Programfejlesztési Modellek

Programozás módszertan p.1/46

Programozási technológia

Dr. Mileff Péter

A programozás alapjai

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

Szoftver architektúra, Architektúrális tervezés

Irányítástechnikai alapok. Zalotay Péter főiskolai docens KKMF

S01-8 Komponens alapú szoftverfejlesztés 2

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

Objektum orientált software fejlesztés (Bevezetés)

Programozási nyelvek Java

A dokumentáció felépítése

S0-02 Típusmodellek (Programozás elmélet)

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Concurrency in Swing

Kölcsönhatás diagramok

Irányítástechnika Elıadás. PLC-k programozása


Advisor Master. GE Interlogix Magyarország Kft.

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila

Gyártórendszerek irányítási struktúrái

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Rekurzió. Dr. Iványi Péter

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

I. Objektumorientált programozás

Szakterületi modell A fogalmak megjelenítése. 9. fejezet Applying UML and Patterns Craig Larman

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

A SZOFTVERTECHNOLÓGIA ALAPJAI

Alkalmazások típusai Szoftverismeretek

Szerver oldali Java programozás /II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése.

Szoftver-technológia II. Modulok és OOP. Irodalom

Operációs rendszerek. Bemutatkozás

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

A SZOFTVERTECHNOLÓGIA ALAPJAI. Architekturális tervezés, Osztott rendszerek 7. előadás PPKE-ITK

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Architektúra, megszakítási rendszerek

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Java és web programozás

Operációs rendszerek. Az X Window rendszer

Interfészek. Programozás II. előadás. Szénási Sándor.

Számítógépes Hálózatok. 5. gyakorlat

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Szoftvertechnológia ellenőrző kérdések 2005

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok


Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Termék modell. Definíció:

Intelligens biztonsági megoldások. Távfelügyelet

Átírás:

Objektumorientált felbontás Dr. Mileff Péter Az OO architekturális modell jellemzői: a rendszert lazán kapcsolódó, jól definiált interfészekkel rendelkező objektumok halmazára tagolja. Az objektumok a többi objektum által biztosított szolgáltatásokat hívják. Az OO felbontás: objektumosztályokkal, azok attribútumaival és műveleteivel foglalkozik. Implementációkor az objektumok ezekből az osztályokból jönnek létre, és az objektum műveleteinek koordinálásához valamilyen vezérlési modellt alkalmaznak. 2 Objektumorientált felbontás Az OO megközelítés előnye: az objektumok lazán kapcsolódnak így az objektumok implementációja változtatható anélkül, hogy az hatással lenne más objektumokra. A komponensek közvetlen implementációjának biztosítására objektumorientált programozási nyelveket fejlesztettek ki. Pl.: C++, D, Objective Pascal, Java, stb. Objektumorientált felbontás Hátránya: az objektumoknak explicit módon kell hivatkoznia a többi objektum nevére és interfészére. Ha a rendszerben interfész változtatás történt, akkor a változtatást minden, a megváltozott objektumot használó helyen át kell vezetni. 3 4 1

Funkcionált csővezeték Más néven adatfolyam-modell. Lényege: Funkcionális transzformációk dolgozzák fel a bemeneteket és hoznak létre kimeneteket, közöttük áramlanak az adatok és sorban előrehaladva kerülnek átalakításra. Minden feldolgozási lépés transzformációként valósul meg. A bemeneti adatok ezeken a transzformációkon mennek keresztül, végül átalakulnak kimeneti adatokká. Funkcionált csővezeték A transzformációk mind szekvenciálisan, mind pedig párhuzamosan végrehajthatók. Az adatok egyesével vagy kötegelve is feldolgozhatók. Az interaktív rendszereket nehéz csővezetékelvű modell alapján megírni, míg az egyszerű szöveges be-, illetve kimenet modellezhető ily módon. 5 6 Funkcionált csővezeték Előnye: támogatja a transzformációk újrafelhasználhatóságát, könnyen érthető és bővíthető új transzformációkkal, implementálható konkurens és szekvenciális környezetben egyaránt. Hátránya: Az egyes transzformációknak vagy egyeztetniük kell egymással az átadandó adatok formátumát, vagy a kommunikációban részt vevő adatok számára egy szabványos formátumot kell kialakítani. 7 8 2

Vezérlési stílusok Ahhoz, hogy az alrendszerek rendszerként működjenek, vezérelni kell őket. hogy szolgáltatásaik a megfelelő helyre a megfelelő időben eljussanak. A strukturális modellek nem tartalmaznak ilyen elemeket ezért a rendszer kiépítőjének az alrendszereket valamilyen vezérlési modellnek megfelelően kell szerveznie. A vezérlési modellek az alrendszerek közötti vezérlési folyamatokkal foglalkoznak. Vezérlési stílusok 1. Központosított vezérlés: a vezérlés teljes felelősségét egyetlen alrendszer látja el, amely beindítja és leállítja a többi alrendszert. 2. Eseményalapú vezérlés: ahelyett, hogy a vezérlési információ egyetlen alrendszerbe lenne beágyazva, minden alrendszer válaszolhat egy külsőleg létrejött eseményre. Ezek az események vagy más alrendszerekből, vagy a rendszer környezetéből származhatnak. A vezérlési stílusok kiegészítik a strukturális stílusokat. Minden korábban bemutatott strukturális stílust meg lehet valósítani mindkét vezérléssel egyaránt. 9 10 Központosított vezérlés A központosított vezérlési modellben létezik egy kitüntetett alrendszer: a rendszervezérlő, A többi alrendszer végrehajtásáért felelős. A központosított vezérlési modellek két csoportba oszthatók: attól függően, hogy a vezérelt alrendszerek szekvenciálisan vagy párhuzamosan hajtódnak-e végre. Központosított vezérlés 1. A hívás-visszatérés modell: A megszokott fentről le alprogram modellje: ahol a vezérlés az alprogram-hierarchia csúcsán kezdődik és alprogramhívások segítségével jut el a fa alsóbb szintjeire. Ez a modell csak szekvenciális rendszerek esetén alkalmazható. 11 12 3

A hívásvisszatérés modell A hívásvisszatérés modell A vezérlés a hierarchiában magasabb szintű rutintól jut el az alacsonyabb szinten lévőhöz, majd visszatér a hívás helyére. A modell modulszinten használható a tevékenységek és objektumok vezérlésére, mert az OO rendszerben az objektumok műveletei eljárásként vagy függvényként vannak implementálva. A modell merev és korlátozott természete egyben előny és hátrány is. Erősségea vezérlési folyam elemzésének és bizonyos bemenet esetén a rendszer válasza kiszámíthatóságának viszonylagos egyszerűsége. Hátránya, hogy a normálistól eltérő működés esetén használata kényelmetlen. 13 14 Központosított vezérlés 2. A kezelőmodell: Konkurens és szekvenciális rendszerekre is alkalmazható. Egy kijelölt rendszerkezelő rendszerkomponens irányít: a többi rendszerfolyamat indítását, leállítását, valamint koordinálja azokat. Követelmény:egy folyamat olyan alrendszer vagy modul, amely végrehajtható más folyamatokkal párhuzamosan. A kezelőmodell működése A rendszert vezérlő folyamat a rendszer állapotváltozói alapján dönt: hogy az egyes folyamatokat mikor kell elindítani, illetve leállítani. Ellenőrzi: hogy a többi folyamat hozott-e létre feldolgozandó vagy feldolgozásra továbbküldendő információt. A vezérlő ciklikusan ellenőrzi az érzékelőket és folyamatokat, bekövetkezett-e valamilyen esemény vagy állapotváltozás. Éppen ezért ezt a modellt eseményciklus-modellnekis szokás nevezni. 15 16 4

Eseményvezérelt rendszerek Az eseményvezérelt vezérlési modelleket külsőleg létrehozott események irányítják. Az eseményvezérelt rendszereknek sok fajtája ismeretes, beleértve a szerkesztőket, ahol a szerkesztő utasításokat felhasználói felület események jelzik. 1. Eseményszóró modellek 2. Megszakítás-vezérelt modellek 17 18 Eseményvezérelt rendszerek Eseményszóró modellek: egy esemény minden alrendszerhez eljut, és bármelyik, az esemény kezelésére programozott alrendszer reagálhat rá. A vezérlési politika nincs beépítve az esemény-és üzenetkezelőbe. Az alrendszerek eldöntik, hogy mely eseményekre tartanak igényt, az esemény- és üzenetkezelő pedig biztosítja, hogy ezek az események eljussanak hozzájuk. Eseményvezérelt rendszerek Megszakítás-vezérelt modellek: Kizárólag valós idejű rendszerekben használják ahol egy megszakítás-kezelő észleli a külső megszakításokat. Ezek aztán valamely más komponenshez kerülnek feldolgozásra. 19 20 5

Objektumorientált tervezés Egy OO rendszer egymással együttműködő objektumokból áll, ahol az objektum saját állapotát karbantartja és erről az állapotról információs műveleteket biztosít. Az állapot reprezentációja privát, az objektumon kívülről közvetlenül nem hozzáférhető. Az OO tervezési folyamat: az objektumosztályoknak és az azok közötti kapcsolatoknak a megtervezéséből áll. 21 22 Objektumorientált tervezés Az OO tervezés az OO fejlesztés része a fejlesztési folyamat során objektumorientált stratégiát használunk: 1. Objektumorientált elemzés: a szoftver objektumorientált modelljének elemzésével foglalkozik. 2. Objektumorientált tervezés: a meghatározott követelményeknek megfelelő szoftverrendszer OO modelljének kialakítása. 3. Objektumorientált programozás: a szoftverterv objektumorientált programozási nyelven történő megvalósítása. Pl.: C++, D, Java. Objektumorientált tervezés A különböző lépések közötti átmenetnek észrevehetetlennek kell lennie, Mindegyik lépésben kompatibilis jelölésrendszert kell használni. Az OO rendszereket a más elven fejlesztett rendszerekkel szemben könnyebb megváltoztatni, mert az objektumok egymástól függetlenek. 23 24 6

Objektumorientált tervezés Egy objektum implementációjának megváltozása vagy új szolgáltatásokkal történő bővülése nem befolyásolhatja a rendszer többi objektumát. Ezért azt mondhatjuk, hogy az objektumok potenciálisan újrafelhasználható komponensek, mivel az állapotnak és a műveleteknek független egységbe zárásai. Ez növeli az érthetőséget és így a terv karbantarthatóságát is. Ian Sommerville féle objektum definíció: Egy objektum egy állapottal és az ezen az állapoton ható, meghatározott műveletekkel rendelkező entitás. Az állapotot objektum-attribútumok halmazaként adjuk meg. Az objektum műveletei szolgáltatásokat biztosítanak a többi objektum számára. Az objektumok egy objektumosztály-definíció alapján jönnek létre. 25 26 UML-ben megadott osztálydefiníció Egy objektumosztály definíciója egyszerre típusspecifikáció és egy objektumok létrehozására szolgáló sablon. Az adott osztályba tartozó objektummal kapcsolatos összes attribútum és művelet deklarációját tartalmazza. 27 Az Alkalmazott objektumosztály 28 7

Az objektumok úgy kommunikálnak, hogy szolgáltatásokat kérnek más objektumoktól (meghívják azok módszereit). A szolgáltatás végrehajtásához szükséges információ és a szolgáltatás végrehajtásának eredményei paraméterként adódnak át. Pl.: // Egy puffer objektum módszerének hívása, amely visszaadja a pufferben található következő értéket v = Buffer.GetNextElement(); // Puffer elemszámának a beállítása v = Buffer.SetElements(20); Szolgáltatás igénylése Egy objektum szolgáltatáskérés üzenetet küldhet egy másiknak, akitől a szolgáltatást kéri. A fogadóobjektum: elemzi az üzenetet, azonosítja a szolgáltatást és az ahhoz kapcsolódó adatokat, majd végrehajtja a kívánt szolgáltatást. Ha a szolgáltatáskérelmek ily módon vannak implementálva, az objektumok közötti kommunikáció szinkron, azaz a hívóobjektum megvárja a szolgáltatás befejeződését (soros végrehajtás). A gyakorlatban a legtöbb objektum-orientált nyelvben ez a modell az alapértelmezett. 29 30 Az újabb OOP nyelvekben (pl. JAVA,) azonban léteznek a szálak, amelyek megengedik a konkurens módon végrehajtódó objektumok létrehozását és az aszinkron kommunikációt (a hívóobjektum folytatja a működését az általa igényelt szolgáltatás futása alatt is). Ezek a konkurens objektumok kétféleképpen implementálhatók: Aktív objektumok vagy Szerverek. 1. Aktív objektumok: önmaguk képesek belső állapotukat megváltoztatni és üzenetet küldeni, anélkül, hogy más objektumtól vezérlőüzenetet kaptak volna. (Ellentétük a passzív objektum.) Az aktív objektumot reprezentáló folyamat ezeket a műveleteket folyamatosan végrehajtja, így soha nem függesztődik fel. 31 32 8

2. Szerverek: az objektum a megadott szolgáltatásokkal rendelkező párhuzamos folyamat. Az eljárások egy külső üzenetre válaszolva indulnak el és más objektumok eljárásaival párhuzamosan futhatnak. Mikor befejezték a tevékenységüket, az objektum várakozó állapotba kerül és további kéréseket vár. 33 Szerverek alkalmazásai A szervereket leginkább osztott környezetben érdemes használni, ahol a hívó és a hívott objektum különböző számítógépeken hajtódik végre. Az igényelt szolgáltatásra adott válaszidő megjósolhatatlan, úgy kell megtervezni a rendszert, hogy a szolgáltatást igénylő objektumnak ne kelljen megvárni a szolgáltatás befejeződését. A szerverek persze egyedi gépen is használhatók ahol a szolgáltatás befejeződéséhez némi időre van szükség pl. nyomtatás 34 Aktív objektumok alkalmazásai Aktív objektumokat akkor célszerű használni, ha egy objektumnak saját állapotát megadott időközönként frissíteni kell. Ez valós idejű rendszerekben gyakori, ahol az objektumok a rendszer környezetéről információt gyűjtő hardvereszközökkel állnak kapcsolatban. Az objektumosztályok egy generalizációsvagy öröklődési hierarchiába szervezhetők, az általános és a specifikus objektumosztályok közötti kapcsolatot jeleníti meg. A hierarchiában a lejjebb található osztályok: rendelkeznek ugyanazokkal az attribútumokkal és műveletekkel, mint szülőosztályaik, de új attribútumokkal és műveletekkel egészítheti ki azokat, valamint meg is változtathatják szülőosztályaik attribútumainak és műveleteinek némelyikét. 35 36 9

Objektumok élettartalma Egy objektum belső állapotát az attribútumainak pillanatnyi értéke határozza meg. Perzisztensobjektumok: A háttértárolón azon objektumok adatait kell tárolni, amelyek élettartama hosszabb, mint a program futási ideje. Tranziens objektumok: Azon objektumok, amelyek élettartama a program futási idejénél nem hosszabb. Ha a program nagyszámú perzisztens objektummal dolgozik, érdemes egy adatbázis-kezelő rendszerrel kiegészíteni. 37 38 10