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

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

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

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

Öröklés és Polimorfizmus

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.

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

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

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

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

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

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

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

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

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. 4. gyakorlat

Objektumorientált programozás C# nyelven

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

Globális operátor overloading

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Objektumorientált programozás C# nyelven

Programozási nyelvek Java

Objektumok inicializálása

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

C++ programozási nyelv

OOP #14 (referencia-elv)

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

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

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

BME MOGI Gépészeti informatika 8.

Származtatási mechanizmus a C++ nyelvben

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

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

OOP és UML Áttekintés

Java IX. telkezelés a Java-ban

Objektumorientált szoftverfejlesztés alapjai

Java IX. telkezelés a Java-ban

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

Programozási nyelvek Java

C++ programozási nyelv Konstruktorok-destruktorok

Bánsághi Anna

Java és web programozás

Bevezetés a Python programozási nyelvbe

Programozási alapismeretek 4.

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

és az instanceof operátor

Programozás. Osztályok, Származtatott osztályok. Fodor Attila

Osztály és objektum fogalma

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

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

Java és web programozás

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

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

Java és web programozás

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

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

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

OOP #7 (init, done) v :45:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Java III. I I. Osztálydefiníció (Bevezetés)

III. OOP (objektumok, osztályok)

Java III. I I. Osztálydefiníció (Bevezetés)

Programozási nyelvek Java

Objektumelvű programozás

Programozás módszertan p.1/46

1. Bevezetés A C++ nem objektumorientált újdonságai 3

Access adatbázis elérése OLE DB-n keresztül

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

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

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

Adatstruktúrák, algoritmusok, objektumok

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

Programozás II gyakorlat. 6. Polimorfizmus

C#, OOP. Osztályok tervezése C#-ban

Objektumorientált programozás C# nyelven

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?

Informatika terméktervezőknek

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

ELTE SAP Excellence Center Oktatóanyag 1

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

500. AA Megoldó Alfréd AA 500.

Programozás I. Első ZH segédlet

Web-technológia PHP-vel

Alkalmazott modul: Programozás 11. előadás. Objektumorientált programozás: öröklődés

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

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Elemi Alkalmazások Fejlesztése II.

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Kivételkezelés a C++ nyelvben Bevezetés

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

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

Programozás II. 4. Dr. Iványi Péter

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

C++ programozási nyelv

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Átírás:

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

Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén a vezérlés ide kerül ha nemcsak a hiba típusa az érdekes, hanem az is,hogy például egy indexhiba esetén milyen index okozott galibát, akkor megadhatjuk a típus nevét is, amin keresztül a hibát okozó értéket is ismerhetjük. A név megadása opcionális. finally ide jön az a kód, ami mindenképpen végrehajtódik

Kivételkezelés példa try int a, b, c; a = int.parse(textbox1.text); catch (Exception ex) label1.text = ex.message; finally Text = "Ez így is úgy is lefutott";

AZ OOP alapelvei Egységbezárás(Encapsulation) Az adatokat es a hozzájuk tartozó eljárásokat egyetlen egységben (osztályban) kezeljük. Az osztály adatmezői tároljak az adatokat, a metódusok kommunikálnak a külvilággal. Öröklés(Inheritance) Az osztály továbbfejlesztése. Ennek során a származtatott osztály örökli az ősosztálytól az összes attribútumot, metódust. Ezeket azonban újakkal is kibővíthetjük, ill. bizonyos szabályok mellett az örökölt metódusokat is megváltoztathatjuk. Sokalakúság(Polymorphism) Ugyanarra a metódusra a különböző objektumok különbözőképpen reagáljanak. A származtatás során az ősosztályok metódusai képesek legyenek az új, átdefiniált metódusok használatára újraírás nélkül is. Ezt virtuális (vagy dinamikus) metódusokkal érhetjük el. 2016.04.26. Számítástechnika I. 6. Előadás 4

