C++ programozási nyelv

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

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

C++ programozási nyelv

C++ programozási nyelv Konstruktorok-destruktorok

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

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

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

Programozási nyelvek Java

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

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

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

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

C++ programozási nyelv

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

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

Származtatási mechanizmus a C++ nyelvben

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

Programozási nyelvek Java

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.

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

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

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

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

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

Objektumok inicializálása

C++ programozási nyelv

Programozás II gyakorlat. 4. Öröklődés

Globális operátor overloading

Programozási alapismeretek 4.

Programozás módszertan p.1/46

és az instanceof operátor

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?

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

Objektumorientált programozás C# nyelven

Alprogramok, paraméterátadás

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

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

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

ELTE SAP Excellence Center Oktatóanyag 1

Öröklés és Polimorfizmus

Programozási nyelvek Java

C++ programozási nyelv Konstruktorok Gyakorlat

Java programozási nyelv 6. rész Java a gyakorlatban

Java és web programozás

Interfészek. PPT 2007/2008 tavasz.

Már megismert fogalmak áttekintése

OOP. Alapelvek Elek Tibor

Java és web programozás

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

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

A programozás alapjai 1 Rekurzió

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

BME MOGI Gépészeti informatika 8.

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?

Programozás C++ -ban

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

Függvények int, long 1. Adott a mellékelt f alprogram.

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

OOP #14 (referencia-elv)

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

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

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

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

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

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.

Programozási nyelvek Java

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

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

A C programozási nyelv II. Utasítások. A függvény.

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

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

Pénzügyi algoritmusok

OOP és UML Áttekintés

Objektumorientált programozás C# nyelven

Virtuális függvények (late binding)

Bevezetés a programozásba Előadás: A const

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

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

Elemi Alkalmazások Fejlesztése II.

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

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

Programozás alapjai 8.Gy: Program struktúra

Objektumorientált szoftverfejlesztés alapjai

Osztály és objektum fogalma

Objektumorientált programozás C# nyelven

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Java programozási nyelv 9. rész Kivételkezelés

Java programozási nyelv

osztályok kapcsolata Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1

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

500. AA Megoldó Alfréd AA 500.

Bevezetés a programozásba Előadás: Fordítási egység

TestLine - OO Programozás alapjai Minta feladatsor

Átírás:

C++ programozási nyelv Gyakorlat - 9. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/15

Tartalomjegyzék Hozzáférési kategóriák öröklés nélkül Hozzáférési kategóriák és az öröklés Protected hozzáférési kategória Példa protected hozzáférésre A protected hozzáférés nem osztályszintű Adatok örököltetése 1. Adatok örököltetése 2. Önhivatkozó struktúra A C++ programozási nyelv Soós Sándor 2/15

Bemelegítő, ismétlő kérdés Adott a következő függvény deklaráció: void f( Szemely & Par) Igaz-e, hogy ezt a függvényt Szemely típusú paraméterrel kell meghívni? A C++ programozási nyelv Soós Sándor 3/15

Bevezetés Eddig úgy vizsgáltuk az öröklődést, hogy minden tag public hozzáférésű volt. Most megvizsgáljuk, hogy miképpen befolyásolják az öröklődést a különböző hozzáférési kategóriák. A C++ programozási nyelv Soós Sándor 4/15

