250 likes | 345 Views
Objektum orientált programozás. Modellezés objektumokkal Nagy Szilvia. Modelltípusok. Objektummodell: az adatokra koncentráló modell; struktúra, attribútumok, metódusok, objektumok közötti kapcsolat leírása osztálydiagrammal:. egerészik a környékén. ház. macska. otthon van benne.
E N D
Objektum orientált programozás Modellezés objektumokkal Nagy Szilvia
Modelltípusok Objektummodell: az adatokra koncentráló modell; struktúra, attribútumok, metódusok, objektumok közötti kapcsolat leírása osztálydiagrammal: egerészik a környékén ház macska otthon van benne
Modelltípusok Dinamikus modell: rögzíti az időbeliséget, a sorrendiséget; a vezérlést és ütemezést leíró modell folyamatábra, kommunikációs diagram vagy állapotdiagram egerészik eszik alszik figyel hízeleg dorombol
Modelltípusok Funkcionális modell: a végrehajtandó funkciókat, adattranszformációkat leíró modell adatfolyam-ábra forrásnyelő helynyilvántartó jegykiadás jegy jegyrendelés mit, mikor hely néző néző pénz számlázás számla számlanyilvántartó
Objektummodell Attribútumok: az objektum tulajdonságait meghatározó, az objektumban tárolt adatok. • számuk és elnevezésük megadja a struktúrát • változó, lehet összetett, de nem lehet objektum • lehet közvetlen adat (változó) vagy referencia (pointer) • az attribútumok lehetőleg egymástól függetlenek legyenek, és teljesen leírják az objektum modell szempontjából fontos tulajdonságait
Objektummodell Attribútumok típusai: • elnevezés típus – név, anyja neve, személyi szám, alvázszám, törzskönyv szám,… általában nem változik, de ha szükséges, kijavítható • leíró jellegű – az objektumok belső jellemzőit írják le, az objektumot ért hatások kimeneteként megváltozhatnak. • referencia típusú – azon attribútumok, amelyek más objektumokba mutatnak
ember név cím kutya név kor anya név cím gyerek név sz. idő Objektummodell Relációk: láncolás: objektumok (példányok) közötti logikai vagy fizikai kapcsolat asszociáció: az osztályok közötti kapcsolat gazdája opcionális szül egy-több 1+
hallgató név Neptun-kód tárgy cím azonosító jegy Objektummodell Relációk: A relációknak is lehetnek attribútumai – az asszociációk is felvehetnek osztály formát felvesz
ember név cím ember név cím Objektummodell Relációk: Azonos osztálybeli példányok közötti szimmetrikus és nem szimmetrikus relációk feladó címzett levelezőtárs levelet küld szerepek
kutya név fajta kor gazda oltás ideje gazda autója Objektummodell Normalizálás: egy objektum szemantikailag összetartozó attribútumokat kell, hogy tartalmazzon. Azaz az adatokat helyesen kell szervezni, ún. normál formák szerint. Egy objektum attribútumaitúgy célszerű megválasztani,hogy azok az objektum egészére vonatkozzanak. inkább a gazda objektumba
Objektummodell Öröklés: olyan implementációs eszköz, amely lehetővé teszi azt, hogy egy osztályból másik osztály származzon. A származtatott osztály rendelkezik az eredeti osztályban definiált attribútumokkal szerkezettel és viselkedéssel. Eredmény: • fogalmi egyszerűsödés • letisztulás, a hasonló osztályok összevonása • korábbi osztálykönyvtárak használata, az osztályok újrahasznosíthatósága
Objektummodell Öröklés: • az az osztály, amelyből örökölnek az alaposztály (superclass), • az az osztály, amelyik örököl a származtatott osztály (subclass) Egy öröklődési sorban ez osztály fölött minden alaposztály az adott osztályunk őse (ancestor) Egy osztályból (akár közvetetten)származtatott osztályok az osztályunk leszármazottai (descendent)
diák név születési idő Neptun-kód sikeres vizsgaszám kor(): int vizsga(s.vizsgaszám) ember név szül. idő kor(): int diák Neptun-kód sikeres vizsgaszám vizsga(s.vizsgaszám) Objektummodell Öröklés: általában az osztály specializálódik, esetleg általánosítjuk. felhasználhatunk absztrakt osztályt az örökléshez absztrakt: nem használjuk másra, nem képződik objektum belőle
ember név szül. idő kor(): int férfi név szül. idő kor(): dátum-szül.idő nő név szül. idő kor(): dátum-szül.idő-x Objektummodell Öröklés: a származtatott metódusok átdefiniálhatók, az új definíció helyettesíti az eredetit. Ilyenkor az eredeti osztályban virtuális (üres) metódusokat definiálunk:
Objektummodell Öröklés: a leszármazott osztályok az ősök valamennyi attribútumát tartalmazza. Lehet az ősőktől örökölt struktúrát megváltoztatni: • új attribútum hozzáadásával • új metódus hozzáadásával • örökölt metódusok átdefiniálásával Fontos, hogy az öröklés során biztosítsuk, hogy az örökölt de átdefiniált metódusok az örökölt attribútumoknak azon részhalmazára képezzenek, amire az eredeti metódusok, azaz …
Objektummodell Öröklés: A metódusok öröklésénél figyelni kell, hogy az ősök szabályait ne sértsük meg. Metódusok kiterjesztése: az átdefiniált metódusok attribútumokra gyakorolt hatása ugyanolyan, mint az ősöknél, csak néhány új dologgal (új attribútumra vonatkozó hatással) bővítjük azt. (téglalap—átlós téglalap)
Objektummodell Öröklés: A metódusok öröklésénél figyelni kell, hogy az ősök szabályait ne sértsük meg. Metódusok szűkítése: az átdefiniált korlátozza a bemeneti paraméterek halmazát. Sem az új, sem az átdefiniált metódusok nem vezethetnek ki a korlátozott attribútumtérből (összeadás—integer összeadás)
Objektummodell Öröklés: A metódusok öröklésénél figyelni kell, hogy az ősök szabályait ne sértsük meg. Metódusok módosítása: az új metódus mind interfész szinten, mind pedig szemantikailag azonos az eredetivel, csak másként van a feladat algoritmizálva, pl a hatékonyság fokozásáért. (egyszerű cserés sorbarendezés—módosított buborékoltató sorbarendezés)
Objektummodell Öröklés: A metódusok öröklésénél figyelni kell, hogy az ősök szabályait ne sértsük meg. Metódusok befolyásolása: a származtatott osztálynak nagyjából olyannak kell lennie mint az ősnek, de nem igazán van logikai összefügés közöttük. A metódusokat át kell definiálni, tekintet nélkül a korábbi feladatra, esetleg az attribútumokkal egészen mást kell csinálni. Nem javasolt!
Objektummodell Többszörös öröklés: olyan új osztály definiálása, amely két, vagy több régi osztály tulajdonságait és metódusait egyesíti magában négyszög trapéz paralelogramma téglalap rombusz
Objektummodell Többszörös öröklés: fontos probléma, hogy egy közös őstől két vagy több ágon ugyanolyan nevű, de máshogy működő metódusokat örökölhetünk, pl. területre: téglalap téglalap::terület oldal1*oldal2 rombusz rombusz::terület átló1*átló2/2 négyzet
Objektummodell Komponensek: a tartalmazás reláció: rész – egész Aminek a része, az a szülő objektum, a részek pedig a gyermekek téglalap b oldal a oldal átló b oldalfelezőpont középpont
Objektummodell Komponensek: a tartalmazás reláció nem szimmetrikus, ha A része B-nek, B nem része A-nak. A szülő bizonyos – de nem minden – attribútumait átveszi a gyermek, de ha a gyermek olyan üzenetet kap, amelyre nem tud reagálni, akkor feljebb utalja a kérést a szülőnek … amíg kompetens objektumra nem talál
Objektummodell Komponens struktúrája: • rögzített: a komponens objektumok típusa száma előre megadott • változó: csak a szintek száma és az objektumok típusa adott, a komponensek száma változhat • rekurzív: az objektum közvetve vagy közvetlen tartal-mazza önmagát program utasitás függvény egyszerű utasítás
Objektummodell Delegálás: egy objektum valamely metódusát úgy valósítjuk meg, hogy egy az objektummal komponens viszonyban álló objektum metódusával hajttatjuk végre a feladatot