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

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

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

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

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

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

Pénzügyi algoritmusok

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Számítógép és programozás 2

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

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

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Programozási nyelvek Java

3. Osztályok II. Programozás II

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

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

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

Globális operátor overloading

Bevezetés a programozásba. 9. Előadás: Rekordok

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

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.

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

117. AA Megoldó Alfréd AA 117.

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

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

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

C++ programozási nyelv

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

Alprogramok, paraméterátadás

Programozás II gyakorlat. 6. Polimorfizmus

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

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

Web-technológia PHP-vel

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

Objektumorientált programozás C# nyelven

- 1 - Konstansok használata. Döntsük el, van-e fordítási idejű hiba az alábbi programrészletekben! a) const char * str="zh"; str[0]++;

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Programozás C++ -ban 2007/7

és az instanceof operátor

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

Programozás C++ -ban

Pénzügyi algoritmusok

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++ -ban

Programozás C++ -ban

Java és web programozás

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

Programozás C és C++ -ban

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

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

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Informatika terméktervezőknek

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

1. Alapok. Programozás II

500. AA Megoldó Alfréd AA 500.

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

Öröklés és Polimorfizmus

C++ programozási nyelv Konstruktorok-destruktorok

OOP #14 (referencia-elv)

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?

Programozási nyelvek Java

Objektumorientált programozás C# nyelven

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

Programozási nyelvek Java

C# osztályok. Krizsán Zoltán

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

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

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ási nyelvek Java

Java és web programozás

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

Szoftvertechnológia alapjai Java előadások

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

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 JAVA NYELVEN. vizsgatételek

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás C++ -ban 2007/4

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

Konkurens TCP Szerver

Bevezetés a programozásba. 11. Előadás: Esettanulmány

Java II. I A Java programozási nyelv alapelemei

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Fejlett programozási nyelvek C++ Sablonok és adatfolyamok

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

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

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

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

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

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

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.

Elemi Alkalmazások Fejlesztése II.

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

Maximum kiválasztás tömbben

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

Google C++ style guide

Felhasználó által definiált adattípus

Átírás:

Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés

ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const; protected: double x,y; unsigned char r,g,b; ; ;

ISMÉTLÉS Fordítási egység Fordítási egység az, ami önállóan fordítható A C++ nyelvben minden.cpp fájl önálló fordítási egység Moduláris programozás Felgyorsítja a fordítást: csak a megváltozott forráskódokhoz tartozó egységek fordulnak újra A személyi felelősség értelmezhető a rendszer alkotóelemeire: önállóan tesztelhető modulok Strukturális / moduláris programozás

A static kulcsszó Sok jelentését a kontextus egyértelműsíti lokális változó deklarációja előtt globális változó deklarációja előtt tagfüggvény szignatúrája előtt mező deklarációja előtt Általánosságban körülbelül a maradandó, egyedüli jelentést érdemes elképzelni

static lokális változó Ha egy függvényben lokális változót deklarálunk, annak minden híváskor újra lefoglalódik a memória (a stack-en), kivéve, ha static A static változó érvényessége szer olyan, m egy globális változó: nem szűnik meg a függvény végén, és értékét megtartja a program teljes futásán át Azonban a static változó lokális láthatóság szempontjából.

static lokális változó void fv() { static count = 0; 0; cout << << ++count << << endl; main() { for( i = 0; 0; i < 10; ++i ) { fv();

static lokális változó Lokális láthatóságú globális érvényességű változó Érdekessége, hogy kivételesen kap kezdeti értéket: nullát Kitérő: egy változó a memóriában három helyen lehet a stack-en: lokális változó a heap-en: dinamikusan lefoglalt változó a globális változók között (korlátos méretű, kinullázva inicializálódik)

static globális változó és függvény ez az extern ellentéte, a fordítási egységből kifelé nem látszik a változó/függvény Deprecated (nem javasolt) feature név nélküli namespace van helyette C++-ban static static ofstream ofstream flog((string( FILE ) +".log").c_str()); void void fv() fv() { flog flog << << "log: "log: " << << változó; változó;

Osztályok és a static Objektumszű osztályszű A static jelentése: osztályszű Ha mező: egyetlen példány van, közös az egész típusnak (vs minden példány saját mezővel rendelkezik) Ha tagfüggvény: objektum nélkül hívható metódus

A statikus metódus objektum nélkül is hívható class A { public: A(); static void sfv(); ; ; main() { A::sfv(); A a; a; a.sfv();

Statikus mező class A { public: A() A() {++count; getcount() const {return count; protected: static count; ; ; A::count; main() { A a,b,c; cout << << a.getcount();

Statikus mező class class A A { { public: public: A() A() ; ; getcount(); getcount(); protected: protected: static static count; count; ; ; A::count; A::count; A::A() A::A() { { ++count; ++count; A::getCount() A::getCount() { { return return count; count; erface implementation main() main() { { A A a,b,c; a,b,c; cout cout << << a.getcount(); a.getcount();

Statikus mezők és tagfüggvények Statikus tagfüggvény nem hivatkozhat mezőre, kivéve ha az statikus mező A statikus tagfüggvénynek nincs implicit paramétere, más szavakkal nincs benne this Ezért olyasmit illik osztályszű tagfüggvényként megfogalmazni, ami kihasználja, hogy nem kell hozzá objektum, pl graphicslib groutput::instance()

static és öröklődés Nem lehet egy tagfüggvény egyszerre virtual és static: az osztályszűség mindig a statikus típusra vonatkozik hasonló eset: virtual bool is_focusable() { return true; Szükség van az objektumra, hogy a dinamikus típust megtudjuk.

Hibakezelés Hiba felderítése, tesztelés Hiba reprodukálhatósága megsejthető a hiba természete Hibák nyilvántartása pl. Bugzilla Hiba okának felderítése Egyszerű esetben javítás Néha újratervezés

Hibakeresés, tesztelés Fekete doboz teszt Fehér doboz teszt automatikus forráskódkezelők test coverage Terhelőtesztek szerver, realtime alkalmazások GUI véletlen eseményekkel

Hibafajták (A program nem fordul) A program szabálytalanul terminál ( elszáll ) A program végtelen ciklusba kerül ( lefagy ) A program mást csinál, m amit a programozó gondol A program mást csinál, m amit a felhasználó gondol bug vs feature

Futásidejű végzetes hibák Osztás nullával, moduló nullával Idegen memória hivatkozása Mutató nem megfelelő Kimegyünk a vector-ból, string-ből Nincs meg a DLL Stack overflow: pl. végtelen rekurzió Out of memory.. egyéb platform és nyelvfüggő esetek

Hibakeresési technikák Kód tüzetes vizsgálata Favágó módszer: random kikommentezés Adatok kiírása a konzolra Adatok kiírása fájlba Minden platformon, minden környezetben működik, kivéve a fájlrendszer nélküli mikrokontrolleres eseteket Programkövetés, nyomkövetés GDB Sze minden IDE tartalmaz ilyet