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