You are on page 1of 28

Bevezetés Objektum orientált alapelvek

Objektum orientált alapelvek

Krizsán Zoltán
1

[2012. február 12.]

Általános Informatikai Tanszék


Miskolci Egyetem

Objektumorientált programozás C# alapokon tananyag


Bevezetés Objektum orientált alapelvek

Tartalom

Bevezetés

Objektum orientált alapelvek


Bevezetés Objektum orientált alapelvek

Programozási nyelvek

A programozási eszközök absztrakciós szintjei különböz®ek:

I assembly: az adott számítógép architektúra


instrukciókészletének leképezése

I sor orinetált

I funkcionális (imperatív) nyelvek: adatszerkezetek és


algoritmusok absztrakciós szintje. Közel állnak ezek a valóság
fogalmaihoz? (Sajna nem... )

I objektum orientált nyelvek: együttm¶köd® objektumok


absztrakciós szintje . Léteznek a valóságban ezek? (IGEN!!!)

Melyik a jobb???
Bevezetés Objektum orientált alapelvek

Programozás = modellezés

I Programokat írunk ,de miért?

I modellezzük a valós világot (annak egy jól behatárolt részét)


I új világot hozzunk létre (amíg még nincs pl. játékok), de a
séma valós
I A programozás mérnöki munka = gyeld meg, emeld ki e
fontos elemeket, a kevésbé fontos elemeket dobd el, modellezd.

I A valós és a modell világ között át kell alakítani, ha különböz®.

I A valós világ objektum orientált? igen


Bevezetés Objektum orientált alapelvek

Program modellezé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.

I Ebben a szemléletben a valós világ egy absztrakt modelljét


(analízis modell) kell leképezni egy programozási eszközre.

I Ezt a folyamatot megkönnyíti az, ha az analízis modell elemei


könnyen leképezhet®k nyelvi elemekre.
Bevezetés Objektum orientált alapelvek

Program készítés

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

I A munka nehézsége függ

I a leképezend® jelenség/folyamat bonyolultságától


(komplexitásától)
I 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")
Bevezetés Objektum orientált alapelvek

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
Bevezetés Objektum orientált alapelvek

Szemlélet

valóságot objektumok
Az analízis modell elkészítése során a
halmazaként tekintjük. Ezen objektumok egymással kapcsolatban
vannak és együttm¶ködnek.
Bevezetés Objektum orientált alapelvek

Természetes objektumok jellemz®i

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

I struktúra (adatok)

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

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


Bevezetés Objektum orientált alapelvek

Természetes objektumok példa

Egy bizonyos valami Krizsán Zoltán

I Elég bonyolult struktúrájú,

I számos viselkedés formára képes objektum.

I A vér alkoholszintje, mint adat a struktúrájához tartozik.

I Az alkoholszint pillanatnyi értéke az állapothoz tartozik.

I Egyes viselkedésformák (pl. sört iszik, vagy eszik)


módosíthatják az állapotot.

I Más viselkedésformák m¶ködését (pl. járás) az aktuális állapot


befolyásolhatja.
Bevezetés Objektum orientált alapelvek

Természetes objektumok

Az objektum egyediséggel rendelkez® diszkrét entitás jellemz®i:


I attribútumok (fontos adatai),m¶veletek

I attribútum együttes: objektum állapot,

I ennek id®beli változása az objektum viselkedése

I m¶veletek(operations): ezek modellezik az objektum


viselkedését.
Bevezetés Objektum orientált alapelvek

Objektum orientált programozás alapelvek

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. Polimorzmus (polymorphism)
Bevezetés Objektum orientált alapelvek

Osztály

I Önállóhatáskörrel rendelkez®

I absztrakt adattípus (programozás technikai szempontból egy


típus),

I melyben logikailag összetartózó adatok és m¶veletek vannak.

I adatok szer¶ részek


I módszerek (a m¶veletek modellezésére).
I Objektumok közös tulajdonságait deniálja. Váza az
objektumoknak
le <-> processz ua. osztály <-> objektum
Bevezetés Objektum orientált alapelvek

Objektum

I Egy osztály egy m¶köd®képes példánya.

I Egy adott osztályban deniált tulajdonságokkal tetsz®leges


számú objektum példányosítható.

I Minden objektum természeténél fogva különbözik az összes


többit®l.

I Vázuk azonos: 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.
Bevezetés Objektum orientált alapelvek

Objektumtól objektumig

1. Valós objektum: a valós világ egy eleme.

2. Absztrakt típus: a valós objektum egyszer¶sített, kiemelt


verziója. Szövegesen leírt, vagy diagram elem.

