objektum orientált programozás...

28
Ficsor Lajos OOPALAP / 1 Objektum orient Objektum orient á á lt programoz lt programoz á á s s Bevezet Bevezet é é s s Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 03. 04.

Upload: others

Post on 14-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos OOPALAP / 1

Objektum orientObjektum orientáált programozlt programozáássBevezetBevezetééss

Ficsor LajosMiskolci Egyetem

Általános Informatikai TanszékUtolsó módosítás: 2008. 03. 04.

Page 2: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 2

A program A program kkéészszííttééss• 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")

Page 3: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 3

AbsztrakciAbsztrakcióó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

Page 4: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 4

ProgramozProgramozáási nyelveksi nyelvekA 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!!!)

Page 5: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 5

A programozA programozáás mint modellks mint modellkéészszííttééssA programkészítés egy másik megközelítéseProgram:• a valós világ egy szeletének működő modelljeEbben 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.

Page 6: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 6

Az objektum orientAz objektum orientáált programozlt programozáás (OOP) s (OOP) szemlszemlééletelete

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.

Page 7: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 7

A termA terméészetes objektumok jellemzszetes objektumok jellemzőőii

• egyéniség (különállás)

• struktúra (adatok)

• viselkedés (más objektumokkal való kapcsolata)

• állapot (adatainak aktuális értéke)

Page 8: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 8

TermTerméészetes objektumok: pszetes objektumok: pééldaldaFicsor Lajos• 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

Page 9: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 9

A termA terméészetes objektumok jellemzszetes objektumok jellemzőőiiAz objektum: egyediséggel rendelkező diszkrét

entitásjellemzői: attribútumok, műveletekattribútum együttes: objektum állapot, ennek időbeli

változása az objektum viselkedéseműveletek(operations): ezek modellezik az objektum

viselkedését.

Page 10: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 10

ObjektumtObjektumtóól objektumigl objektumigValós objektum

Absztrakt adattípus

Osztály

Objektum Objektum Objektum

A valós világegy eleme

Absztrakció és/vagyformális leírás

Absztrakció

Megvalósítása vmely programozáeszközzel (Implementáció)

Példány létrehozása(Deklaráció)

Nyelvi elem

Nyelvi elem

1.

2.

3.

Page 11: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 11

ObjektumtObjektumtóól objektumig: 1. szintl 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 Ficsor Lajos objektumnak a Neptun

szempontjából lényegtelen az alkoholszintje, de lényeges, hogy melyik tanszéken dolgozik.

Page 12: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 12

ObjektumtObjektumtóól objektumig: 1. szint (folyt.)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.

Page 13: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 13

ObjektumtObjektumtóól objektumigl objektumigValós objektum

Absztrakt adattípus

Osztály

Objektum Objektum Objektum

A valós világegy eleme

Absztrakció és/vagyformális leírás

Absztrakció

Megvalósítása vmely programozáeszközzel (Implementáció)

Példány létrehozása(Deklaráció)

Nyelvi elem

Nyelvi elem

1.

2.

3.

Page 14: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 14

ObjektumtObjektumtóól objektumig: 2. szintl 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.)

Page 15: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 15

ObjektumtObjektumtóól objektumigl objektumigValós objektum

Absztrakt adattípus

Osztály

Objektum Objektum Objektum

A valós világegy eleme

Absztrakció és/vagyformális leírás

Absztrakció

Megvalósítása vmely programozáeszközzel (Implementáció)

Példány létrehozása(Deklaráció)

Nyelvi elem

Nyelvi elem

1.

2.

3.

Page 16: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 16

ObjektumtObjektumtóól objektumig: 3. szintl 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 Ficsor Lajos 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 Ficsor Lajos adataival, egy vizsgaalkalom típusú objektum a megfelelő adatokkal, és egy hallgató típusú objektum Kisházi Brünhilda adataival.

• A Ficsor 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.

Page 17: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 17

Az objektum orientAz objektum orientáált programozlt programozáás s alapelveialapelvei

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)

Page 18: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 18

Az objektum orientAz objektum orientáált programozlt programozáás s alapelveialapelvei

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.

Page 19: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 19

alapelvek (folyt.)alapelvek (folyt.)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.

Page 20: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 20

alapelvek (folyt.)alapelvek (folyt.)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

Page 21: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 21

alapelvek (folyt.)alapelvek (folyt.)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.

Page 22: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 22

alapelvek (folyt.)alapelvek (folyt.)Üzenet• Az objektummal való kommunikáció módja.• A módszerek aktivizálását (invocation) jelenti.

Page 23: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 23

alapelvek (folyt.)alapelvek (folyt.)Ö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.

Page 24: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 24

alapelvek (folyt.)alapelvek (folyt.)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.

Page 25: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 25

Az objektum orientAz objektum orientáált programlt programEgymással kommunikáló objektumok halmaza• működés: üzenetváltások• struktúra: osztályok és objektumok közötti

kapcsolatok

Page 26: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 26

Az objektum orientAz objektum orientáált programklt programkéészszííttéés s folyamatafolyamata

• 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

Page 27: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 27

Az objektum orientAz objektum orientáált programklt programkéészszííttéés s folyamatafolyamata

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

Page 28: Objektum orientált programozás Bevezetésusers.iit.uni-miskolc.hu/ficsor/OOPSegedletek/oopbev.pdf · Ficsor Lajos Objektumorientáltprogramozás (Bevezetés) OOPALAP/ 2. A program

FicsorLajos

Objektum orientált programozás (Bevezetés) OOPALAP / 28

Objektum orientObjektum orientáált programozlt programozáási nyelveksi 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...