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. 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.
A programfejlesztés folyamata A fejlesztés lépései: modellezés, tervezés, implementáció.
A programfejlesztés folyamata Reprezentá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.
A programfejlesztés folyamata A 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.
A programfejlesztés folyamata Vízesésmodell analízis architekturális tervezés részletes tervezés kódolás integrálás tesztelés
A programfejlesztés folyamata Inkrementális fejlesztési modell Első fejlesztési ciklus 1. változat 1. változat 2. változat n. változat 3. változat
A programfejlesztés folyamata Spirál modell Alternatívák értékelése Kockázat elemzés Célok meghatározása Értékelés, új ciklus indítása Megvalósítás, tesztelés
Strukturá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
Az objektum-orientált programozás kialakulása 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.
Az objektum-orientált programozás 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.
Az objektum Minden objektumnak maradéktalanul teljesítenie kell feladatát. A lokális felelősség elve: minden objektum felelős önmagáért.
Az objektum Egy 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 … }
Az objektum A 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.
Az objektum Az 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.
Az 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).
Az objektum Az 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?
Az objektum Egy 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ímzett objektumnak, Metódus: hogyan kell végrehajtani a feladatot.
Az objektum Az 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.
Az objektum A 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 Juliska Piroska objektumok (példányok) osztály
Az objektum Az osztálynak és objektumainak ábrázolása attribútumokkal együtt: tanuló név: text kor: integer (tanuló) Jancsika 7 Juliska 6 Piroska
Az objektum Demeter-törvény Az 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ókra történik hivatkozás.
Az objektum Az 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.
Az objektum Típus ábrázolás állat Vízi_állat madár emlős cet ponty varjú kutya veréb
Az objektum Az 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.
Modellezés objektumokkal 1. 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.
Az objektummodell Attribútumok: az objektum tulajdonságait és állapotát meghatározó objektumban tárolt adatok, melyek lehetnek egyszerű, összetett, közvetlen adatok, referenciák.
Az 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.
Az 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.
Az 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.
Az objektummodell Tö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ódus C_metódus B_metódus B_metódus D_metódus E_metódus E_metódus F_metódus
Az 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.
Az 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.
Dinamikus 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.
Dinamikus 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.
Dinamikus 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
Dinamikus 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
Dinamikus 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.
Dinamikus modellek Az állapotgép működése: 1. állapot 2. állapot do:aktivitás entry/A akció exit/B akció esemx/C akció esemy(attribútum)/[feltétel]/D akció
Dinamikus 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.
A funkcionális modell A 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.
A 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.
A 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.
A 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.
A 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.
A fejlesztés módszere Analí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.
A 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.
A 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”)
A 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élyes használatban
A 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.
A 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.
A 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.
A 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.
A 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.
A 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.
A 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.
A 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.
A fejlesztés módszere Objektumorientá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.
A 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.
A 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.
A 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”.
A 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.
A 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.
A 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.
A 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.
A 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.
A fejlesztés módszere 5. 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.
Objektumok valósidejű rendszerekben A 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.
Objektumok valósidejű rendszerekben Az 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.
Objektumok 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
Objektumok 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).
Objektumok 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,
Objektumok 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.
Objektum-orientált programozás Borland Pascal nyelven A Pascal nyelv jellemzői: objektum típus, metódus, konstruktor és destruktor, öröklődés, sokalakúság.
Objektum-orientált programozás Borland Pascal nyelven Objektum deklarációja: type obj_név=object <adatok> <metódusok> end;
Objektum-orientált programozás Borland Pascal 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;
Objektum-orientált programozás Borland Pascal 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;
Objektum-orientált programozás Borland Pascal 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;
Objektum-orientált programozás Borland Pascal nyelven Konstruktor és destruktor deklarálása: constructor obj_név.Init (size:integer); begin <műveletek> end; destructor obj_név.Done; Megjegyzés: a destruktornak nincs sem típusa, sem argumentuma.
Objektum-orientált programozás Borland Pascal 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>; obj_név3=object (obj_név2) <változók_3>: <típus>; (következő kép)
Objektum-orientált programozás Borland Pascal 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;
Objektum-orientált programozás C++ 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.
Objektum-orientált programozás C++ nyelven Az osztály mint objektum: class osztály { <adatok> <metódusok, konstruktorok, destruktorok> };
Objektum-orientált programozás C++ 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ó };
Objektum-orientált programozás C++ nyelven A struktúra mint objektum: struct obj_név { <adatok> <metódusok> };
Objektum-orientált programozás C++ 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); };
Objektum-orientált programozás C++ 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.
Objektum-orientált programozás C++ nyelven Öröklődés: objektumtípusok között fennálló kapcsolat. Élőlény név, kor Ember +nemzetiség Állat +élőhely Növény az egy általánosít specializál
Objektum-orientált programozás C++ 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.
Objektum-orientált programozás C++ 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} };
Objektum-orientált programozás C++ 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 ( ) ; };
Objektum-orientált programozás C++ 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_j( );
Objektum-orientált programozás C++ 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.
Objektum-orientált programozás C++ 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; } };
Objektum-orientált programozás C++ nyelven Valósidejű óra deklaráiója: class Timer { long time; public: Timer( ) { time=0; } void operator ( ) ( ) { time++; } long Get( ) { return time; } };
Objektum-orientált programozás C++ 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}
… és még egy lehetőség: Objektum-orientált programozás makro-assembly nyelven
Objektum-orientált programozás macro-assembly nyelven Az assembly nyelv rendszerelemei: utasítások, direktívák. Az assembly program strukturális elemei: programok, szubrutinok, makrók.
Objektum-orientált programozás macro-assembly 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.
Objektum-orientált programozás macro-assembly nyelven A macro szerkezeti felépítése: azonosító MACRO <paraméter lista> {típus deklaráció} {funkciók} ENDM makró törzs
Objektum-orientált programozás macro-assembly 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.
Objektum-orientált programozás macro-assembly nyelven A makró mint objektum : obj_név MACRO <paraméter lista> <változók definiálása> met_1 met_2 met_n ENDM metódusok (makrók, eljárások, direktívák)
Objektum-orientált programozás macro-assembly nyelven A makró mint metódus: met_név MACRO <változók> {funkció} ENDM
Objektum-orientált programozás macro-assembly nyelven Az eljárás mint metódus: elj_név PROCEDURE {funkció} RET elj_név ENDP
Objektum-orientált programozás macro-assembly 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
Objektum-orientált programozás macro-assembly 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.
Objektum-orientált programozás macro-assembly nyelven Az öröklődés: obj_1 MACRO <paraméterek> {makró törzs} ENDM obj_2 MACRO <paraméterek> obj_1 <paraméterek> makró törzs
Objektum-orientált programozás macro-assembly 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.
Objektum-orientált programozás macro-assembly 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.
Objektum-orientált programozás macro-assembly nyelven Az Assembly hatékony alkalmazásához alapos rendszertechnikai ismeretek szükségesek.