Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Az objektum orientált programozás alapjai

Hasonló előadás


Az előadások a következő témára: "Az objektum orientált programozás alapjai"— Előadás másolata:

1 Az objektum orientált programozás alapjai

2 Előzmények: Monolitikus programozás:
A 60-as években a számítógépek elterjedésével megnőtt az igény a programok gyors fejlesztése iránt. Egy programot általában egy ember írt meg, ezért a programozási idő csökkentése miatt nem készítettek használható dokumentációt. A fő probléma: ezeknek a programoknak nem volt átlátható a szerkezete. Kialakult a szoftverkrízis, a programozók nem tudták kielégíteni az igényeket, sem mennyiségben, sem minőségben. Az első időkben problémát jelentett, hogy ilyen programozási stílushoz nem voltak megfelelő eszközök. A Fortran, a PL/I nem biztosított megfelelő lelhetőségeket.

3 Moduláris programozás:
Eljárások, függvények lokális változók megjelenése Részproblémákra lehet osztani a programot. A részproblémákat még apróbb részproblémákra kell osztani, míg végül elérünk egy olyan szintet, amelyen a probléma megoldása már könnyen kódolható Több részproblémán több ember is dolgozhat Egy új feladat a meglévő modulok új kombinációjával megoldható Könnyebbé válik a javítás, módosítás

4 Strukturált programozás
Mills bebizonyítja, hogy minden program felépíthető a 3 vezérlési szerkezet felhasználásával: Szekvencia Szelekció Iteráció A feltétel nélküli vezérlésátadás, a GOTO nem szerepel benne! Így jól áttekinthető, könnyen nyomon követhető programot tudunk írni Wirth a strukturált programozás lekövetésére hozza létre a Pascal-t.

5 Objektumorientált programozás -- OOP
1972-ben Alan Kay megtervezi a SmallTalk programozási nyelvet, amely az első és máig is létező objektumorientált programozási nyelv napjainkban is készülnek újabb és újabb változatai

6 Objektumorientált programozási nyelvek:
1980-as évektől az OOP az aktuális programozási filozófia. Több nyelv is megteremtette a lehetőséget az objektumorientált programozásra. Azonban el kell különíteni a tisztán OOP nyelveket azoktól, amelyekben a szokásos eljárásorientált programozás az alapvető, az objektumorientált programozás csak egy új eszköz, egy lehetőség, amit az alapdolgokon felül lehet használni. Néhány tisztán OOP nyelv: Smalltalk Eiffel

7 Nyelvek OOP eszközökkel kiegészítve:
C++ Turbo Pascal Object Pascal OOP Cobol Objective PL/1 Java Objektumorientált fejlesztőeszközök Delphi VisualAge Visual C++ CLOS JBuilder

8 Az OOP fő fogalmai: Egységbezárás Osztály, objektum Adatrejtés
Öröklődés Többalakúság Korai kötés, késői kötés

9 Az egységbezárás (encapsulation):
Metódusok: Az objektum orientált programozásban az eljárásokat és függvényeket összefoglaló néven metódusoknak nevezzük. Az adatokat, és a hozzájuk tartozó metódusokat egy egységként kezeljük. Ezek együtt képeznek egy objektumot. Egy objektumnak vannak attribútumai: adatelemekből áll, ezek az adatelemek valamilyen szerkezetet alkotnak és meghatározzák az objektum pillanatnyi állapotát (pl: egy ablak mérete, színe), és az objektumnak vannak metódusai, amelyek műveleteket tudnak végezni az objektum adatain (pl.: kattintás egy gombon).

10 Osztály, objektum (class, object):
Az azonos attribútumokkal és metódusokkal rendelkező objektumok együttese az osztály. A programozás során nem az objektumokat (objektum példányokat) hozzuk létre először, hanem az osztályokat definiáljuk, a meglévő osztályokból hozzuk létre az objektumpéldányokat. Tehát az adatok és a metódusok elsődlegesen az osztályhoz kötődnek. Amikor definiálunk egy osztályt, akkor megmondjuk, hogy annak az osztálynak milyen változói lesznek, és ezeket a változókat milyen metódusok kezelik.

