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

Hasonló dokumentumok
Objektum orientált programozás Bevezetés

OOP. Alapelvek Elek Tibor

Objektumorientált paradigma és a programfejlesztés

Objektum orientált alapelvek

Objektumorientált paradigma és programfejlesztés Bevezető

Objektum orientált software fejlesztés (Bevezetés)

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

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

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

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

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

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

Programozás módszertan p.1/46

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

Programozás III. - NGB_IN001_3

Már megismert fogalmak áttekintése

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

és az instanceof operátor

Programozási alapismeretek 4.

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

Adatbázisrendszerek. adatbázisokban. Objektumorientált és objektum-relációs adatbázisok április 24.

Adatstruktúrák, algoritmusok, objektumok

Interfészek. PPT 2007/2008 tavasz.

10-es Kurzus. OMT modellek és diagramok OMT metodológia. OMT (Object Modelling Technique)

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

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

Objektumorientált szoftverfejlesztés alapjai

Szakterületi modell A fogalmak megjelenítése. 9. fejezet Applying UML and Patterns Craig Larman

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

Programozási technológia 1.

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

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

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

C++ programozási nyelv

S0-02 Típusmodellek (Programozás elmélet)

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

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

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

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

10. előadás. Alapfogalmak. Adatbázisrendszerek előadás november 28.

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

Osztály tervezési szempontok és C++ implementációs ajánlások

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

Fogalmi modellezés. Ontológiák Alkalmazott modellező módszertan (UML)

Adatstruktúrák, algoritmusok, objektumok

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.

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

Méréselmélet MI BSc 1

Programfejlesztési Modellek

SZOFTVERFEJLESZTÉSI TECHNOLÓGIÁK

Adatbázis rendszerek. dr. Siki Zoltán

Programozási nyelvek Java

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

Mérés és modellezés 1

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

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?

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Mérés és modellezés Méréstechnika VM, GM, MM 1

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

Bevezetés a C++ programozási nyelvbe

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

Objektumelvű programozás

Programozási nyelvek Java

C++ programozási nyelv

Számítógép architektúra

UML (Unified Modelling Language)

Objektumorientált programozás C# nyelven

Objektum-orientált programozás

Enterprise JavaBeans 1.4 platform (EJB 2.0)

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

Objektumorientált paradigma

Komponens alapú programozás Bevezetés

Programozási technológia

Osztály öröklődés. Öröklődés és polimorfizmus. Programozás II. előadás. Szénási Sándor.

OOP: Java 8.Gy: Abstract osztályok, interfészek

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

Programozási nyelvek Java

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

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

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

OO rendszerek jellemzői

Az informatika kulcsfogalmai

Java VII. Polimorfizmus a Java nyelvben

Objektumorientáció, objektumorientált szemlélet

Adatszerkezetek 2. Dr. Iványi Péter

Java VII. Polimorfizmus a Java nyelvben

Termék modell. Definíció:

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

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

I. Objektumorientált programozás

Programozás 1. 2.gyakorlat

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

Virtuális függvények (late binding)

Öröklés és Polimorfizmus

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

Szoftver újrafelhasználás

Kölcsönhatás diagramok

S01-7 Komponens alapú szoftverfejlesztés 1

Átírás:

Objektum orientált programozás Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 03. 04. OOPALAP / 1 A program készítés Absztrakciós folyamat, amelyben a valós világban létező jelenséget (megoldandó problémát) valamilyen programozási eszköz absztrakciós szintjén képezünk le. A munka nehézsége függ a leképezendő jelenség/folyamat bonyolultságától (komplexitásától) a valóság és a programozási eszköz absztrakciós szintjének különbözőségétől ("távolságától") Objektum orientált programozás (Bevezetés) OOPALAP / 2 Absztrakció A idegen szavak szótára (Akadémiai Kiadó) szerint: absztrakció lat 1. elvonatkoztatás, elvonás; a leglényegesebb tulajdonságok kiemelése és általánosítása 2. elvont fogalom Objektum orientált programozás (Bevezetés) OOPALAP / 3

Programozási nyelvek A programozási eszközök absztrakciós szintjei különbözőek: assembly: az adott számítógép architektúra instrukciókészletének leképezése funkcionális (imperatív) nyelvek: adatszerkezetek és algoritmusok absztrakciós szintje. Közel állnak ezek a valóság fogalmaihoz? (Sajna nem... ) objektum orientált nyelvek: együttműködő objektumok absztrakciós szintje. Léteznek a valóságban ezek? (IGEN!!!) Objektum orientált programozás (Bevezetés) OOPALAP / 4 A programozás s mint modellkész szítés A programkészítés egy másik megközelítése Program: a valós világ egy szeletének működő modellje Ebben a szemléletben a valós világ egy absztrakt modelljét (analízis modell) kell leképezni egy programozási eszközre. Ezt a folyamatot megkönnyíti az, ha az analízis modell elemei könnyen leképezhetők nyelvi elemekre. Objektum orientált programozás (Bevezetés) OOPALAP / 5 Az objektum orientált programozás s (OOP) szemlélete lete Az analízis modell elkészítése során a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Objektum orientált programozás (Bevezetés) OOPALAP / 6