3. Osztály: Az adott nyelvre leképzett váz. Nyelvt®l er®sen függ:


van tulajdonság? Mi a hatékony? Mi a szokás?

4. Objektum: osztály egy példánya.


Bevezetés Objektum orientált alapelvek

Objektumtól objektumig

1. szint

I 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ó deníciójából a
"leglényegesebb tulajdonságok kiemelése".)

I Például a Krizsán Zoltán objektumnak a Neptun


szempontjából lényegtelen az alkoholszintje, de lényeges, hogy
melyik tanszéken dolgozik.
Bevezetés Objektum orientált alapelvek

Objektumtól objektumig

1. szint

Ezután megkeressük azon objektumcsoportokat, amelyek azonos


adatokkal és viselkedésmintákkal rendelkeznek, és elnevezzük ezt a
csoportot. (Az absztrakció deníciójából az "általánosítás".) Így
jön létre a Neptun szempontjából az "oktató" fogalom.
Bevezetés Objektum orientált alapelvek

Objektumtól objektumig

2. szint

Az el®z®leg deniált fogalom leképezése egy programozási eszközre


(osztálydení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.)
Bevezetés Objektum orientált alapelvek

Objektumtó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 Nem Tom oktató be akarja írni Kisházi Brünhilda
hallgatónak a GEIAL214N kurzus vizsgájához tartozó jeles
vizsgajegyet, akkor

I Létrejön egy oktató típusú objektum Nem Tom adataival, egy


vizsgaalkalom típusú objektum a megfelel® adatokkal, és egy
hallgató típusú objektum Kisházi Brünhilda adataival.

I A Nem Tom 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.
Bevezetés Objektum orientált alapelvek

Egységbezárás

I Logikai összetartozást valósítja meg.

I Elszigeteli a részeket egymástól (saját hatáskör).

I Az osztály az adatait és a módszereket egy egységgé teszi.

I az adatok és a módszerek lokálisak


I a módszerek hozzáférhetnek az adatokhoz
Bevezetés Objektum orientált alapelvek

Információ rejtés

I Egy objektum adatai a külvilág (más objektumok) számára


hozzáférhetetlenek.

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

I A módszerek implementációja rejtett.


Bevezetés Objektum orientált alapelvek

Üzenet

I Az objektummal való kommunikáció módja.

I A módszerek aktivizálását (invocation) jelenti alap esetben.

I C#-ban vannak tényleges üzenetek események (event), azaz a


nyelv része.
Bevezetés Objektum orientált alapelvek

Örökl®dés

I Hierachikus kapcsolat(rendszer).

I A leszármazott osztály örökli az ®s osztály elemeit.

I Az örökölt elemeket felül deniálhatja a maga számára.

I Új (saját, csak rá jellemz®) elemeket deniálhat.

I Egy leszármazott osztály csak b®vítheti, pontosíthatja az ®st,


de nem utasíthat el az örökölt elemeket.

I Tartalmazza az örökölt elemeket, de nem biztos, hogy eléri.


Bevezetés Objektum orientált alapelvek

Többalakúság, többrét¶ség

I Bizonyos elemek viselkedése attól a környezett®l függ,


amelyben alkalmazzuk.

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

I Praktikusan: egy kódrészlet ismeretében nem tudhatjuk, hogy


mi fog m¶ködni.
Bevezetés Objektum orientált alapelvek

Objektum orientált program

Egymással kommunikáló objektumok halmaza

I m¶ködés: üzenetváltások

I struktúra: osztályok és objektumok közötti kapcsolatok


Bevezetés Objektum orientált alapelvek

OOP program készítés folyamata

I A probléma leírásában keressük az objektumokat.

I Objektum csoportok közös tulajdonságait osztályokkal írjuk le.

I Megkeressük az osztályok kapcsolatait.

I Az osztályokat és kapcsolataikat implementáljuk egy


programozási eszközzel.
Bevezetés Objektum orientált alapelvek

OOP program készítés folyamata

I Létrehozzuk a megfelel® példányokat (objektumokat) a


megfelel® id®ben, és megoldjuk a kommunikációjukat.

I 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

I adatszerkezetek kezelésére (tömb, stb),


I vezérlési feladatok megoldására,
I megjelenítési feladatok megoldására,
I stb.
Bevezetés Objektum orientált alapelvek

OOP nyelvek

I Nagyon sok van, számos integrált fejleszt® eszközzel.

I Az els® sikeres: Smalltalk

I Legelterjedtebbek:

I C++
I Java
I C#
I ObjectPascal (f®leg a Delphi fejleszt®eszköz miatt)
I Python
I PHP 5
I stb...

You might also like