11 Ezek után létrehozhatunk ebből az osztályból egy vagy több objektumot (példányt),
ezek mindegyike külön-külön tartalmazni fogja az osztályban deklarált adatszerkezetet és a hozzájuk tartozó metódusokat. Hasonló ehhez a Pascalban a típusdeklaráció és a változódeklaráció. Az osztály feleltethető meg a típusnak, a példány pedig a változónak.

12 Az adatrejtés: A metódusok implementációs része nem látszik kívülről, csak a specifikáció. Sőt, létezhetnek olyan metódusok is, amelyek egyáltalán nem látszódnak kívülről. Az adatok és metódusok lehetnek publikusak- ilyenor egy másik objektumból is tudjuk ezeket kezelni - , vagy lokálisak - ilyenkor csak az adott objektumon belül tudjuk őket elérni. Az utóbbiak el vannak rejtve a külvilág elől.

13 Az öröklődés (inheritance):
Egy definiált osztályból származtathatok egy másik osztályt úgy, hogy a leszármazott osztályban (alosztály) ugyanúgy megtalálható az ősosztály (szülőosztály, szuperosztály) összes attribútuma és metódusa. Az így létrehozott alosztály szintén lehet újabb osztálynak az őse. Örökléssel kapcsolatot teremtünk két osztály között: az alosztály bővebb, mint a szülőosztály, mert az alosztály tartalmaz mindent, amit a szülőosztály és ezen felül még tartalmazhat mást is, amiket ebben az osztályban definiálunk.

14 A programozó feladata annyi,
hogy megkeressük a konkrét probléma megoldásához felhasználható osztályokat, és azokból újakat származtatva kiegészítse a szükséges attribútumokkal és metódusokkal a célnak megfelelően. Ez a kód újrafelhasználhatóságát jelenti, annak egy nagyon hatékony módszere.

15 A többalakúság (polimorphism):
Ha származtatunk egy alosztályt, akkor ez az alosztály örökli az ős összes metódusát. Ezeket a metódusokat megváltoztathatjuk, de a nevük ugyanaz marad: ugyanannak a metódusnak más-más osztályban más a viselkedése. Ha nem akarunk egy metódust megváltoztatni, akkor nem kell az alosztály deklarációjában felsorolni, ebben az esetben ez a metódus ugyanúgy fog viselkedni ebben az osztályban is, mint a szuperosztályban (ős sosztályban).

16 Ha az alosztály egy példányánál hivatkozunk egy metódusra akkor két eset lehetséges:
Ha a metódus szerepel az osztály deklarációjában, akkor egyértelmű, hogy az fog végrehajtódni. Ha a metódus nem szerepel az osztály deklarációjában, akkor ez egy örökölt metódus, az öröklődési gráfban kell visszafelé megkeresni, hogy melyik szuperosztálynál történt a deklaráció, és az ott leírt kódot kell végrehajtani.

17 Korai kötés: Vannak statikus metódusok, amelyek címe már a fordításkor belekerül a lefordított kódba, ezt korai kötésnek hívjuk (early binding). Ebben az esetben az ősosztálynál leírt metódus az ősosztálybeli metódust hívja.

18 Késői kötés: Ha a egy metódust virtuálisnak deklarálunk, akkor a fordító a metódusra való hivatkozáskor nem fordítja a kódba a metódus címét, hanem futásidőben megnézi, hogy melyik osztálytól jutott el az épp aktuális osztály kódjáig, és a hívó (tehát a leszármazott) osztály virtuális metódusát fogja végrehajtani. Ezt, a futásidőben történő összerendelést késői kötésnek vagy késői összerendelésnek (late binding) nevezzük. Ezzel elérhető, hogy egy korábban definiált metódus olyasvalamit fog csinálni, amit csak egy későbbi osztályban írunk meg.


Letölteni ppt "Az objektum orientált programozás alapjai"

Hasonló előadás


Google Hirdetések