Objektum orientált programozás (Object Oriented Programming = OOP)



Hasonló dokumentumok
OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Objektum orientált programozás (Object Oriented Programming = OOP)

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Programozás III. - NGB_IN001_3

Objektum orientált programozás Bevezetés

OOP. Alapelvek Elek Tibor

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Programozási alapismeretek 4.

III. OOP (objektumok, osztályok)

Objektumorientált paradigma

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Programozás módszertan p.1/46

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Objektumorientált szoftverfejlesztés alapjai

Adatstruktúrák, algoritmusok, objektumok

Java programozási nyelv 5. rész Osztályok III.

Adatstruktúrák, algoritmusok, objektumok

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Java programozási nyelv

JAVA PROGRAMOZÁS 2.ELŐADÁS

Már megismert fogalmak áttekintése

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Osztályok. 4. gyakorlat

Objektum Orientált Tervezés

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Szoftver-technológia II. Modulok és OOP. Irodalom

Objektumorientált paradigma és a programfejlesztés

Objektumorientált paradigma és programfejlesztés Bevezető

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Objektum-orientált programozás

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

Java programozási nyelv 4. rész Osztályok II.

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

PROGRAMOZÁS III. 11. évfolyam Informatikai rendszerüzemeltető 2018.

Objektumelvű programozás

C++ programozási nyelv

Java és web programozás

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Interfészek. PPT 2007/2008 tavasz.

C++ programozási nyelv Struktúrák a C++ nyelvben

OOP #14 (referencia-elv)

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal.

Bevezetés, a C++ osztályok. Pere László

Programfejlesztési Modellek

Bevezetés a Python programozási nyelvbe

I. Objektumorientált programozás

C++ programozási nyelv

Programtervezés. Dr. Iványi Péter

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Név: Neptun kód: Pontszám:

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Adatbázis rendszerek. dr. Siki Zoltán

PROGRAMOZÁSMÓDSZERTAN II

Objektumorientált programozás C# nyelven

Adatbázis rendszerek Definíciók:

Objektum orientált alapelvek

Programozási nyelvek Java

Programozási Technológia előadás bevezetés. Előadó: Lengyel Zsolt

Bevezetés. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Szendrei Rudolf. Bevezetés. Szoftvertechnológia

NC program ellenorzo szimulátor fejlesztése objektumorientált módszerrel

Információtartalom vázlata

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Objektumorientált felbontás

Bevezetés a Programozásba II 1. előadás. Szoftverfejlesztés, programozási paradigmák

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

ELTE SAP Excellence Center Oktatóanyag 1

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Bevezetés a programozásba előadás: Alapvető programtervezési elvek

Abstract osztályok és interface-ek. 7-dik gyakorlat

Komponens alapú fejlesztés

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Bevezetés a programozásba előadás: Öröklődés

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Webes alkalmazások fejlesztése

Interfészek. Programozás II. előadás. Szénási Sándor.

SZOFTVERFEJLESZTÉSI TECHNOLÓGIÁK

S01-8 Komponens alapú szoftverfejlesztés 2

Gyakorlati vizsgatevékenység A

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

ContractTray program Leírás

Oktatási segédlet 2014

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

C++ programozási nyelv

Átírás:

Objektum orientált programozás (Object Oriented Programming = OOP) Ajánlott irodalom: Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai Dr. Kondorosi Károly, Dr. László Zoltán, Dr. Szirmay-Kalos László: Objektumorientált szoftverfejlesztés EKF Számítástudományi tanszék OOP_FOLIA_1-1 -

A szoftverkrízis: a szoftverfejlesztés válsága, miszerint egy hagyományos módszer már nem képes az igényeknek megfelelő, minőségi szoftver előállítására. Szoftver minőség Helyesség A szoftver helyes, ha az pontosan a feladat specifikációjában előírt feladatot látja el. Ez elsődleges minőségi követelmény. EKF Számítástudományi tanszék OOP_FOLIA_1-2 -

