Full Transcript

3. OOP Programozási paradigma: Programozási mód. Alapvetően a program felépítésére használt eszközkészletet jelenti, vagyis milyen egységek képezik a program alkotóelemeit. Objektumorientált paradigma (OOP) • Objektumorientált paradigma a programnyelvek széles körében elterjedt: Cél: minden adat és...

3. OOP Programozási paradigma: Programozási mód. Alapvetően a program felépítésére használt eszközkészletet jelenti, vagyis milyen egységek képezik a program alkotóelemeit. Objektumorientált paradigma (OOP) • Objektumorientált paradigma a programnyelvek széles körében elterjedt: Cél: minden adat és hozzá tartozó funkció egy helyen jelenjen meg! Olyan programozási paradigma, amely a programokat objektumokból építi fel. A program működése tulajdonképpen objektumok kommunikációját jelenti. Legfontosabb alapelvei: egységbezárás, öröklődés, polimorfizmus. – Modularizáltság jellemzi (adat dekompozíció) – Áttekinthető, karbantartható – Gyorsabban és biztonságosabban érhetünk célt a szoftverfejlesztés (nagy rendszerek) területén – Újrafelhasználhatóságot támogatja Osztály (class): Az osztály egy felhasználói típus, amelynek alapján példányok (objektumok)hozhatók létre. Az osztály alapvetően adat és metódus (művelet) definíciókat tartalmaz. Az osztályok egyfajta mintát vagy sablont adnak az objektumokhoz.(élőlény) Objektum (object): (ember) Az objektum adatokkal rendelkező entitás, amely a benne tárolt adatok felhasználásával feladatokat hajt végre és egyéb objektumokkal kommunikál. Az objektum adatait mezőknek, a hozzátartozó algoritmusokat pedig metódusoknak nevezzük. Az objektum állapotát a mezőinek aktuális értéke határozza meg. A viselkedését pedig az általa ismert metódusok határozzák meg. Objektum viselkedése: Az objektum állapota időben módosul(hat). Módszerek csoportjai: − le tudja kérdezni az objektum állapotát − meg tudja változtatni az objektum állapotát Objektumok élettartama: Az objektumot létre kell hozni, és addig él, amíg meg nem szűnik. A megszüntetés lehet a nyelvi rendszer feladata, vagy a programozóé. Az objektumazonosító minden szinten él, mindig léteznie kell. Példány (instance): (fekete ember) Példányosításnak nevezzük azt a folyamatot amely során az osztály alapján létrehozok egy objektumot. − Az adott objektum adott osztály példánya. Minden objektum tudja, hogy melyik osztálynak példánya. − Adott osztályhoz tartozó minden példány ugyanolyan attribútumokkal és módszerekkel rendelkezik. − Példány létrehozása: ugyanaz az adatszerkezet újra és újra megjelenik a tárban. A módszereket nem többszörözi! − Osztályattribútum: hány darab példánya van (az osztály kiterjedése). − Az osztályattribútumok nem többszöröződnek. Az OO szemlélet szerint először létre kell hozni egy osztályt, leírni, hogy a hozzá tartozó objektumoknak milyen attribútumai és módszerei legyenek. És ezek után az osztályhoz kapcsolódóan és osztályon belül létre lehet hozni objektumokat. Példányosítás után az osztály példányairól beszélünk. Öröklődés (inheritance): (fekete ember szabo patrik 2m magas) Öröklődésnek nevezzük azt a mechanizmust amely során egy objektumot, vagy osztályt alapjául választunk egy másik objektumnak vagy osztálynak, megtartva annak hasonló implementációit. Tehát az alosztály átveszi a szuperosztály attribútumait és módszereit. A konstruktorok és destruktorok nem kerülnek öröklődésre. Az alosztályok lehetővé teszik az örökölt tulajdonságok mellett: -új attribútumok bevezetését -új módszerek bevezetését -attribútumok törlését, átnevezését, duplikációját stb. Beszélhetünk egyszeres és többszörös öröklődésről: -egyszeres: egy alosztálynak egyetlen szuperosztálya lehet. -többszörös: egy alosztálynak akárhány szuperosztálya lehet Oszályhierarchiának nevezzük az egymásból öröklődött osztályok hierarchikus rendszerét Egyszeres öröklődés esetén egy fa szerkezet, többszörös öröklődés esetén pedig egy ciklikus gráf szerkezetről beszélünk. Polimorfizmus (polimorphism): vagyis többalakúság. Kétfajta polimorfizmus van: − Objektum polimorfizmus: Minden objektum tudja saját magáról, hogy melyik osztály példányaként jött létre. Egy objektum objektuma saját osztályának, de az öröklődési hierarchiában objektuma valamennyi elődosztálynak is egyben. Így minden egyes objektum szerepelhet minden olyan szituációban, ahol az ősosztály objektuma szerepelhet, nem csak a saját osztálya példányaként használható. − Módszerpolimorfizmus (overriding): Egy leszármazott osztály egy örökölt módszert újraimplementálhat: a módszer specifikációja változatlan marad, de az implementáció más lehet az öröklődési vonalon. Metódus túlterhelés ( overloading ): Egy osztályon belül lehet több ugyanolyan nevű metódus is, ha a paraméterlistájuk különbözik – ezt hívjuk túlterhelésnek (overloading). A fordító a paraméterlista szerint tesz különbséget az azonos nevű metódusok között. Bezárás (encapsulation): Az OO nyelvek legkényesebb fogalma: általában e fogalom mentén válnak el az iskolák, attól függően, hogy melyik mit vall róla. Az eljárásorientált nyelvek hatáskör fogalmának, a láthatóságnak a kiterjesztése. A legtöbbet félreértelmezett fogalom. Nem objektumhoz kapcsolódik. − Bezárás_1: Nem objektumhoz kötődik. Az osztály egy absztrakt adattípus. Az osztály rendelkezik egy interfész és implementációs résszel. Az osztály objektumaihoz csak az interfész részen keresztül férhetünk hozzá, az implementációhoz egyáltalán nem, korlátozott hozáférést jelent. Ez az információrejtés elve (Information hiding). Egy osztály objektumai egy az osztály által definiált interfészen keresztül érhetők el, és csak így! A nyelv a benne definiált attributumokat és metódusokat két részre osztja: − Nyilvános rész: amelybe tartozó eszközöket minden kliens osztály lát. − Privát rész: kívülről nem látható. − Bezárás_2: A bezárás eljárásorientált nyelvek hatáskör fogalmának általánosítása OO körökben, ahol garantáltan létezik egy olyan eszközrendszer, mellyel a programozó tudja szabályozni, hogy az osztályból mi látható és ki számára. Absztrakt osztályok: Absztrakt osztályoknak hívjuk azokat az osztályokat, amelyeknek nincsenek példányaik, amelyek nem példányosíthatók. Csak örököltetésre való. Beszélnek nyelvek absztrakt módszerekről. Ezek azok a módszerek, amelyeknek csak a specifikációjuk van megadva implementáció nélkül. Az abszrakt osztályokból konkrét, példányosítható osztályok származtathatók. Az egész eszközrendszer az absztrakciót szolgálja. A rendszerfejlesztési ciklusban és a programfejlesztésnél lesz érdekes. nincs példánya öröklődés metódusok implementálása Interfészek: Speciálisan JAVA eszköz. Az interfész egy speciális referenciatípus, amely konstans adatttagokat és módszer specifikációkat tartalmaz. Az interfész nem objektum. A célja az absztrakciós szint növelése. Úgy tudunk problémát megoldani, hogy az implementációt nem adjuk meg. Programfejlesztés közben behozok egy absztrakciós szintet, amikor a specifikációval foglalkozom, és az implementációval nem. Az interfészek között is értelmezhető az öröklődés, méghozzá többszörös. Közös ősinterfész nincs, tehát a programfejlesztés folyamán interfész hierarchia-gráfok építhetők fel. Az interfészek implementációját mindig egy osztály végzi teljes mértékben. Az interfészt teljes mértékben implementálnia kell az osztálynak. Tehát az interfész hierarchia alján mindig osztályok állnak. Egy osztály tetszőleges számú interfészt implementálhat. Az interfészek által jelenik meg a többszörös implicit öröklődés a Javaban. Az interfész, mint referencia típus mindenütt szerepelhet, ahol az osztály, mint típus szerepelhet. Lehet vele változókat, tagokat definiálni, és formális paramétereket leírni. Az így definiált eszköz egy olyan referenciát kaphat értékül, amelynek a típusa egy olyan osztály, amely az adott interfészt közvetve vagy közvetlenül implementálja. Típustagok: • Public: Minden metódus használhatja akár objektumból, akár öröklésen keresztül – A kívülről „látható” felület • Protected: Az osztály saját metódusai férhetnek hozzá + hozzáférés öröklésen keresztül • Private: Az osztály privát deklarációja, csak az osztály saját metódusai férhetnek hozzá

Use Quizgecko on...
Browser
Browser