Hozzáférési kategóriák öröklés nélkül Vizsgáljuk meg a következő programot! class Szemely{ void SzPub1() { printf("szpub1\n"); SzPriv1(); private: void SzPriv1() { printf("szpriv1\n"); int main() { Szemely sz; sz.szpub1(); sz.szpriv1(); return 0; Mi helyes, és mi nem ebben a programban? A C++ programozási nyelv Soós Sándor 5/15

Hozzáférési kategóriák öröklés nélkül Vizsgáljuk meg a következő programot! class Szemely { virtual void SzPub() { printf( "SzPub\n" ); SzPriv(); virtual SzPub2( Szemely & masik ) { masik.szpriv(); private: virtual void SzPriv() { printf( "SzPriv\n"); int main() { Szemely sz, sz2; sz.szpub(); sz.szpub2( sz2 ); sz.szpriv(); return 0; Mi helyes, és mi nem ebben a programban? A C++ programozási nyelv Soós Sándor 6/15

Hozzáférési kategóriák és az öröklés Az előző dián látott Szemely osztályból örökítsük a következőt: class Diak : public Szemely { void DPub1() { printf( "DPub1\n" ); int main() { Szemely sz; Diak d1, d2; sz.szpub2( d1 ); d1.szpub2( sz ); d1.szpub2( d2 ); d1.dpub1(); sz.dpub1(); Mi helyes, és mi nem ebben a programban? A C++ programozási nyelv Soós Sándor 7/15

Hozzáférési kategóriák és az öröklés, folyt. Most definiáljuk a DPub1()-et a következőképpen: class Diak : public Szemely { void DPub1() { SzPriv(); Mi helyes, és mi nem ebben a programban? A C++ programozási nyelv Soós Sándor 8/15

Protected hozzáférési kategória Vannak olyan esetek, hogy az osztály bizonyos részeit szeretnénk elrejteni a külvilág elől, de meg szeretnénk nyitni a leszármazottak előtt. Erre szolgál a protected hozzáférési kategória. Az adott osztály metódusai és a leszármazottak látják A külvilág viszont nem A hozzáférési kategóriák "szigorúsági" sorrendje: public protected private Az osztály definíciójában nem kötelező ilyen sorrendet tartani! A C++ programozási nyelv Soós Sándor 9/15

Példa protected hozzáférésre class Szemely { virtual void SzPub1() { SzProt1(); // OK protected: virtual void SzProt1() { printf( "SzProt1\n" ); int main() { Szemely sz; sz.szpub1(); sz.szprot1(); return 0; // OK // Hibás A C++ programozási nyelv Soós Sándor 10/15

Példa protected hozzáférésre, folyt. class Diak : public Szemely { void DPub1() { SzProt1(); // ez megy! A Diak felül is definiálhatja az SzProt1-et. Nem ajánlatos megváltoztatni utólag egy protected metódust, ugyanúgy, ahogyan egy public-ot sem! mert engedélyeztük, hogy a leszármazottak felhasználják csak a private hozzáférés esetén garantált, hogy azt rajtunk kívül senki nem fogja felhasználni. A C++ programozási nyelv Soós Sándor 11/15

A protected hozzáférés nem osztályszintű A protected hozzáférés nem osztályszintű, hanem példányszintű, azaz a gyerek csak a szülője protected tagjaihoz fér hozzá más példányokéhoz nem! class Szemely { virtual void SzPub1( Szemely & masik ); { masik.szprot1(); protected: virtual void SzProt1() { printf( "SzProt1\n" ); // OK class Diak : public Szemely { void DPub1( Szemely & masik) { masik.szprot1(); // ez nem megy! A C++ programozási nyelv Soós Sándor 12/15

Adatok örököltetése 1. Nézzük meg a következő programot: class Szemely{ Szemely() { X = 10; int X; class Diak : public Szemely{ Diak() { X = 20; int main() { Szemely sz; printf("%d\n",sz.x); Diak d; printf("%d\n",d.x); return 0; Mit ír ki? A C++ programozási nyelv Soós Sándor 13/15

Adatok örököltetése 2. Nézzük meg a következő programot: class Szemely { Szemely() { X = 10; int X; class Diak : public Szemely { Diak() { X = 20; Szemely::X=50; int X; int main() { Szemely sz; printf( "%d\n", sz.x ); Diak d; printf( "%d %d\n", d.x, d.szemely::x ); return 0; Mit ír ki? A C++ programozási nyelv Soós Sándor 14/15

Önhivatkozó struktúra Előzetes a jövő óráról class Szemely { int Azonosito; Szemely* kovetkezo; C++ -ban nem kell előre deklarálni, ahogyan a C-ben A C++ programozási nyelv Soós Sándor 15/15