Hibatűrés A szoftver hibatűrő, ha az abnormális esetekben is a lehetőségekhez képest normálisan működik. A feladat specifikációja például általában nem taglalja a teendőket kevés memória esetére. Ez azonban nem jelentheti azt, hogy ha nincs elég memória, akkor a program minden figyelmeztetés nélkül egyszerűen abortál, félbehagyva az adatfelvitelt és egyéb fontos teendőket Karbantarthatóság, bővíthetőség Egy szoftver karbantartható, ha az könnyen javítható, illetve módosítható. Egy szoftver bővíthető, ha azon az Újabb felhasználói igények könnyen átvezethetők. Rosszul megtervezett program esetén előfordulhat, hogy a program egyik részén elvégzett változtatás követhetetlenül befolyásolja a program egyéb részeit. Csak a könnyen áttekinthető programot tudjuk könnyedén karbantartani, illetve továbbfejleszteni. EKF Számítástudományi tanszék OOP_FOLIA_1-3 -

Újrafelhasználhatóság Egy szoftver újrafelhasználható, ha az, vagy annak részei újabb szoftverekben hasznosíthatók. A fejlesztőknek sokszor kell olyan feladatot megoldaniuk, melyet már egyszer pontosan úgy, vagy hasonlóképpen megoldottak. Érthető, hogy ezeket a már jól bevált, alaposan tesztelt elemeket újra fel szeretnék használni annak érdekében, hogy az új program egyedi részeire koncentrálhassanak. Kompatibilitás Egy szoftver egy másik szoftverrel kompatíbilis, ha azok könnyedén összeépíthetők. Gondoljunk például a rengeteg File- és képformátumra az egyik szoftver csak akkor tudja használni a másik szoftver által előállított adatokat, ha az adatformátumok megfeleltethetők egymásnak. EKF Számítástudományi tanszék OOP_FOLIA_1-4 -

Felhasználóbarátság A szoftver felhasználóbarát, ha kinézete kellemes, használata kényelmes, egyértelmű, logikus, s minden lehetséges módon segíti a felhasználót. Hordozhatóság Egy szoftver hordozható, ha az könnyedén átvihető más hardver, illetve szoftver környezetbe. Hatékonyság A szoftver hatékony, ha az a rendelkezésre álló hardver és szoftver erőforrásokat maximálisan kihasználja, minimálisra csökkentve ezzel a szoftver által igénybe vett memóriát és időt. Ellenőrizhetőség Egy szoftver ellenőrizhető, ha a tesztelési adatok és eljárások könnyedén összeállíthatók. EKF Számítástudományi tanszék OOP_FOLIA_1-5 -

Integritás (sérthetetlenség) A szoftver sérthetetlen, ha a különböző rendszer hibák nem okoznak helyreállíthatatlan hibákat (adatokban, programokban, számítógépbe stb.). Szabványosság A szabvány valamely egyezmény eredményeképpen létrejött, nyilvánosan elérhető definíció. Egy szoftver szabványos, ha az működésében, kinézetében és dokumentálásában megfelel a szabványnak (például FI-re jön a help, a dialógusablakon OK gomb van, és a felhasználói leírás tartalmazza a meg biztonsági előírásokat). EKF Számítástudományi tanszék OOP_FOLIA_1-6 -

Moduláris programozás A modulokon belüli erős összetartás, a modulok között laza kapcsolat. A modulok szintaktikailag jól elkülöníthetőek Modulok közötti kapcsolatok száma minél kevesebb Kicsi interfésze legyen a moduloknak Az interfész legyen egyértelmű és jól definiált Minél nagyobb része legyen zárt és sérthetetlen EKF Számítástudományi tanszék OOP_FOLIA_1-7 -

Struktúrált programozás: Program = adat + algoritmus 60-as években Böhm és Jacopini sejtése: bármely algoritmus leírható az alábbi 3 vezérlési szerkezet véges sokszori alkalmazásával: szekvencia szelekció iteráció A fenti sejtést Mills bizonyította A legkisebb modul az eljárás Az eljárások adatokon dolgoznak, a zártság érdekében megpróbáljuk a globális adatokat minimalizálni. A lokális adatok elvesznek az eljárásból való kilépéskor, ezért az ilyen zártság nem minden esetben megoldás. EKF Számítástudományi tanszék OOP_FOLIA_1-8 -