Osztályok class osztálynév [: szülő, ] ; Osztálytaglista Konstruktorok Destruktorok Adattagok Metódusok Minden osztály egy közös ősből, az objectosztályból származik 2016.04.26. Számítástechnika I. 6. Előadás 5

Hozzáférési szintek osztályok esetében 1. A private tagokat csak az adott osztályon belülről érhetjük el. 2. Az osztályok publikus public mezőit bárhonnan elérhetjük, módosíthatjuk. 3. A protected mezők az osztályon kívüliek számára nem elérhetőek, míg az utódosztályból igen. 4. Az internal mezőket a készülő program osztályaiból érhetjük el. 5. A protected internal elérés valójában egy egyszerű vagy kapcsolattal megadott hozzáférési engedély. A mező elérhető a programon belülről, vagy az osztály utódosztályából! (Egy osztályból természetesen tudunk úgy utódosztályt származtatni, hogy ez nem tartozik az eredeti programhoz.) 2016.04.26. Számítástechnika I. 6. Előadás 6

Egyszerű példa Adattagok class Ember private int eletkor; public string nev; Ember e = new Ember(); //automatikus konstruktor e.nev = "Béla"; //működik e.eletkor= 12; //nem működik 2016.04.26. Számítástechnika I. 6. Előadás 7

Egyszerű példa Metódusok public int geteletkor() return eletkor; public void oregszik() eletkor++; public void kiir() Console.WriteLine("0 1", nev, geteletkor()); 2016.04.26. Számítástechnika I. 6. Előadás 8

Konstruktorok Osztályok esetén ez a kezdőérték-adás nem biztos, hogy olyan egyszerű, mint volt elemi típusok esetén, ezért ebben az esetben egy függvény kapja meg az osztály inicializálásával járó feladatot. Ez a függvény az osztály születésének pillanatában automatikusan végrehajtódik, és konstruktornak vagy konstruktor függvénynek nevezzük. A konstruktor neve mindig az osztály nevével azonos. Ha ilyet nem definiálunk, a keretrendszer egy paraméter nélküli automatikus konstruktort definiál az osztály számára. Az osztály referencia típusú változó, egy osztálypéldány létrehozásához kötelező a new operátort használni, ami egyúttal a konstruktor függvény meghívását végzi el. 2016.04.26. Számítástechnika I. 6. Előadás 9

Konstruktorok Példa public Ember(int peletkor) eletkor = peletkor; public Ember(Ember e) eletkor = e.eletkor; nev = e.nev; 2016.04.26. Számítástechnika I. 6. Előadás 10

Osztályok öröklődése Az öröklődés az objektumorientált programozás elsődleges jellemzője. Egy osztályt számaztathatunk egy ősosztályból, és ekkor az utódosztály az ősosztály tulajdonságait (függvényeit, ) is sajátjának tudhatja. Az örökölt függvények közül a változtatásra szorulókat újradefiniálhatjuk. Öröklés esetén az osztály definíciójának formája a következő: class utódnév: ősnév //

Osztályok öröklődése Konstruktorok és destruktorok használata öröklés esetén is megengedett. Egy típus definiálásakor a konstruktor függvény kerül meghívásra, és ekkor először az ősosztály konstruktora, majd utána az utódosztály konstruktora kerül meghívásra. Paraméteres konstruktorok esetén az utódkonstruktor alakja: utód(paraméterek): base(paraméterek) //

Függvények A programkészítés során, ahogy láttuk, az egyik hatékony fejlesztési eszköz az osztályok öröklési lehetőségének kihasználása. Ekkor a függvénypolimorfizmus alapján természetesen lehetőségünk van ugyanazon névvel mind az ősosztályban, mind az utódosztályban függvényt készíteni. Ha ezen függvényeknek különbözők a paraméterei, akkor gyakorlatilag nincs is kérdés, hiszen függvényhíváskor a paraméterekből teljesen egyértelmű, hogy melyik kerül meghívásra.

Függvények elfedése, felüldefiniálása virtual override base