A természetes objektumok jellemzői egyéniség (különállás) struktúra (adatok) viselkedés (más objektumokkal való kapcsolata) állapot (adatainak aktuális értéke) Objektum orientált programozás (Bevezetés) OOPALAP / 7 Természetes objektumok: példap Elég bonyolult struktúrájú, számos viselkedés formára képes objektum. A vér alkoholszintje, mint adat a struktúrájához tartozik Az alkoholszint pillanatnyi értéke az állapothoz tartozik Egyes viselkedésformák (pl. sört iszik) módosíthatják az állapotot Más viselkedésformák működését (pl. járás) az aktuális állapot befolyásolhatja Objektum orientált programozás (Bevezetés) OOPALAP / 8 A természetes objektumok jellemzői Az objektum: egyediséggel rendelkező diszkrét entitás jellemzői: attribútumok, műveletek attribútum együttes: objektum állapot, ennek időbeli változása az objektum viselkedése műveletek(operations): ezek modellezik az objektum viselkedését. Objektum orientált programozás (Bevezetés) OOPALAP / 9

Objektumtól l objektumig A valós világ egy eleme Absztrakció Nyelvi elem Valós objektum Absztrakció és/vagy formális leírás Absztrakt adattípus Megvalósítása vmely programozá eszközzel (Implementáció) Osztály Példány létrehozása (Deklaráció) Nyelvi elem Objektum Objektum Objektum 1. 2. 3. Objektum orientált programozás (Bevezetés) OOPALAP / 10 Objektumtól l objektumig: 1. szint Tanulmányozzuk a valós objektumokat, és megkeressük azoknak a probléma megoldása szempontjából fontos adatai és viselkedésmintáit. (Az absztrakció definíciójából a "leglényegesebb tulajdonságok kiemelése".) Például a objektumnak a Neptun szempontjából lényegtelen az alkoholszintje, de lényeges, hogy melyik tanszéken dolgozik. Objektum orientált programozás (Bevezetés) OOPALAP / 11 Objektumtól l objektumig: 1. szint (folyt.) Ezután megkeressük azon objektumcsoportokat, amelyek azonos adatokkal és viselkedésmintákkal rendelkeznek, és elnevezzük ezt a csoportot. (Az absztrakció definíciójából az "általánosítás".) Így jön létre a Neptun szempontjából az "oktató" fogalom. Objektum orientált programozás (Bevezetés) OOPALAP / 12

Objektumtól l objektumig A valós világ egy eleme Absztrakció Nyelvi elem Valós objektum Absztrakció és/vagy formális leírás Absztrakt adattípus Megvalósítása vmely programozá eszközzel (Implementáció) Osztály Példány létrehozása (Deklaráció) Nyelvi elem Objektum Objektum Objektum 1. 2. 3. Objektum orientált programozás (Bevezetés) OOPALAP / 13 Objektumtól l objektumig: 2. szint Az előzőleg definiált fogalom leképezése egy programozási eszközre (osztálydefiníció elkészítése). Ez valójában egy minta a program működéséhez szükséges objektumok létrehozására. Például a Neptun szempontjából egy oktatónak vannak lényeges adatai (neve, tanszéke, minősítése stb.) és vannak lehetséges viselkedésformái (kurzust hirdethet meg, vizsgaidőpontot írhat ki, jegyet adhat stb., de például nem nézheti meg egy hallgató adószámát.) Objektum orientált programozás (Bevezetés) OOPALAP / 14 Objektumtól l objektumig A valós világ egy eleme Absztrakció Nyelvi elem Valós objektum Absztrakció és/vagy formális leírás Absztrakt adattípus Megvalósítása vmely programozá eszközzel (Implementáció) Osztály Példány létrehozása (Deklaráció) Nyelvi elem Objektum Objektum Objektum 1. 2. 3. Objektum orientált programozás (Bevezetés) OOPALAP / 15