Objetum orientált programozás: Alan Kay diplomamunkája 1969 Tervek és elképzelések SmallTalk programozási nyelv megtervezése Meglévő eljárásorientált nyelveket bővítik OOP lehetőségekkel (Pascal, C) Új, tisztán OO nyelveket terveznek (Java, C#) EKF Számítástudományi tanszék OOP_FOLIA_1-9 -

Nyelvek osztályozása: Hagyományos nyelvek (C) OOP támogató nyelvek (Pascal, Delphi, C++) Tisztán OOP nyelvek (C#, Java) EKF Számítástudományi tanszék OOP_FOLIA_1-10 -

A valós világ modellezése Absztrakció A valós világ végtelen és bonyolult. Minél mélyebbre megyünk az elemzésében, annál bonyolultabb. A lebontásban tehát valahol meg kell állnunk, illetve szelektálnunk kell. Az absztrakció egy szemléletmód, mellyel a valós világot leegyszerűsítjük úgy, hogy csak a lényegre koncentrálunk. Az egyes objektumoknak csak azon tulajdonságait vesszük figyelembe. melyek a cél elérése érdekében feltétlenül szükségesek. EKF Számítástudományi tanszék OOP_FOLIA_1-11 -

Megkülönböztetés Rengeteg objektum van körülöttünk, melyek mind-mind külön létező, konkrét, egyedi objektumok. Ezeket az objektumokat a számunkra lényeges tulajdonságok alapján próbáljuk megkülönböztetni (piros labda kék labda; én piros labdám Te piros labdád; élő virág, művirág). Előfordulhat persze, hogy két objektum között képtelenek vagyunk különbséget tenni (két hangya), de ez csak a mi gyengeségünk attól még a hangyák nem ugyanazok. EKF Számítástudományi tanszék OOP_FOLIA_1-12 -

Osztályozás Az ember az objektumokat automatikusan rendszerezi, s azokat a számára fontos tulajdonságok alapján kategóriákba. osztályokba sorolja: Ez az objektum ugyanolyan, mint az, tehát ugyanahhoz az osztályhoz tartoznak. (1.3. ábra). Az egy osztályba sorolható objektumokat az osztály példányainak szokás nevezni: Dorka és Csonti kutyák Dorka és Csonti a Kutya osztály példányai; Ricsi és Ropi papagáj ok Ricsi és Ropi a Papagáj osztály példányai. EKF Számítástudományi tanszék OOP_FOLIA_1-13 -

EKF Számítástudományi tanszék OOP_FOLIA_1-14 -

Általánosítás, specializálás Az ember az objektumok között állandóan keresi a hasonlatosságokat alapján bővebb, illetve szűkebb kategóriákat állít fel Ez az objektum olyan, mint az, de rá ez isjellemző... Ez az objektum egy... de... A kutya az egy háziállat, de olyan, melynek négy lába van.,. Az oroszlán az egy vadállat, de van sörénye, és nagyon aranyos. A kutya, a papagáj és az oroszlán állatok. Elza az egy állat. EKF Számítástudományi tanszék OOP_FOLIA_1-15 -

Kapcsolatok felépítése, részekre bontás Az ember az objektumok között állandóan keresi a kapcsolatokat: A mai ebéd: karfiol leves, rakott káposzta és sütemény. A sütemény alkotóelemei a következők: 50 dkg liszt, 10 tojás,... Jancsi és Juliska ismerik egymást. A kutyának van egy feje, egy teste, négy lába és egy farka. A kutya őrzi a házat. EKF Számítástudományi tanszék OOP_FOLIA_1-16 -

Egységbezárás (encapsulation): Az OOP alapelvei az adatok és a hozzájuk tartozó eljárásokat egyetlen egységben kezeljük (objektum-osztály) Az osztály mezői tárolják az információkat A metódusok kommunikálnak a külvilággal Az osztály változóit csak a metódusokon keresztül változtathatjuk meg A valós világ szemléletesebb leírása A feladatok elvégzésének hogyan -ja az objektum belügye. Az objektum belseje sérthetetlen. Az objektummal csak az interfészen keresztül lehet kommunikálni. EKF Számítástudományi tanszék OOP_FOLIA_1-17 -

Öröklés (inheritance) : az objektum-osztályok továbbfejlesztésének lehetősége. Ennek során a származtatott osztály örökli ősétől azok attribútumait, és metódusait, de ezeket bizonyos szabályok mellett újakkal egészítheti ki, és meg is változtathatja Az eredeti osztályt ősosztálynak nevezzük (szülő) Az új, továbbfejlesztett osztályt származtatott osztálynak (gyerek) Egy ősből több leszármaztatott osztályt is készíthetünk Egy származtatott osztálynak Legfeljebb egy szülője lehet (pl.: Pascal, Java, C#) -- öröklődési fa Több szülője is lehet (pl.: C++) -- öröklődési gráf Metódusok törzsét megváltoztathatjuk Mezők neveit, típusait általában nem változtathatjuk meg Új mezőkkel, és metódusokkal egészíthetjük ki az osztályt EKF Számítástudományi tanszék OOP_FOLIA_1-18 -

EKF Számítástudományi tanszék OOP_FOLIA_1-19 -

EKF Számítástudományi tanszék OOP_FOLIA_1-20 -

EKF Számítástudományi tanszék OOP_FOLIA_1-21 -

Sokalakúság (polymorphism) : Ugyanarra a kérelemre a különböző objektumok különbözőképpen reagálnak. a származtatás során az ős osztályok metódusai képesek legyenek az új átdefiniált metódusok használatára újraírás nélkül is Ezt virtuális metódusokon keresztül érhetjük el Egyes nyelvekben minden metódus virtuális (pl.: Java) A metódusoknál külön jelezni kell, melyik a virtuális (pl.: Delphi, C#, C++) EKF Számítástudományi tanszék OOP_FOLIA_1-22 -

Alapfogalmak Osztály: Egy felhasználó által készített típus, mely összetett adatszerkezet - elvileg tartalmazza az adott objektum adatait, és az azokat kezelő eljárásokat. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum felelős feladatainak korrekt elvégzéséért. Objektum: Egy változó, melynek típusa valamely objektumosztály, vagyis az osztály egy példánya. Objektumorientált program Egy OO program egymással kommunikáló objektumok összessége, melyben minden objektumnak megvan a jól meghatározott feladata. EKF Számítástudományi tanszék OOP_FOLIA_1-23 -

Üzenet/kérelem Az objektumokat üzeneteken keresztül kérjük meg különböző feladatok elvégzésére. EKF Számítástudományi tanszék OOP_FOLIA_1-24 -

Felelősség Minden objektumnak megvan a jól meghatározott feladata. Az objektum felelős feladatai elvégzéséért. Attribútum: Az osztály egy mezője, konkrét adattárolási képességű adattagja. Metódus: Olyan eljárás, mely része valamely objektumosztálynak, így az adott osztály attribútumaival végez valamilyen műveletet. Példányosítás: Egy objektumosztályból konkrét objektum készítése (objektum-változó deklarálása) EKF Számítástudományi tanszék OOP_FOLIA_1-25 -

Inicializálás: az objektum attribútumainak kezdőérték beállítása, általánosabban az objektum-példány alaphelyzetbe állítása Adatrejtés (data hiding) Az adatrejtés az egységbezárás alproblémája. Cél: Az objektum képes legyen adatokat tárolni Azokat a külvilág képes legyen lekérdezni és megváltoztatni De csak ellenőrzött módon! Az objektum belvilága -- a saját metódusai. Külvilág (minden más) Távoli külvilág: a példányokat készítő programmodulok (pl. főprogram) Közeli külvilág: az osztály leszármazottjai, s azok metódusai EKF Számítástudományi tanszék OOP_FOLIA_1-26 -

Attribútumokkal kapcsolatos PUBLIC: olyan attribútumok, melyek jellegüknél fogva nem igényelnek speciális szabályozást, azok megváltoztatása nem okoz, nem okozhat problémát az objektum működésében. PRIVATE: a külvilág nem férhet ezen attribútumukhoz hozzá. Ezek általában segédváltozók, segédmezők. PROTECTED: olyan attribútumok, melyekhez a távoli külvilág nem férhet hozzá (számára private), de a közeli külvilág, leszármazott osztályok metódusai hozzáférhetnek (számára public) Metódusokkal kapcsolatos A metódusokhoz való hozzáférést is a fentiek szerint osztályozzuk, de itt az adott metódus meghívhatóságát jelöli: EKF Számítástudományi tanszék OOP_FOLIA_1-27 -

PUBLIC: ezen metódusokat a távoli külvilág meghívhatja PRIVATE: ezen metódusokat a külvilág nem hívhatja meg, csak az adott osztály metódusai hívhatják meg PROTECTED: olyan metódusok, melyeket a távoli külvilág nem hívhat meg (számára private), de a közeli külvilág, a leszármazott osztályok metódusaiból meghívhatóak (számukra public) EKF Számítástudományi tanszék OOP_FOLIA_1-28 -