Az objektum orientált programozás alapjai

Slides:



Advertisements
Hasonló előadás
A kártyanyomtatás fortélyai Csákvári Krisztián Kártya és címke gyártás
Advertisements

Vállalati gazdasági kérdések Pékakadémia2010.április.20.
TÖMÖRÍTÉS. Fogalma A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő. A tömörítési arány függ a fájl típusától,
Az objektum orientált programozás alapjai. A Szoftver krízis  Egy légiirányító szoftver olyan bonyolult, hogy senki sem képes teljesen átlátni.  A szoftvernek.
A szoftver mint komplex rendszer (folyt.) A SunTone módszertan 3 dimenziós osztályozási sémája kifinomultabb osztályozást tesz lehetővé.
1 Az önértékelés mint projekt 6. előadás 1 2 Az előadás tartalmi elemei  A projekt fogalma  A projektek elemei  A projekt szervezete  Projektfázisok.
Informatikai rendszerek általános jellemzői 1.Hierarchikus felépítés Rendszer → alrendszer->... → egyedi komponens 2.Az elemi komponensek halmaza absztrakciófüggő.
Környezeti fenntarthatóság. A KÖRNYEZETI FENNTARTHATÓSÁG JELENTÉSE A HELYI GYAKORLATBAN Nevelőtestületi ülés,
Két nagy múltú szövegszerkesztő összehasonlítása az oktatás szempontjából.
ERASMUS+ DISSZEMINÁCIÓS PLATFORM
Gazdasági informatika - bevezető
Üzleti modell központú fejlesztés
Nagyméretű állományok küldése
DIGITÁLIS VÁSÁRLÁSOK, GENERÁCIÓS KÜLÖNBSÉGEK
A szerkezetátalakítási programban bekövetkezett változások
Adattárház fejlesztés módszertani tapasztalatok a HIFI-ben
Adatbázis normalizálás
WE PROVIDE SOLUTIONS.
Összeállította: Horváth Józsefné
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Programstruktúrák.
Microsoft Office Publisher
Szupergyors Internet Program (SZIP) Jogi akadálymentesítés megvalósítása: Jogalkotással is támogatjuk a fejlesztéseket dr. Pócza András főosztályvezető.
Program utasítássorozat

Programozás III. Gyakorlás.
Háttértárak karbantartása
A cégvezetők problémái az informatikával kapcsolatban
LabVIEW bevezetéstől a feszültség-áram karakterisztikáig Vida Andrea
T.R. Adatbázis-kezelés - Alapfogalmak Adatbázis:
A Hazug paradoxona Minden krétai hazudik. (Mondta egy krétai.)
Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök
Vörös-Gubicza Zsanett képzési referens MKIK
CSOPORT - A minőségellenőrök egy megfelelő csoportja
Algoritmusok és Adatszerkezetek I.
Szervezetfejlesztés II. előadás
Animációk.
Programozás I. 5. gyakorlat.
Nyelvek típusossága.
Adatbázis-kezelés (PL/SQL)
2. Bevezetés A programozásba
Közigazgatási alapvizsga a Probono rendszerben
Az ASP.ADO szakrendszerhez csatlakozó önkormányzatok adattisztítási, migrációs feladatai dr. Kása Brigitta aljegyző Eger,
Rendszerfejlesztés gyakorlat
STRUKTURÁLT SERVEZETEK: funkció, teljesítmény és megbízhatóság
Rendszerfejlesztés gyakorlat
Tilk Bence Konzulens: Dr. Horváth Gábor
Informatikai gyakorlatok 11. évfolyam
Programtervezési minták értelmezése normálformákként
Csomagoló Üzemi optimalizáló és Szimulációs rendszer
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Új pályainformációs eszközök - filmek
TÁRGYI ESZKÖZÖK ELSZÁMOLÁSA
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
Vasbeton falvasalás megadása és ellenőrzése EC2 szerint
A számítógép története
Frappáns novella a szeretetrŐl...
A szállítási probléma.
Binomiális fák elmélete
Faszerkezetű elemek tűzállósági méretezése AxisVM szoftverrel
Az egyén társadalmi integrációja
SQL jogosultság-kezelés
Tájékoztató az EPER pályázati folyamatáról
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Bevezetés Tematika Számonkérés Irodalom
Az MKET új stratégiája – Szolgáltató MKET
LIA Alapítványi Ált. Isk. és Szki. Piliscsabai Tagintézménye
Java alkalmazások 3. Előadás.
Algoritmusok.
OpenBoard Kezelő Tananyag közzététele a KRÉTA rendszerben.
Előadás másolata:

Az objektum orientált programozás alapjai

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.

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

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.

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

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

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

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

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).

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.

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.

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.

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.

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.

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).

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.

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.

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.