Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs
Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.) szemben, hiszen megvalósítja a személyiség független programot, elősegíti a csapatmunka létrejöttét, pontosan definiálja a program egyes részeit és pontosan megszabja, hogy a program melyik része, milyen módon vesz részt a futásban. Kis Balázs 2
Bevezetés II. Az OOP programozásban alapvetően osztályokról, osztályok hierarchiájáról és objektumokról beszélünk. Természetesen későbbi nyelvekkel való ismerkedés folyamán ez a lista még bővülni fog. Kis Balázs 3
Osztály I. Az osztály olyan programrész, melyben lévő metódusok, funkciók, változók, stb. egyetlen közös feladat érdekében fognak működni az objektumban. Az osztályban lévő egyes metódusok, egymás nélkül nem tudnak működni, vagy nincs értelme működtetni őket. Az OOP-ben vannak osztályok melyek ez alól kivételt képeznek. Kis Balázs 4
Osztály II. Például, ha van egy speciális, osztályom, mely nagy számokkal (még a decimal és double-nél is nagyobb) képes dolgozni, annak lehetnek összeadó, kivonó, stb. metódusai, függvényei, melyek teljesen értelmetlenek, ha nincs meg a szám amit lehet összeadni, kivonni. Kis Balázs 5
Osztály III. Így tehát az osztály, mint egy tervrajz leírja, hogy a belőle létrejövő objektumok mit fognak tudni, mit fognak tudni tárolni, milyen metódusaik, funkcióik, tulajdonságaik lesznek. Kis Balázs 6
Objektum / Példány I. Az Objektum, vagy másnevén példány, egy egyedi leképzése az osztálynak. Azért egy leképzése, mert a funkciók, a változók és egyéb elérési lehetőségek ugyan azok mint az osztályban, azonban ez egyedi, mivel az adott változók értéke, és ily módon az egyes funkciók visszaadott értéke más lehet benne. Kis Balázs 7
OOP I. Az OOP szemlélet napjaink egyik legelterjedtebb programozási szemlélete, mely segíti a programozót a lehető legkönnyebben olyan programok kifejleszteni, mely könnyen áttekinthető és a későbbiekben könnyen tovább fejleszthető, bővíthető. Az Objektum Orientált Programozásnak 6 fő kritérium eleme létezik. Kis Balázs 8
OOP II. Kritérium elemek: Absztrakció Egységbezárás Adatrejtés Öröklés Polimorfizmus Kód újrafelhasználhatóság Kis Balázs 9
Absztrakció Absztrakció kritérium elem a program tervezésekor lép be. Lényege, hogy tervezéskor az egyes osztályokat, objektumokat megtervezzük, és az alapján építjük fel a programunkat. Ez az eddigiekkel szemben áll, hiszen eddig, mindig viselkedés és célfeladat alapján terveztük és építettük meg programjainkat. Kis Balázs 10
Egységbezárás Valójában azt jelenti, hogy az objektumon belül szereplő adatokat, egybeszedjük, és innentől kezdve kizárólag az objektum kezeli, így megvédve az egyes külső hibás beavatkozásoktól az adatokat. Ezzel együtt jár, hogy egy objektumba implementálni kell az összes olyan metódust, funkciót, ami a benne lévő adatok módosításához kell. Kis Balázs 11
Adatrejtés Az osztályon belül elrejtjük azokat a funkciókat, adatokat, amiket a külvilág számára mi nem szeretnénk publikusan kezelni, illetve publikussá tesszük amit igen. Erre azért van szükség, mert ha egy programozó megír egy objektumot amiben minden látható még az is amit valójában ő nem szeretne, akkor egy másik programozó azt felhasználhatja, és amikor később az első programozó kiszedi a programjából azt a részt, az hibát eredményez. Kis Balázs 12
Öröklés Egy specializációs művelet, melynek eredményeképpen, az egymásból következő osztályokat, egymásból származtatjuk, így megspórolva a külön fejlesztési időt. Pl.: van egy már megírt repülődolgok osztály, és szeretnénk megírni a madár osztályt, akkor a madár osztályt, a repülődolgokból fogjuk származtatni Kis Balázs 13
Polimorfizmus Többalakúság, mely azt definiálja, hogy az egyes osztályok leszármazottjai, egyfajta specializált osztályok, melyek hasonlóak az ősosztályhoz (lehet, hogy sokban különböznek ennek ellenére) és ily módon ezeket lehetőségünk van egyben kezelni. Pl.: a repülődolgok osztályból származik a madár és a repülő osztály is, így lehetőségünk van a repülődolgok típusú változóban madár és repülő objektumot is tárolni. Kis Balázs 14
Kód újrafelhasználhatóság Az objektum orientált programok későbbi felhasználása, sokszorta egyszerűbb, mint a többi technológia alapján előállított programok, hiszen az objektumok függetlenségéből adódóan könnyedén átvehetők programrészek, vagy akár komplett kódok más programokba. Kis Balázs 15
OOP Visual C#-ban Az OO elemek és logika Visual C# nyelven Kis Balázs 16
OOP Visual C#-ban I. C# egy alapvetően OO nyelv, így az OO program fejlesztése benne lényegesen egyszerűbb, mint egy alapvetően nem OO nyelvben. Maga a Visual Studio is segít kialakítani OO programunkat. A C# mivel a C++ és Java nyelvek egyfajta utód nyelve, így az ezekben a nyelvekben, főleg Java-ban alkalmazott OOP elvek érvényesülnek. Kis Balázs 17
OOP C#-ban II. Osztályt létrehozni C#-ban a class kulcsszó segítségével tudunk. Pl.: class AzEnOsztalyom { } Kis Balázs 18
Osztályok felépítése I. Az osztályok felépítése alapvetően a következőképpen épül fel: Változó deklarációk Adattagok Konstruktor Alprogramok Ezeket betartani érdemes, habár nem kötelező. Kis Balázs 19
Osztályok felépítése II. - Változók Ahogy már megszokhattuk a változók az osztályokon belül is ugyan arra hasznosak, mint a rendes programban. Azonban míg az eddigi programjainkban nem kellett foglalkozzunk különösebben a láthatósági szintekkel ebben az esetben kelleni fog. Kis Balázs 20
Osztályok felépítése III. - Változók Minden egyes létrehozott változó alapvetően private, ami azzal jár, hogy csak és kizárólag az osztályon belül elérhető, kívülről nem. További láthatósági szintek: public Mindenkinek látható az adott funkció, metódus vagy adattag protected Csak a leszármazottaknak látható az elem internal A Namespace-en belül mindenki láthatja Kis Balázs 21
Osztályok felépítése IV. - Adattagok Adattagnak nevezzük azt a piciny metódust, mely biztosítja a változó írhatóságát, olvashatóságát, vagy mindkettőt egyszerre. Deklarálása egyszerű, mivel nekünk nem kell létrehozzuk, miután változónkat elkészítettük, egyszerűen ctrl+r e billentyűkombinációval létrehozhatjuk az adattagot hozzá. Kis Balázs 22
Osztályok felépítése V. - Adattagok Használata fontos, mivel ha egy változó értékét, csak olvashatóvá akarjuk tenni a külvilágnak, vagy csak írhatóvá, akkor csak ezzel a módszerrel lehetséges. OOP elvek szerint használata kötelező, magyarán public láthatósági szintű változó nem szerepelhet osztályban. Kis Balázs 23
Osztályok felépítése VI. - Konstruktor A Konstruktor egy speciális metódus, mely az osztály példányosításakor fut le. Feladata, hogy beállítsa az objektum kezdő értékeit, adott esetben alap beállításokat, beállítson. Használata nem kötelező, azonban konstruktor minden esetben szerepel egy osztályban, még akkor is ha nem írjuk meg láthatatlan konstruktor Kis Balázs 24
Osztályok felépítése VII. Alprogramok A metódusok, funkciók feladata, ugyan az mint amit már megszokhattunk, azonban, ebben az esetben minden egyes funkció, metódus speciális, hiszen csak az adott osztályhoz használhatjuk. (Későbbiekben ellenpélda) A metódusok, funkciók láthatósági szintjei ugyan azok lehetnek, mint a változóké. Kis Balázs 25
Feladat I. Készítsünk programot, mely képes fájlból felolvasni tanulók adatait. A tanulókról a fájlban lévő adatok: Név, Átlag, Személyi szám Oldjuk meg, hogy a program objektumokban tárolja le az egyes tanulókat, majd ezután mondjuk meg a tanulók átlagát. Kis Balázs 26