Objektumtól l objektumig: 3. szint Akkor és annyi objektumot kell létrehozni a program futása során, amelyek együttműködve képesek a valóságot modellezni. Például amikor oktató be akarja írni Kisházi Brünhilda hallgatónak a GEIAL214N kurzus vizsgájához tartozó jeles vizsgajegyet, akkor Létrejön egy oktató típusú objektum adataival, egy vizsgaalkalom típusú objektum a megfelelő adatokkal, és egy hallgató típusú objektum Kisházi Brünhilda adataival. A objektum üzen a vizsgaalkalom objektumnak, megadva a hallgató nevét és jegyét, aki (ellenőrzések után) egy üzenetet küld a hallgató objektumnak, megváltoztatva ezzel az állapotát. Objektum orientált programozás (Bevezetés) OOPALAP / 16 Az objektum orientált programozás alapelvei 1. Osztály (class) 2. Objektum (object) 3. Egységbezárás (encapsulation) 4. Információ rejtés (information hiding) 5. Üzenet (message) 6. Öröklődés (inheritance) 7. Polimorfizmus (polymorphism) Objektum orientált programozás (Bevezetés) OOPALAP / 17 Az objektum orientált programozás alapelvei Osztály, amelynek részei: adatok (az attribútumok modellezésére) módszerek (a műveletek modellezésére). Objektumok közös tulajdonságait definiálja. Programozás technikai szempontból egy típus. Objektum orientált programozás (Bevezetés) OOPALAP / 18

Objektum Egy osztály egy működőképes példánya. Egy adott osztályban definiált tulajdonságokkal tetszőleges számú objektum példányosítható. Minden objektum természeténél fogva különbözik az összes többitől. Egy adott osztályból példányosított valamennyi objektumnak ugyanolyan lehetséges viselkedés módjai (műveletei) vannak, de saját állapotuk van. Objektum orientált programozás (Bevezetés) OOPALAP / 19 Egységbezárás: Az osztály az adatait és a módszereket egy egységgé teszi. az adatok és a módszerek lokálisak a módszerek hozzáférhetnek az adatokhoz Objektum orientált programozás (Bevezetés) OOPALAP / 20 Információ rejtés: Egy objektum adatai a külvilág (más objektumok) számára hozzáférhetetlenek. Egy objektum a külvilággal csak az interface-én keresztül tarthatja a kapcsolatot. Interface: a külvilág számára elérhető módszerek együttese. A módszerek implementációja rejtett. Objektum orientált programozás (Bevezetés) OOPALAP / 21

Üzenet Az objektummal való kommunikáció módja. A módszerek aktivizálását (invocation) jelenti. Objektum orientált programozás (Bevezetés) OOPALAP / 22 Öröklődés Hierachikus kapcsolat(rendszer). A leszármazott osztály örökli az ős osztály adatait és módszereit. Az örökölt módszereket felül definiálhatja a maga számára. Új (saját, csak rá jellemző) adatokat és módszereket definiálhat. Egy leszármazott osztály csak bővítheti, pontosíthatja az őst, de nem utasíthat el örökölt adatokat vagy módszereket. Objektum orientált programozás (Bevezetés) OOPALAP / 23 Polimorfizmus (többalakúság) Bizonyos elemek viselkedése attól a környezettől függ, amelyben alkalmazzuk. A gyakorlatban ez azt jelenti, hogy egy nyelvi elem (például egy kódrészlet) attól függően, hogy hol alkalmazzuk, más-más működést eredményezhet. Objektum orientált programozás (Bevezetés) OOPALAP / 24

Az objektum orientált program Egymással kommunikáló objektumok halmaza működés: üzenetváltások struktúra: osztályok és objektumok közötti kapcsolatok Objektum orientált programozás (Bevezetés) OOPALAP / 25 Az objektum orientált programkész szítés folyamata A probléma leírásában keressük az objektumokat Objektum csoportok közös tulajdonságait osztályokkal írjuk le Megkeressük az osztályok kapcsolatait Az osztályokat és kapcsolataikat implementáljuk egy programozási eszközzel Objektum orientált programozás (Bevezetés) OOPALAP / 26 Az objektum orientált programkész szítés folyamata Létrehozzuk a megfelelő példányokat (objektumokat) a megfelelő időben, és megoldjuk a kommunikációjukat. Az implementációhoz általában szükségünk van az eredeti probléma objektumain túl technikai szerepű osztályokra / objektumokra is, például adatszerkezetek kezelésére (tömb, stb) vezérlési feladatok megoldására megjelenítési feladatok megoldására stb. Objektum orientált programozás (Bevezetés) OOPALAP / 27

Objektum orientált programozási nyelvek Nagyon sok van, számos integrált fejlesztő eszközzel. Az első sikeres: Smalltalk Legelterjedtebbek: C++ Java C# ObjectPascal (főleg a Delphi fejlesztőeszköz miatt) Python PHP stb... Objektum orientált programozás (Bevezetés) OOPALAP / 28