objektum-orientált programozás

110
Objektum-orientált Objektum-orientált programozás programozás Készítette: Ormos László

Upload: shino

Post on 19-Jan-2016

47 views

Category:

Documents


4 download

DESCRIPTION

Objektum-orientált programozás. Készítette: Ormos László. Felhasznált irodalom. Benkő Tíborné - Kiss Zoltán - Dr.Tamás Péter - Tóth Bertalan: Programozás Borland Pascal 7.0 rendszerben - DPMI Windows, Computer Books, Budapest, 1995. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Objektum-orientált programozás

Objektum-orientált programozásObjektum-orientált programozás

Készítette: Ormos László

Page 2: Objektum-orientált programozás

Felhasznált irodalomFelhasznált irodalomBenkő Tíborné - Kiss Zoltán - Dr.Tamás Péter - Tóth Bertalan: Programozás Borland Pascal 7.0 rendszerben - DPMI Windows, Computer Books, Budapest, 1995.

Dr.Kondorosi Károly - Dr.László Zoltán - Dr.Szirmay-Kalos László: Objektum-orientált szoftverfejlesztés, Computer Books, Budapest, 1997.

Benkő Tíborné - Benkő László - Dr.Gyenes Károly - Dr.Komócsin Zoltán: Objektm-orientált programozás Turbo Pascal nyelven 7., Computer Books, Budapest, 1997.

Page 3: Objektum-orientált programozás

A programfejlesztés folyamataA programfejlesztés folyamataA fejlesztés lépései:

modellezés, tervezés, implementáció.

Page 4: Objektum-orientált programozás

A programfejlesztés folyamataA programfejlesztés folyamataReprezentáció az adatok adott szabályok szerint történő ábrázolása.Absztrakció a környezet általánosítható jellemzőinek kiemelése, elkülönítése az egyedi tulajdonságoktól.Dekompozíció a rendszer olyan együttműködő, kis feladatokat teljesítő egységekre történő felbontása, amelyek együttesen az eredeti rendszernek megfelelő viselkedést eredményezik.

Page 5: Objektum-orientált programozás

A programfejlesztés folyamataA programfejlesztés folyamataA programfejlesztés lépései:

modellezés: a környezet tudati leképezése, analízis: a leképezés működésének elemzése, tervezés: a leképezés szerkezeti felépítésének

kidolgozása, leképezés: a tudati modell és a szerkezeti

felépítés megfeleltetése, implementáció: a szerkezeti felépítés adott

szabályok szerinti megvalósítása.

Page 6: Objektum-orientált programozás

A programfejlesztés folyamataA programfejlesztés folyamataVízesésmodell

analízisarchitekturális tervezés részletes

tervezés

kódolás

integrálás

tesztelés

Page 7: Objektum-orientált programozás

A programfejlesztés folyamataA programfejlesztés folyamataInkrementális fejlesztési modell

Első fejlesztési ciklus

1. változat 1. változat

2. változat

3. változatn. változat

Page 8: Objektum-orientált programozás

A programfejlesztés folyamataA programfejlesztés folyamata

Spirál modell

Célok meghatározásaAlternatívák értékelése

Kockázat elemzés

Megvalósítás, tesztelésÉrtékelés, új ciklus indítása

Page 9: Objektum-orientált programozás

Strukturált programozásStrukturált programozás áttekinthető programszerkezet, tervezés rétegenként, moduláris programozás, hordozhatóság

Procedure A

Procedure B

Procedure D

Procedure C

Page 10: Objektum-orientált programozás

Az objektum-orientált programozás Az objektum-orientált programozás kialakulása kialakulása

Az objektum bármi lehet, ami pontosan körülhatárolható, valós vagy absztrakt, azonosítható és egyedi, a vizsgált környezet jól meghatározott része, kölcsönhatásban van más objektumokkal, jellemzők rá a benne értelmezett műveletek és a vele

végzett műveletek hatására keletkezett állapotok.

Page 11: Objektum-orientált programozás

Az objektum-orientált programozás Az objektum-orientált programozás kialakulása kialakulása

Az objektum egy rendszer azonosítható része, amely a külvilág felé mutatott viselkedésével, belső struktúrájával és állapotával jellemezhető.Az objektum tulajdonságaira csak viselkedéséből lehet következtetni, nem látható szerkezeti felépítése, belső működése.

