Programozási alapismeretek 4.

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

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

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.

C++ programozási nyelv

OOP. Alapelvek Elek Tibor

Már megismert fogalmak áttekintése

Osztályok. 4. gyakorlat

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

Programozás módszertan p.1/46

Interfészek. PPT 2007/2008 tavasz.

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

Java és web programozás

Objektumorientált szoftverfejlesztés alapjai

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

OOP #14 (referencia-elv)

Objektumorientált programozás C# nyelven

Adatstruktúrák, algoritmusok, objektumok

és az instanceof operátor

C++ programozási nyelv

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

Globális operátor overloading

Objektumorientált paradigma

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

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

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Bevezetés a programozásba előadás: Öröklődés

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

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

Öröklés és Polimorfizmus

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

Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal.

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

Objektumorientált programozás IX. Osztályok, objektumok

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

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

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

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

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

Bevezetés a Python programozási nyelvbe

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

I. Objektumorientált programozás

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

III. OOP (objektumok, osztályok)

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

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

Programozás III. - NGB_IN001_3

JAVA PROGRAMOZÁS 2.ELŐADÁS

OOP és UML Áttekintés

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Objektum orientált programozás Bevezetés

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Programozási nyelvek II. JAVA

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

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

Programozás II. 6.Öröklés Dr. Iványi Péter

Adatstruktúrák, algoritmusok, objektumok

Objektum orientált kiterjesztés A+ programozási nyelvhez

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

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása

Java és web programozás

BME MOGI Gépészeti informatika 8.

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

A C++ öröklés. (Előfeltétel: 12. tétel ismerete)

Objektum-orientált programozás

Objektumorientált paradigma és a programfejlesztés

C++ programozási nyelv

Programozási nyelvek Java

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Abstract osztályok és interface-ek. 7-dik gyakorlat

Objektumorientált programozás C# nyelven

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

Objektumorientált paradigma és programfejlesztés Bevezető

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

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

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

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

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?

ISA szimulátor objektum-orientált modell (C++)

Származtatási mechanizmus a C++ nyelvben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Java és web programozás

Adatszerkezetek 2. Dr. Iványi Péter

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása. Biztonságos adattípusok megvalósítása

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

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Objektumelvű programozás

C++ programozási nyelv Konstruktorok-destruktorok

Szoftvertechnolo gia gyakorlat

Oktatási segédlet 2014

Programozási nyelvek Java

Bevezetés, a C++ osztályok. Pere László

ELTE SAP Excellence Center Oktatóanyag 1

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

3. Osztályok II. Programozás II

Web-technológia PHP-vel

OO rendszerek jellemzői

Gyakorlati vizsgatevékenység A

Átírás:

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