Page 12: Objektum-orientált programozás

Az objektumAz objektumMinden objektumnak maradéktalanul teljesítenie kell feladatát.

A lokális felelősség elve: minden objektum felelős önmagáért.

Page 13: Objektum-orientált programozás

Az objektumAz objektumEgy nyomtatónak a programja:void print(file){ switch kind_of (file){case ascii: print_ascii(file;break;case msword20: print_msword20(file;break;

case tiff: print_tiff(file);break; case …}

}

Page 14: Objektum-orientált programozás

Az objektumAz objektumA nyomtatni kívánt állománynak mint objektumnak tartalmaznia kell saját szerkezeti jellemzőit.A nyomtatónak mint objektumnak a felelőssége a definiált interfész és az emuláció pontos végrehajtása.

Page 15: Objektum-orientált programozás

Az objektumAz objektumAz objektum viselkedése:

aktív: folyamatosan működik, aktivizál más objektumokat,

paszív: csak környezete hatására jön működésbe.

Page 16: Objektum-orientált programozás

Az objektumAz objektumÜzenetek az objektumok között:

adatcsere: kommunikáció az objektum és környezete között,

vezérlés: lehetőség a passzív objektumok aktivizálására.

Az üzenet felépítése: név: az objektum azonosítója, paraméterek: az objektum működését

meghatározó adatok (újabb objektum is lehet).

Page 17: Objektum-orientált programozás

Az objektumAz objektumAz események az objektumok kölcsönhatását modellezik.

Az eseményeket az objektumok okozzák. Van-e az eseménynek címzettje? Reagálhat-e egy objektum az eseményre? Egyszerre hány objektum reagálhat az eseményre?

Page 18: Objektum-orientált programozás

Az objektumAz objektumEgy objektum az üzenet hatására az üzenet azonosítója, neve által meghatározott metódus végrehajtásával reagál.

Üzenet: mit kell csinálnia a megcímzettobjektumnak,

Metódus: hogyan kell végrehajtani a feladatot.

Page 19: Objektum-orientált programozás

Az objektumAz objektumAz objektum jellemzője az üzenet hatására végrehajtott művelet után felvett állapota.

Az objektum állapotát az attribútum tartalmazza, amely a struktúrát adott pillanatban kitöltő értékek halmaza.

Page 20: Objektum-orientált programozás

Az objektumAz objektumA megegyező struktúrájú és viselkedésű objektumok csoportját osztálynak nevezzük.

Az objektum az osztály egy példánya.

tanuló(tanuló)Jancsika

(tanuló)Juliska

(tanuló)Piroska

objektumok (példányok)osztály

Page 21: Objektum-orientált programozás

Az objektumAz objektumAz osztálynak és objektumainak ábrázolása attribútumokkal együtt:

tanulónév: textkor: integer

(tanuló)Jancsika

7

(tanuló)Juliska

6

(tanuló)Piroska

6

Page 22: Objektum-orientált programozás

Az objektumAz objektumDemeter-törvényAz objektumok és környezetük közötti csatolást gyengíteni kell.A csatolás akkor a leggyengébb, ha egy objektum metódusain belül csak a metódus paramétereire és eredményére, a metódust tartalmazó osztály attribútumaira, a program globális változóira, a metódusban definiált lokális változókratörténik hivatkozás.

Page 23: Objektum-orientált programozás

Az objektumAz objektumAz objektum típusa

A típus egy objektum-halmaz viselkedését specifikálja, az osztály pedig a típus által meghatározott viselkedést imlementálja.

A kompatibilitás

Két típus akkor kompatíbilis, ha az egyik típusú objektum bármikor és bárhol alkalmazható, ahol a másik típusú objektum használata megengedett.

Page 24: Objektum-orientált programozás

Az objektumAz objektumTípus ábrázolás

madár emlős

kutya

Vízi_állat

cet

állat

pontyvarjú

veréb

Page 25: Objektum-orientált programozás

Az objektumAz objektumAz objektum-változó olyan szerkezet, amely objektum-példányt tartalmaz.

Az objektum-változó értékeket vehet fel, vagy meghatározott üzeneteket kaphat.

A változónak küldött üzenetet a változóban éppen jelen lévő objektum kapja meg.

Page 26: Objektum-orientált programozás

Modellezés objektumokkalModellezés objektumokkal1. Az objektummodell leírja a rendszerben lévő objektumok struktúráit, attribútumait és metódusait.2. A dinamikus modell a rendszer időbeli viselkedését írja le.3. A funkcionális modell a rendszer által végrehajtott adatátalakításokat jeleníti meg.

Page 27: Objektum-orientált programozás

Az objektummodellAz objektummodellAttribútumok: az objektum tulajdonságait és állapotát meghatározó objektumban tárolt adatok, melyek lehetnek

egyszerű, összetett, közvetlen adatok, referenciák.

Page 28: Objektum-orientált programozás

Az objektummodellAz objektummodell Relációk és a láncolás:

a reláció az objektumok illetve osztályok közötti kapcsolat, amelyek lehetnek

bináris relációk, többes relációk;

a láncolás az objektum példányok közötti logikai vagy fizikai kapcsolat, amely lehet

asszociáció, szerepek.

Page 29: Objektum-orientált programozás

Az objektummodellAz objektummodell Normalizálás:

Egy objektum attribútumait úgy célszerű megválasztani, hogy azok az objektum egészére legyenek jellemzőek.

Szükség esetén az adatbázis-kezelés normalizálási szabályait használjuk fel az objektumok attribútumai között fenálló relációk vizsgálatára.

Page 30: Objektum-orientált programozás

Az objektummodellAz objektummodell Az öröklés olyan implementációs és modellezési

eszköz, amely lehetővé teszi, hogy egy osztályból olyan újabb osztályokat származtassunk, amelyek az eredeti osztályban már definiált szerkezettel, tulajdonságokkal és viselkedéssel rendelkeznek. Alapfogalmak

alaposztály, amelyből örököltünk, származtatott osztály, amely örökölt.

Page 31: Objektum-orientált programozás

Az objektummodellAz objektummodellTöbbszörös öröklés

Ha egy új osztályt definiálunk, amely két vagy több létező osztályra épül, akkor többszörös öröklésről beszélünk.Hátránya, hogy az implementáció nehezebb, és a fogalmi tisztaság csökkenhet.

1. osztály 2. osztály 3. osztály

A_metódusB_metódus

C_metódusD_metódusE_metódus

B_metódusE_metódusF_metódus

Page 32: Objektum-orientált programozás

Az objektummodellAz objektummodell Komponens-reláció

A komponens- vagy tartalmazás reláció az asszociáció speciális esete.A komponens-reláció struktúrája:

rögzített - a komponens objektumok száma és típusa előre definiált,

változó - a szintek száma és az objektumok típusa meghatározott, a komponens-objektumok száma pedig változó,

rekurzív - az objektum közvetve vagy közvetlenül tartalmazza önmagát, a lehetséges szintek száma végtelen.

Page 33: Objektum-orientált programozás

Az objektummodellAz objektummodell Metaosztály

Az objektumot leíró osztály egyben maga is objektum, és lennie kell egy olyan osztálynak, amelynek maga is példánya: ez a metaosztály.

Page 34: Objektum-orientált programozás

Dinamikus modellekDinamikus modellek Események és állapotok

Az esemény egyedi, és eseményosztályba sorolható struktúrája és szemantikája alapján.

Minden esemény egyirányú kapcsolatot jelöl a küldő és a cél objektum között.

Az esemény bekövetkezésének időpontja az esemény implicit attribútuma.

Page 35: Objektum-orientált programozás

Dinamikus modellekDinamikus modellek A rendszer működése jól definiált események

sorozatával, a forgatókönyvvel jellemezhető. Az események sorrendje oksági rendet tükröz. Minden esemény egy üzenet egyik objektumtól a

másikhoz való küldését jelenti. Az esemény sorrend és az üzenetváltásban résztvevő

objektumok kommunikációs diagramban ábrázolhatók.

Page 36: Objektum-orientált programozás

Dinamikus modellekDinamikus modellek Egy kommunikációs diagram:

Ügyfél Címzett Bank Szállító

megrendel

utalványoz

szállít

átvesz

számláz

értesítértesít

Page 37: Objektum-orientált programozás

Dinamikus modellekDinamikus modellek Az állapotdiagram

események és állapotok sorozatát: az állapotgép működését tartalmazza,

mindig egy egész osztály viselkedését írja le.Egy általános szolgáltatás állapotmodellje:

szállításra vár

teljesít pénzt vár könyvel

megrendel

határidőátvesz értesít selejtez

Page 38: Objektum-orientált programozás

Dinamikus modellekDinamikus modellek Az állapotgép működése:

1.állapot-ba történő belépésnél A akció, majd az aktivitás végrehajtása, ha esemy esemény bekövetkeztekor a feltétel fennáll,

akkor aktivitás végrehajtása megszakad, B akció és D akció után átlépés 2.állapotba.

Ha 1.állapot-ban esemx megszakította az aktivitás végrehajtását, végrehajtotta C akció-t és visszatér 1.állapot-ba.

Page 39: Objektum-orientált programozás

Dinamikus modellekDinamikus modellekAz állapotgép működése:

2. állapot1. állapotdo:aktivitásentry/A akcióexit/B akcióesemx/C akció

esemy(attribútum)/[feltétel]/D akció

Page 40: Objektum-orientált programozás

Dinamikus modellekDinamikus modellek Beágyazott állapotmodellek

Egy adott állapotban előírt aktivitás beágyazott állapotdiagrammal specifikálható.A beágyazott modell (almodell) akkor működik, ha a befoglaló modell (főmodell) állapotához tartozó aktivitás végrehajtása megkezdődik. Az almodell állapotai megfelelnek a főmodell állapota

finomításának. A főmodellre vonatkozó események az almodell valamennyi

állapotában egyformán értelmezett közös események.

Page 41: Objektum-orientált programozás

A funkcionális modellA funkcionális modellA funkcionális modell leírja, hogy

mi történik a rendszerben, miként lehet a bemeneti adatokból a kimenet

értékeit meghatározni.Specifikálja

a modellben szreplő metódusokat, a dinsmikus modell akcióit és tevékenységét.

Page 42: Objektum-orientált programozás

A funkcionális modellA funkcionális modell Adatfolyam-ábra

A funkcionális modell adatfolyam-ábrák halmaza, amelyek a műveleteket és korlátozásokat specifikálják.Az adatfolyam-ábra egy gráf, amelynek élei az adatutak, csomópontjai pedig

adattranszformáló folyamatok, adattárak, adatforrások és adatnyelők.

Page 43: Objektum-orientált programozás

A funkcionális modellA funkcionális modell Adatszótár

Összetett az egyszerűbb adatok kompozíciójaként létrehozott adat.Komozíciós elvek: szekvencia: az egyes adatelemek sorrendje, szelekció: a felsorolt adatok közül kizárólagosan

egynek a kiválasztása, iteráció: az azonos adatelemek ismétlődése.

Page 44: Objektum-orientált programozás

A funkcionális modellA funkcionális modell Folyamat-specifikáció

szöveges leírás, pszeudo-kód, folyamatábra, döntési tábla, döntési fa.

Page 45: Objektum-orientált programozás

A funkcionális modellA funkcionális modell Modell kapcsolatok

A funkcionális modell folyamatai megfeleltethetők az objektummodell műveleteinek.A célobjektum a paraméterként kapott objektumok kliense, mivel a célobjektum használni fogja azokat a metódus végrehajtása során.A felhasznált objektumok a kiszolgálók (szerverek).A kliens-szerver viszony implementációs függőséget definiál az osztályokon.

Page 46: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszereAnalízis A feladatdefiníció:

a feladat körvonalainak, korlátainak vizsgálata, az igények és elvárások vizsgálata, az alkalmazási környezet vizsgálata, a teljesítmény, a megbízhatóság és a prioritások

vizsgálata, a fejlesztési előírások tanulmányozása.

Page 47: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere Objektum modellezés:

az objektumok és osztályok azonosítása redundáns osztályok, irreleváns osztályok, határozatlan osztályok, attribútumok, műveletek, szerepek, implementációs fogalmak és eszközök.

Page 48: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere az osztályok azonosítása CRC-kártyákkal:

osztály Class, felelősség Responsibility, együttműködők Collaborators.

(alkalmazott módszer a „brain-storming”)

Page 49: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere az asszociációk azonosítása:

fizikai elhelyezkedés, cselekvések, kommunikáció, birtoklás, megfelelés előírt feltételeknek.

Cég Alkalmazott

Eszköz

alkalmaz

birtokol

Személyeshasználatban

Page 50: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere az attribútumok azonosítása:

az objektum tulajdonságát fejezi ki, csak az alkalmazás szempontjából fontos attribútumokat

kell meghatározni, kerülni kell az attribútumok közötti funkioális függőséget.

Page 51: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere az öröklési hierarchia létrehozása:

alaposztályok keresése (alulról felfelé) attribútumok és metódusok összehasonlítása alapján,

származtatott osztályok képzése (fentről lefelé) új attribútumok és metódusok alapján.

Az attribútumokat és az asszociációkat mindig a legáltalánosabb osztályhoz kell rendelni.

Page 52: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere az objektum modellezés termékei:

objektum modell: egy osztálydiagramból és objektumdiagramokból áll,

osztályleírás: név, felelősségek, példányok, alaposztályok, komponensek, változók, relációk.

Page 53: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere Dinamikus modellezés

a forgatókönyv a rendszer vezérlési és sorrendi kérdéseit tartalmazza,

forgatókönyvek összeállítása: események

keletkezés helye, észlelése,

eseménylisták.

Page 54: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere kommunikációs diagramok felvétele

kommunikációs modell: az objektum-objektum kapcsolatok időbeli alakulásának leírása,

kommunikációs diagramok, üzenetek, aktiváló események.

Page 55: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere állapotmodellek készítése

az állapotmodell egy objektum események hatására kialakuló belső állapotait és az események hatására küldött üzeneteit írja le,

az állapotmodell felépítése a kommunikációs diagramok alapján történik,

finomítás.

Page 56: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere eseményfolyam-diagram készítése

az eseményfolyam-diagram az osztályok viselkedését, kapcsolódási felületét pntosítja,

a dinamikus modell finomítása az analízis eredményei alapján:

név, szolgáltatások, konkurencia, perzisztencia, teljesítmény.

Page 57: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere Funkcionális modellezés

funkciólista összeállítása, bemeneti és kimeneti adatok összegyűjtése, kontextus-diagram készítése, fizikai adatfolyam-ábra készjtése, logikai adatfolyam-ábra készjtése, rendszerhatár kijelölés.

Page 58: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszereObjektumorientált tervezés

1. Architektúrális tervezés.

2. Külső illesztés tervezése a környezettel való

kapcsolattartáshoz.

3. Objektumtervezés az osztályok és objektumok specifikálásával.

Page 59: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere Architektúrális tervezés

alrendszerek és modulok kialakítása a logikailag összetartozó definíciók egyetlen

implementációs egységbe tartoznak, az illesztések definícióját a modul- és

alrendszerinterfész fájlokban kell megadni, a könyvtárak és modulok az architektúra

kialakításában megváltoztathatatlan peremfeltételek.

Page 60: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere Többprocesszoros és multiprogramozott rendszerek

a program egy vagy több processzoron is futtatható, multiprogramozott rendszer esetében több párhuzamos

folyamat (task) alkotja a programot, alrendszerek processzorokhoz rendelése esetén

hardver- és szoftverkomponensek, teljesítmény igény, fizikai kapcsolatok.

Page 61: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere A vezérlési és ütemezési szerkezet felépítése

a vezérlést a dinamikus modell határozza meg, ütemezési stratégiák az erőforrások megosztására:

nem preemptív stratégia: erőforrás átadás időzítéssel,

preemptív stratégia: erőforrások védelme „szemaforokkal”.

Page 62: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere a fizikai adatszerkezet implementációja

az objektum belső állapotát attribútumainak pillanatnyi értéke határozza meg,

perzisztens objektumok tárolása, objektum eléréséhez keresési eljárások, reláiós és objektumorientált adatbázisok objektumok

tárolására.

Az objektumorientált adatbázisok az objektumorientált elvek közvetlen alkalmazásai.

Page 63: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere határállapotok megvalósítása

a program lehetséges határállapotai: inicializálás, leállítás, katasztrófális hibaállapot,

applikációs objektum a határállapotok tárolására.

Page 64: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere Külső illesztés tervezése

Programvezérelt illesztés könnyen implementálható, passzív külső adatforrások, a vezérlés a programon belül marad,

Eseményvezérelt illesztés a vezérlést eg aktív elosztó objektum látja el, az eseményekhez kapcsolódó metódusok az

eseménykezelők vagy triggerek.

Page 65: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere Megjelenési modell

képernyő felületek megjelenése, beavatkozó szervek formája és jelentése,

a sémákban egyszerre látható, bevihető adatok és a köztük lévő relációk leírása,

a képernyősémák közötti navigációs lehetőségek leírása,

sémákon belüli állapottér-modell a felhasználói beavatkozás értelmezésére.

Page 66: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere Objektumtervezés

1. Az objektum valamint a dinamikus és funkcionális modellek kombinációja:

osztályok deklarációja, attribútumok és metódusok deklarációja.

2. Az üzenet algoritmusok valamint az implementációs adatstruktúrák kiválasztása.

3. Az asszociációk tervezése.4. A láthatóság biztosítása:

más objektumokra való hivatkozás, objektumok közötti üzenetváltás.

Page 67: Objektum-orientált programozás

A fejlesztés módszereA fejlesztés módszere5. Illesztés nem objektum-orientált környezethez.6. Az ütemezési szerkezet kialakítása

párhuzamosság feloldása egy processzor esetén, objektumok processzorhoz rendelése több

processzoros rendszer esetén.7. Optimalizálás.

Az objektumtervezés eredménye az osztálydefiníciókat

tartalmazó program vázlat.

Page 68: Objektum-orientált programozás

Objektumok valósidejű rendszerekbenObjektumok valósidejű rendszerekbenA valósidejű rendszerek jellemzői

időbeni viselkedés, válaszidő, megbízhatóság, biztonság, robusztusság, folyamatos, felügyelet nélküli működés, konkurens működés, méret, dinamika, kooperációskészség

a program alrendszerekre bontható, az objektumok statikussá tehetők, az objektumok és taszkok kooperatívak.

Page 69: Objektum-orientált programozás

Objektumok valósidejű rendszerekbenObjektumok valósidejű rendszerekbenAz időkövetelmények Az időkövetelmények megadása

a rendszer és környezete közötti üzenetváltásra vonatkoznak,

a rendszer és környezete kapcsolatának leírására vonatkoznak.

Page 70: Objektum-orientált programozás

Objektumok valósidejű rendszerekbenObjektumok valósidejű rendszerekben Az időkövetelmények típusai

periodikus feladatok periódusidő

T tényleges periódusidő,Tp névleges periódusidő,t1 … ti a feladat végrehajtásának időpontja,t a megengedett eltérés.

T = Tp ± t

ti+1 = ti + Tp ± t

Page 71: Objektum-orientált programozás

Objektumok valósidejű rendszerekbenObjektumok valósidejű rendszerekben Határidős feladatok eseményvezérelt

külső esemény bekövetkezésétől számított időtartammal megadott időpont,

a feladatot az esemény bekövetkezése után, de a határidő lejárta előtt kell végrehajtani,

a külső esemény lehet periodikus vagy nem periodikus (sporadikus).

Page 72: Objektum-orientált programozás

Objektumok valósidejű rendszerekbenObjektumok valósidejű rendszerekben Időzített feladatok idővezérelt

a feladat végrehajtása időponthoz kötött, a végrehajtás az adott időpontban késedelem nélkül

elindítható végrehajtás

adatfüggő időt igénylő rész végrehajtása, kiszámítható végrehajtási időt igénylő rész

indítása,

Page 73: Objektum-orientált programozás

Objektumok valósidejű rendszerekbenObjektumok valósidejű rendszerekben Időkorlátos várakozás időkorlátos eseményvezérelt

ha az esemény meghatározott időn belül nem következik be,

akkor a rendszer más műveletek végrehajtásával folytatja a működést,

a várt külső esemény a rendszer által küldött üzenetre érkező válasz.

Page 74: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás Borland PascalBorland Pascal nyelven nyelven

A Pascal nyelv jellemzői: objektum típus, metódus, konstruktor és destruktor, öröklődés, sokalakúság.

Page 75: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás Borland PascalBorland Pascal nyelven nyelven

Objektum deklarációja:

type obj_név=object<adatok>

<metódusok>

end;

Page 76: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás Borland PascalBorland Pascal nyelven nyelven

Metódusok az objektumban:type obj_név=object

<adatok>

public:procedure obj_név. met_1 (paraméterek);function met_m: típus;

function met_n: típus;

end;

Page 77: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás Borland PascalBorland Pascal nyelven nyelven

A metódus deklarálása:procedure obj_név.met_m (paraméterek);

begin<műveletek>

end;

function obj_név.met_n: típus;begin

<műveletek>end;

Page 78: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás Borland PascalBorland Pascal nyelven nyelven

Konstruktor és destruktor az objektumban:

type obj_név=object<változók>

constructor Init (size:integer);

destructor Done;

function obj_név1 (index:integer):típus;

procedure obj_név2 (index:integer); paraméter : típus;

end;

Page 79: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás Borland PascalBorland Pascal nyelven nyelven

Konstruktor és destruktor deklarálása:constructor obj_név.Init (size:integer);

begin<műveletek>end;

destructor obj_név.Done;begin<műveletek>end;

Megjegyzés: a destruktornak nincs sem típusa, sem argumentuma.

Page 80: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás Borland PascalBorland Pascal nyelven nyelven

Az öröklődés:type

obj_név1=object<változók_1>: <típus>;end;obj_név2=object (obj_név1)<változók_2>: <típus>;end;obj_név3=object (obj_név2)<változók_3>: <típus>;end;

(következő kép)

Page 81: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás Borland PascalBorland Pascal nyelven nyelven

(folytatás)var

k : obj_név3;begin

k.<változók_11> := <adat_11>;

k.<változók_1n> := <adat_1n>;k.<változók_2> := <adat_2>;k.<változók_3> := <adat_3>;

end;

Page 82: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

A C++nyelv jellemzői: osztályok, struktúrák, metódusok vagy tagfüggvények, konstruktor és dekonstruktor, öröklődés, generikus adatszerkezet.

Page 83: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Az osztály mint objektum:

class osztály{

<adatok>

<metódusok, konstruktorok, destruktorok>

};

Page 84: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Metódus vagy tagfüggvény az osztályban:class osztály

{<adatok>;

publik:void met_1 (paraméter lista){argumentum};

// belső definíció

void met_n (paraméter lista);// osztályon

kívüli definíció};

Page 85: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

A struktúra mint objektum:

struct obj_név {

<adatok>

<metódusok>

};

Page 86: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

A metódus vagy tagfüggvény a struktúrában:

struct obj_név{

<adatok>

void met_1 (paraméter lista);

void met_n (paraméter lista);

};

Page 87: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

A konstruktor és a destruktor az osztályban:

class oszt_név{<adatok>public:

oszt_név (típusok) {argumentum} // konstruktor

~oszt_név ( ) { } // destruktor

};

Megjegyzés: a destruktornak nincs sem típusa, sem argumentuma.

Page 88: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Öröklődés: objektumtípusok között fennálló kapcsolat.

Élőlénynév, kor

Ember+nemzetiség Állat

+élőhely

Növény+élőhely

az egyaz egy az egy

általánosítspecializál

Page 89: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Az öröklödés fajtái:

egyszerű öröklődés, virtuális öröklődés, nem virtuális öröklődés, többszörös öröklődés.

Page 90: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Öröklődés - alaposztályok létrehozása:

class oszt_név{

protected:

<változók> ;

public:

oszt_név (változók) {argumentum}

void metódus (változók) {argumentum}

};

Page 91: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Öröklődés - származtatott osztályok létrehozása:

class szárm_oszt : public oszt_név{<változók> ;public:

szárm_oszt (változók): oszt_név (változók) {argumentum}

void met_1 ( ) ;

void met_n ( ) ;};

Page 92: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Származtatott osztály - metódusok:void oszt_név : : met_1 ( ) {

_művelet_1( );

_művelet_i( );}

void oszt_név : : met_n ( ) {_művelet_1( );

_művelet_j( );}

Page 93: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Valósidejű programozás: párhuzamos folyamatok programozása

egyprocesszoros számítógépen: P metódus az erőforrások lefoglalásához, V metódus az erőforrások felszabadításához,

időzítés programozása: Timer osztály deklarálása.

Page 94: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Párhuzamos folyamatok Semaphore objektummal:class Semaphore {

Bool free;public:

Semaphore ( ) { V( ); }void P( ) {

for (BOOL success = FALSE; !success; ) {

asm cli;if (free) { free=FALSE; success=TRUE; }asm sti;}

}void V( ) { free=TRUE; }

};

Page 95: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Valósidejű óra deklaráiója:class Timer

{long time;

public:Timer( ) { time=0; }

void operator ( ) ( ) { time++; } long Get( ) { return time; }

};

Page 96: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás CC++++ nyelven nyelven

Generikus adatszerkezetek: olyan osztályok, melyeknek adattagjai és tagfüggvény típusai a fordítás alatt tetszőlegesen állíthatók be.Előállítás: előfordítóval - a C előfordító név összekapcsoló

makrójával (##), sablonnal - a generikus osztály leírásával:

template <class A, class B> class oszt_név { oszt_def}

Page 97: Objektum-orientált programozás

… … és még egy lehetőség:és még egy lehetőség:

Objektum-orientált programozásObjektum-orientált programozás

makro-assembly makro-assembly nyelvennyelven

Page 98: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

Az assembly nyelv rendszerelemei: utasítások, direktívák.

Az assembly program strukturális elemei: programok, szubrutinok, makrók.

Page 99: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

A macro-assembly nyelv obektumai: a makrók.

A makró jellemzői: lokális felelősség, kapcsolat más makrókkal, polimorfizmus, feltételes viselkedés

adatfüggő viselkedés, eseményfüggő viselkedés, időfüggő viselkedés.

Page 100: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

A macro szerkezeti felépítése:

azonosító MACRO <paraméter lista>{típus deklaráció}

{funkciók}

ENDM

makró törzs

Page 101: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

Hivatkozás egy makróra:

azonosító <p1, p2,…, pn,>

A makró mindig ugyanazt a feladatot végzi, de a paraméterektől függően más lehet a viselkedése.

Page 102: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

A makró mint objektum :obj_név MACRO <paraméter lista>

<változók definiálása>

met_1met_2

met_n

ENDM

metódusok

(makrók, eljárások, direktívák)

Page 103: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

A makró mint metódus:met_név MACRO

<változók>

{funkció}

ENDM

Page 104: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

Az eljárás mint metódus:

elj_név PROCEDURE

{funkció}

RET

elj_név ENDP

Page 105: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

A direktíva mint metódus:obj_név MACRO <paraméterek>

<változók>

direktíva_1

direktíva_n

ENDM

metódusok

Page 106: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

Az objektum példányai: egy objektumra más paraméterekkel történő hivatkozás révén állíthatók elő.

obj_1 p11, p12, … , p1n

obj_2 p21, p22, … , p2n

obj_m pm1, pm2, … , pmn,

ahol obj_1…obj_m az objektumként használt makró azonosítója, pmn pedig az m-dik paraméter lista n-dik eleme.

Page 107: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

Az öröklődés:obj_1 MACRO <paraméterek>

{makró törzs}ENDM

obj_2 MACRO <paraméterek>

obj_1 <paraméterek>

ENDM

makró törzs

Page 108: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

Feltételes működés: paraméter átadáshoz kötött, eseményvezérelt

működés adatfüggés, megszakítás,

idő pillanathoz kötött, valósidejű működés valósidejű óra, valósidejű operációs rendszer,

feltételes fordítás.

Page 109: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

...és mert valamennyi magas szintű programozási nyelvet Assembly nyelven írtak, minden megvalósítható vele, ami akár PASCAL-ban vagy a C++-ban, akár bármely más, magas szintű programozási nyelvben létezik.

A sebesség nagyobb, a program pedig rövidebb, és a számítógép csak azt fogja csinálni, amit a programozó megír.

Page 110: Objektum-orientált programozás

Objektum-orientált programozás Objektum-orientált programozás macro-assemblymacro-assembly nyelven nyelven

Az Assembly hatékony alkalmazásához alapos rendszertechnikai ismeretek szükségesek.