Programozás alapjai II. (6. ea) C++
|
|
- Balázs Faragó
- 6 évvel ezelőtt
- Látták:
Átírás
1 Programozás alapjai II. (6. ea) C++ mutatókonverziók, heterogén kollekció Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M C++ programozási nyelv BME-IIT Sz.I
2 Öröklés (ismétlés) Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek az eredeti osztályban már definiált tulajdonságokkal és viselkedéssel. Analitikus Korlátozó A tagfüggvények felüldefiniálhatók (override) virtuális függvény: hogy a tagfüggvény alaposztály felől is elérhető legyen C++ programozási nyelv BME-IIT Sz.I
3 Analitikus öröklés példa (ism.) class Pont { int x, y; public: Pont(int x1, int y1) :x(x1), y(y1) {} void set(int x1, int y1) {x = x1; y = y1;} class Pont3D :public Pont { int z; public: Pont3D(int x1, int y1, int z1) Bővült :Pont(x1, y1), z(z1) {} void set(int x1, int y1, int z1) { Pont::set(x1, y2); z = z1; } Pont int x, y set() Pont3D int z set() C++ programozási nyelv BME-IIT Sz.I
4 Korlátozó öröklés példa/1 (ism.) Szeretnénk egy stack és egy queue osztályt: mindkettő tároló nagyon hasonlítanak, de eltér az interfészük: o put, get o push, pop önállóan vagy örökléssel? class Queue {... public: void put( int e ); int get( ); class Stack {... public: void push( int e ); int pop( ); C++ programozási nyelv BME-IIT Sz.I
5 Korlátozó öröklés példa/2 (ism.) class Stack : private Queue { // privát: eltakar a külvilág felé int nelem; Továbbhívjuk a get()-et public: Stack( ) : nelem(0) { } int pop( ) { nelem--; return(get()); } Queue void push(int e) { put(e); // betesz for( int i = 0; i < nelem; i++ ) put( ),get( ) put(get( )); // átforgat nelem++; Stack } Nem hatékony, csak példa! push( ), pop( ) Stack s1; s1.pop(); s1.get() C++ programozási nyelv BME-IIT Sz.I
6 Virtuális tagfüggvény (ism.) Szakasz végpont rajzol() set() Alakzat poz, szin mozgat() virtual rajzol() set() Kör sugár rajzol() set() rajzol() "átdefiniálása" virtuális függvénnyel set() átdefiniálása: fv. override Alakzat::rajzol(); Mit hív? késői kötés C++ programozási nyelv BME-IIT Sz.I
7 Fontos C++ sajátságok Konstruktor nem lehet virtuális Destruktor igen, és érdemes odafigyelni: Ha alaposztályból dinamikus adattagot tartalmazó osztályt hozunk létre, majd ezt az alaposztály "felől" használjuk (töröljük). A konstruktorból hívott (saját) virtuális függvény még nincs átdefiniálva! A virt. táblát maga konstruktor tölti ki! (kötés) absztrakt osztály estén NULL pointer! C++ programozási nyelv BME-IIT Sz.I
8 class Pont { protected: int x, y; public: Inicializálás /1 (ism.) Pont(int x1 = 0, int y1 = 0) { x = x1; y = y1;} class Pont3D :public Pont { int z; public: Pont3D(int x1, int y1, int z1) Legyen default, mert... Alaposztály konstruktora mikor hívódik? Mindig lehet így? {x = x1; y = y1; z = z1;} C++ programozási nyelv BME-IIT Sz.I
9 Inicializálás /2 (ism.) class Pont { protected: int x, y; public: Pont(int x1, int y1) : x(x1), y(y1) { } class Pont3D :public Pont { int z; public: Itt most nem fontos a paraméter nélküli, mert paraméterest hívunk. Alaposztály konstruktora Pont3D(int x1, int y1, int z1) : Pont(x1, y1), z(z1) { } C++ programozási nyelv BME-IIT Sz.I
10 Inicializálás /3 (ism.) class FixKor :public Pont { double& r; const double PI; Kötelező inicializálni! int x, y; public: Kor(int x, int y, double& r) :x(x), y(y), r(r), PI(3.14) { } Melyik y? Van már this? class FixKor :public Pont { double& r; static const double PI;... const double Kor::PI = 3.14; // statikus tag, létre kell hozni C++ programozási nyelv BME-IIT Sz.I
11 Explicit konstruktor Az egyparaméteres konstruktorok egyben automatikus konverziót is jelentenek: pl: String a = "hello"; String a = String("hello"); Ez kényelmes, de zavaró is lehet: tfh: van String(int) konstruktor, ami megadja a string hosszát, de nincs String(char) konstruktor; ekkor: String b = 'x'; String b =String(int('x')); nem biztos, hogy kívánatos. Az aut. konverzió az explicit kulcsszóval kapcsolható ki. (pl: explicit String(int i);) C++ programozási nyelv BME-IIT Sz.I
12 Öröklés és polimorfizmus struct A { void valami() { cout << "A valami" << endl; } void semmi() { cout << "A semmi" << endl; } struct B: public A{ void valami() { cout << "B valami" << endl; } void valami(int) { cout << "B valami int" << endl; }.. Ḃ b; b.valami(); b.valami(1); b.semmi(); b.a::valami(); b.a::valami(int) // B valami // B valami(int) // A semmi // A valami // HIBA C++ programozási nyelv BME-IIT Sz.I
13 Értékadás és kompatibilitás struct Alap { int a; void f(); struct Utod : Alap { double d; int f1(); Alap alap; alap? alap = utod; Utod utod; alap új rész A kompatibilitás miatt az értékadás formálisan rendben, de az új résznek nincs helye a memóriában. Elveszik. Szeletelődés (slicing) történik. C++ programozási nyelv BME-IIT Sz.I
14 Mutatókonverzió és kompatibilitás struct Alap { int a; void f(); struct Utod : Alap { double d; int f1(); Alap alap; alap Utod utod; alap Alap* p = &utod; új rész Memóriakép rendben van, de mi a helyzet a viselkedéssel? C++ programozási nyelv BME-IIT Sz.I
15 Konverzió alaposztály mutatóra struct Alap { void f(); struct Pub : public Alap { void f(); struct Priv : private Alap { void f(); Alap *p1b, *p2b; p1b p2b Pub pub; // pub kaphat Alap-nak szóló üzeneteket. p1b = &pub; // nem kell explicit típuskonverzió p1b->f() // alap o. f() elérhető pub priv alap új rész Priv priv; // priv nem érti Alap üzeneteit pl: priv.alap::f() p2b = (Alap*)&priv;// explicit konverzió p2b->f() // így már érti Viselkedés és a memóriakép is kompatibilis. C++ programozási nyelv BME-IIT Sz.I
16 Konverzió származtatott o. mutatóra struct Alap { void f(); struct Pub : public Alap { void f(); struct Priv : private Alap { int a; Alap alap; Pub* p1d; Priv* p2d; p1d p2d alap alap p1d = (Pub*)&alap; p1d->f(); //????? p2d = (Priv*)&alap p2d->a = 0 //????? Explicit konverzióval nem létező adatmezőket és függvényeket is el lehet érni! Ne használjuk! Veszélyes! Viselkedés és a memóriakép SEM kompatibilis. C++ programozási nyelv BME-IIT Sz.I
17 Típuskonverzió és az öröklés Kompatibilitás esetén a konverzió automatikus. A másik irányba (alapból származtatottra) explicit módon ki lehet kényszeríteni, de a legtöbb esetben értelmetlen és veszélyes! Típuskonverzió = objektumkonverzió Mutatókonverzió = rejtett objektumkonverzió Kompatibilitás: kompatibilis memóriakép kompatibilis viselkedés (tagfüggvények) C++ programozási nyelv BME-IIT Sz.I
18 Függv. elérése alap. o. mutatóval class Alakzat {... virtual void rajz() = 0; void k(); class Szakasz : public Alakzat { void rajz(); void k(); class Kor : public Alakzat { void rajz(); void k();... Alakzat* tar[100]; tar[0] = new Szakasz(...); // konverzió, (kompatibilis) tar[1] = new Kor(...); // konverzió, (kompatibilis)... for (int i = 0; i < 100; i++ ) { tar[i] ->rajz(); tar[i]->k(); } Származtatott o. fv. Alap oszt. függvénye C++ programozási nyelv BME-IIT Sz.I
19 Heterogén gyűjtemények Különböző típusú objektumokat egy közös gyűjteménybe tesszük Egységes kezelés: valamilyen viselkedési kompatibilitásra építve egy öröklési hierarchiából származó objektumokat tehetünk heterogén szerkezetbe kompatibilitásból származó előnyök kihasználása C++ programozási nyelv BME-IIT Sz.I
20 Heterogén kollekció példa Egy rendszer eseményeit kell naplózni. Az események egymástól eltérő adattartamúak, és esetleg új események is lesznek, amit még nem ismerünk. Események sorrendje fontos, ezért célszerűen egy tárolóban kell lenniük. Az eseménynapló megnézésekor meg kell mutatni azt is, hogy mely eseményeket néztük meg már korábban. C++ programozási nyelv BME-IIT Sz.I
21 Eseménynaplózó osztályai Event checked show( ) * EventList add( ), list( ) Event1 Event show( ) show( )... Még nem ismerjük, de nem is kell! C++ programozási nyelv BME-IIT Sz.I
22 Esemény és leszármazottai class Event { bool checked; public: Event ( ) :checked(false) {} virtual void show( ) { cout<<" Checked: "; cout<<checked<<endl; checked = true; } virtual ~Event() {} class Event1 :public Event {... public: Event1(); void show ( ) { cout <<... ; Event::show(); } Hurok? C++ programozási nyelv BME-IIT Sz.I
23 Esemény lista: pointerek tárolója class EventList { int nevent; Event *events[100]; public: EventList( ) : nevent(0) {} void add(event *e) { if (nevent < 100) events[nevent++] = e; } void list( ) { for (int i = 0; i < nevent; i++) events[i]->show(); } ~EventList() { for (int i = 0; i < nevent; i++) delete events[i]; } Alaposztály pointereket tárolunk Megszűnik az esemény is (komponens reláció) Származtatott osztály függvénye C++ programozási nyelv BME-IIT Sz.I
24 Eseménynapló használata class Event {... class Event1 :public Event {... class Event2 :public Event {... class EventList { EventList list; list.add(new Event1(...)); list.add(new Event2(...)); list.add(new Event9(...)); Új esemény: csupán definiálni kell az új osztályt list.list(); C++ programozási nyelv BME-IIT Sz.I
25 Ki szabadít fel? class EventList { int nevent; Event *events[100]; public:... void add(event* e) { if (nevent < 100) events[nevent++] = e; } void list( ) { for (int i = 0; i < nevent; i++) events[i]->show(); } ~EventList() { }... for (int i = 0; i < nevent; i++) delete events[i]; list.add(new Event1(...)); // ~Event(); Virtuális kell! C++ programozási nyelv BME-IIT Sz.I
26 Virtuális destruktor újból class Event { public: virtual void show( ) {} virtual ~Event() {} 2 class Event1 :public Event { int *p; public: Event1(int s) { p = new int[s]; } void show() {} ~Event1() { delete[] p; } 1 Event *ep = new Event1(120); ep->show() delete ep; Virt. destr. más, mint a többi virt. fv., mert az ős destruktora mindig meghívódik! C++ programozási nyelv BME-IIT Sz.I
27 Összetettebb példa: CppBolt Pénztárgépet modellezünk: A pénztáros megadja az eladott mennyiséget és az árut. A gép nyilvántartást vezet. Lekérdezhető a napi/összes eladás, napi bevétel, stb. Ötlet: heterogén kollekció: Közös attr.: eladott mennyiség, dátum, (összeg) Probléma: minden áru ebből származzon? Nem célszerű Megoldás (1): közbenső osztály az áruk valós őse (pointere) fölé. C++ programozási nyelv BME-IIT Sz.I
28 CppBolt Csomagoló osztály: Tetel, ami Aru pointereket tárol. Aru az őse a valós áruknak. A Kassza pedig a tároló C++ programozási nyelv BME-IIT Sz.I
29 Heterogén kollekció összefoglalás Különböző típusú objektumokat egy közös gyűjteménybe tesszük. Kihasználjuk az öröklésből adódó kompatibilitást. Nagyon gyakran alkalmazzuk könnyen bővíthető, módosítható, karbantartható C++ programozási nyelv BME-IIT Sz.I
30 Tipikus halálfejes hiba class EventList { int nevent; Event events[100]; public: EventList( ) { nevent = 0; } void add(event& e) { if (nevent < 100) events[nevent++] = e; } void list( ) { for (int i = 0; i < nevent; i++) events[i].show(); } Event::show() Nem pointert tárol! Adatvesztés! Szeletelés (slicing) A származtatott rész elveszik! C++ programozási nyelv BME-IIT Sz.I
31 Digitális áramkör modellezése Digitális jel: üzenet (objektum) Áramköri elemek: objektumok bemenet, kimenet, viselkedés (f(x)) kapcsoló, kapu, drót, forrás, csomópont Objektumok a valós jelterjedésnek megfelelően egymáshoz kapcsolódnak. (üzennek egymásnak) Visszacsatolás megengedett. C++ programozási nyelv BME-IIT Sz.I
32 Modell Bemenetek f(x) Kimenetek Visszacsatolás A változásokat üzenetek továbbítják. Ha nincs változás, nem küldünk újabb üzenetet. Csak véges számú iterációt engedünk meg. C++ programozási nyelv BME-IIT Sz.I
33 Áramköri elemek felelőssége Kapcsolatok (bemenet/kimenet) kialakítása, nyilvántartása. Bejövő üzenetek tárolása összehasonlítás céljából. Válaszüzenetek előállítása és továbbítása a bejövő üzeneteknek és a működésnek megfelelően. C++ programozási nyelv BME-IIT Sz.I
34 Osztályhierarchia Obj 1+ Conn 2 Drot Csp NAND R_S_FF Forras Message Message Message Message Message C++ programozási nyelv BME-IIT Sz.I
35 Obj: alaposztály Minden áramköri elem ebből származik Felelőssége: az objektumok közötti kapcsolatok leírása (a Conn osztály dinamikus tömbje) kapcsolatokon keresztül az üzenetek (Message objektum) továbbítása, a működést (viselkedést) megvalósító függvény elérése (a set virtuális függvényen keresztül). C++ programozási nyelv BME-IIT Sz.I
36 Obj: absztrakt alaposztály class Obj { String nev; // objektum neve Pin nk; // kapcsolódási pontok száma Conn *konn; // kapcsolatok leírása Obj(const Obj&) ; // hogy ne lehessen használni Obj& operator=(const Obj&); // hogy ne lehessen haszn. public: Obj(const char *n, Pin k) : nev(n) { konn = new Conn[nk = k]; } virtual ~Obj() { delete[] konn; } // tömb felszab. void setnev(const char *n) { nev =String(n); }// név beáll. void setconn(pin k, Obj& o, Pin on); // összekapcs. void uzen(pin k, Message msg); // üzen virtual void set(pin n, Message msg) = 0; //működtet C++ programozási nyelv BME-IIT Sz.I
37 Conn: kapcsolatok tárolása Egy objektumkapcsolatot leíró osztály Példányaiból felépített dinamikus tömb (Obj::konn) írja le egy objektum összes kapcsolatát Miért nem referencia? class Conn { Obj *obj; // ezen objektumhoz kapcsolódik Pin n; // erre a pontra public: Conn() :obj(null) {} void setconn(pin k, Obj& o) { n = k; obj = &o; } // beállít Obj *getconn(pin& k) { k = n; return(obj); } // lekérdez C++ programozási nyelv BME-IIT Sz.I
38 Message: jel mint üzenet Digitális jelet reprezentáló osztály undef, jel 0 és jel 1 értéke van. A végtelen iteráció elkerülése végett a jelszint mellet egy iterációs számláló is van. Megvalósítása struktúrával, mivel az adattakarás csak nehezítene. Műveletei: msg1 == msg2 msg1 + msg2 msg1!= msg2 --msg C++ programozási nyelv BME-IIT Sz.I
39 Message: jel mint üzenet /2 struct Message { enum msgt { undef, jel} typ; // típus bool J; // jelszint 0 v. 1 int c; // iterációs számláló Message(msgt t = undef, bool j = false, int n = 20) :typ(t), J(j), c(n) {} // két üzenet egyenlő, ha az típusuk és jelszintjük is azonos bool operator==(const Message& m) const { return(typ == m.typ && J == m.j); } bool operator!=(const Message& m) const { return(!operator==(m)); } Message operator+(const Message &m) const { return Message(std::max(typ, m.typ, J+m.J, std::max(c,m.c)); } Message& operator--() { if (--c <= 0) throw "Sok Iteracio!"; return(*this); } pre-dekremens op. C++ programozási nyelv BME-IIT Sz.I
40 Üzenet továbbítása /** * Üzenet (msg) küldése a k. pontra kapcsolódó obj. felé */ void Obj::uzen(Pin k, Message msg) { Pin n; // kapcsolodó objektum kapcs. pontja if (k >= nk) throw "Uzenet hiba"; // hiba, nincs ilyen végpont if (Obj *o = konn[k].getconn(n)) { o->set(n, --msg); // szomszéd működtető függvénye } } C++ programozási nyelv BME-IIT Sz.I
41 Drót obj. modellje Obj nev, pin, konn setnev(), setconn(), uzen(), set() 2 Conn obj, n setconn(), getconn() Drot veg[2] set() get() 2 Message J, c ==(),!=() --(), +() C++ programozási nyelv BME-IIT Sz.I
42 Drót kicsit precízebben A diagram szerkesztéséhez az UMLet ( ) programot használtam. C++ programozási nyelv BME-IIT Sz.I
43 Drót class Drot :public Obj { protected: // megengedjük a származtatottnak Message veg[2]; // két vége van, itt tároljuk az üzeneteket public: Drot(const char *n = "") : Obj(n, 2) {} // 2 végű obj. Létrehozása Message get() const { return veg[0] + veg[1]; }//bármelyik vég void set(pin n, Message msg); // működtet void Drot::set(Pin n, Message msg) { if (veg[n]!= msg) { // ha változott veg[n] = msg; // megjegyezzük és uzen(n^1, msg); // elküldjük a másik végére (vezet) } } Gonosz trükk! C++ programozási nyelv BME-IIT Sz.I
44 Csomópont class Csp :public Obj { protected: // megengedjük a származtatottnak Message veg[3]; // három vége van, itt tároljuk az üzeneteket public: Csp(const char *n = "") : Obj(n, 3) {} // 3 végű objektum void set(pin n, Message msg); // működtet void Csp::set(Pin n, Message msg) { if (veg[n]!= msg) { // ha változott veg[n] = msg; // megjegyezzük és uzen((n+1)%3, msg); // elküldjük a másik 2 végére uzen((n+2)%3, msg); } } C++ programozási nyelv BME-IIT Sz.I
45 Kapcsoló class Kapcsolo :public Drot { // Drótból bool be; // állapot public: Kapcsolo(const char *n = "") : Drot(n), be(false) {} void set(pin n, Message msg); jel, false, lehetne undef void kikap() { be = false; uzen(0, Message(Message::jel)); uzen(1, Message(Message::jel)); } void bekap() { be = true; uzen(0, veg[1]); uzen(1, veg[0]);} void Kapcsolo::set(Pin n, Message msg) { if (be) Drot::set(n, msg); // be van kapcsolva, drótként viselk. else veg[n] = msg; // ki van kapcsolva, csak megjegyezzük } C++ programozási nyelv BME-IIT Sz.I
46 0 2 1 NAND kapu class NAND :public Obj { Message veg[3]; // három "vége" van public: NAND(const char *n = "") : Obj(n, 3) {} // 3 végű obj. létreh. void set(pin n, Message msg); // működtet Message get() { return(veg[2]); } // kim. lekérdezése void NAND::set(Pin n, Message msg) { if (n!= 2 && veg[n]!= msg) { // ha változott bemenet veg[n] = msg; // megjegyezzük uzen(2, veg[2] = Message(Message::jel,!(veg[0].J * veg[1].j), msg.c)); // üzenünk a kimeneten } } kimenet előállítása ciklusszám marad C++ programozási nyelv BME-IIT Sz.I
47 S_ (0) R_ (1) N0 N1 2 2 Q (2) Q_ (3) R_S_ tároló Class R_S_FF :public Obj { protected: Message veg[4]; // négy "vége" van NAND N[2]; // két db NAND kapu, komponens public: R_S_FF(const char *n) : Obj(n, 4) { N[0].setConn(2, N[1], 0); // összekötések létrehozása N[1].setConn(2, N[0], 0); } void set(pin n, Message msg); // működtet Message get(int i) { // kimenet lekérdezése if (i >= 2) i = 0; return(veg[i+2]);} C++ programozási nyelv BME-IIT Sz.I
48 R_S_ tároló /2 S_ (0) 1 0 N0 2 Q (2) R_ (1) 0 1 N1 2 Q_ (3) Void R_S_FF::set(Pin n, Message msg) { if (n < 2 && veg[n]!= msg) { // ha input és változott, veg[n] = msg; // letárolja N[n].set(1, msg); // megfelelő bemenetre küldi uzen(2, veg[2] = N[0].get()); // üzen a kimeneten uzen(3, veg[3] = N[1].get()); // üzen a kimeneten } } Kimenetek előállítása, mert bent nincs csomópont. C++ programozási nyelv BME-IIT Sz.I
49 Szimulátorunk próbája Kapcsolo K1("K1"), K2("K2"); Forras F1("F1"), F2("F2"); R_S_FF FF("FF"); try { F1.setConn(0, K1, 0); FF.setConn(0, K1, 1); F2.setConn(0, K2, 0); FF.setConn(1, K2, 1); F1.init(); F2.init(); K1.bekap(); K2.bekap(); cerr << FF.get(0).J << FF.get(1).J << FF.get(2).J << FF.get(3).J << endl; K1.kikap(); cerr << FF.get(0).J << FF.get(1).J << FF.get(2).J << FF.get(3).J << endl; K1.bekap(); cerr << FF.get(0).J << FF.get(1).J << FF.get(2).J << FF.get(3).J << endl; K2.kikap(); cerr << FF.get(0).J << FF.get(1).J << FF.get(2).J << FF.get(3).J << endl; } catch (const char *s) { cerr << s << endl; } C++ programozási nyelv BME-IIT Sz.I F1 F2 K1 FF K
50 Öröklés Összefoglalás újrafelhasználhatóság kompatibilitás heterogén kollekció pointer konverzió adatvesztés virtuális tagfüggvények absztrakt alaposztály C++ programozási nyelv BME-IIT Sz.I
Programozás alapjai II. (5. ea) C++
Programozás alapjai II. (5. ea) C++ mutatókonverziók, heterogén kollekció Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.03.21. - 1 - Öröklés
Programozás alapjai II. (6. ea) C++
Programozás alapjai II. (6. ea) C++ mutatókonverziók, heterogén kollekció Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2018.03.13.
Programozás alapjai II. (6. ea) C++
Programozás alapjai II. (6. ea) C++ mutatókonverziók, heterogén kollekció Szeberényi Imre BME IIT Öröklés (ismétlés) Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
Programozás alapjai II. (5. ea) C++
Programozás alapjai II. (5. ea) C++ mutatókonverziók, heterogén kollekció Szeberényi Imre BME IIT Öröklés (ismétlés) Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia
Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT M Ű E G Y T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2011.04.12. -1- Öröklés
Programozás alapjai II. (5. ea) C++
Programozás alapjai II. (5. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2011.03.8. -1 - OO modellezés
Programozás alapjai II. (5. ea) C++
Programozás alapjai II. (5. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2011.03.8. -1 - OO modellezés
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek Szeberényi Imre BME IIT M Ű E G Y T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2011.03.01. -1-
Programozás II. 4. Dr. Iványi Péter
Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include
C++ programozási nyelv Konstruktorok-destruktorok
C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus
Programozás alapjai II. (5. ea) C++ Objektummodell, öröklés, virtuális tagfüggvény
Programozás alapjai II. (5. ea) C++ Objektummodell, öröklés, virtuális tagfüggvény Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I.
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.03.08. - 1 - OO modellezés
Programozás alapjai II. (4. ea) C++
OO modellezés fogalmai újból Programozás alapjai II. (4. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I.
Programozás alapjai II. (5. ea) C++ Objektummodell, öröklés, virtuális tagfüggvény
Programozás alapjai II. (5. ea) C++ Objektummodell, öröklés, virtuális tagfüggvény Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I.
Programozás II gyakorlat. 8. Operátor túlterhelés
Programozás II gyakorlat 8. Operátor túlterhelés Kezdő feladat Írjunk egy Vector osztályt, amely n db double értéket tárol. A konstruktor kapja meg az elemek számát. Írj egy set(int idx, double v) függvényt,
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia
Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre, Somogyi Péter BME IIT Egy osztályból olyan újabb osztályokat származtatunk,
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2019.04.09.
Objektumok inicializálása
Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2017.02.28. - 1 - OO modellezés
Programozás alapjai II. (4. ea) C++
OO modellezés fogalmai újból Programozás alapjai II. (4. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I.
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I.
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I.
500. AA Megoldó Alfréd AA 500.
Programozás alapjai 2. NZH 2010.05.13. gyakorlat: / Hiány:0 ZH:0 MEGOLD IB.027/51. Hftest: 0 Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
Programozás alapjai II. (8. ea) C++ többszörös öröklés, cast, perzisztencia
Öröklés ism. Programozás alapjai II. (8. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
Programozás alapjai II. (8. ea) C++ többszörös öröklés, cast, perzisztencia
Programozás alapjai II. (8. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.12. - 1 - Öröklés
Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;
Java 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. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely
Programozás II gyakorlat. 6. Polimorfizmus
Programozás II gyakorlat 6. Polimorfizmus Típuskonverziók C-ben: void * ptr; int * ptr_i = (int*)ptr; Ez működik C++-ban is. Használjuk inkább ezt: int * ptr_i = static_cast(ptr); Csak egymással
OOP #14 (referencia-elv)
OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet
Osztályok. 4. gyakorlat
Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum
Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamá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
1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció
1. Öröklés Az objektum orientált tervezés fontos sarkköve, az osztályok viszonyainak a megtervezése. 1.1. Rétegelés c l a s s Address {..... c l a s s Name {..... c l a s s P e r s o n { Name name ; Address
Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum
Bevezetés a programozásba 2 1. Előadás: Tagfüggvények, osztály, objektum Ismétlés int main() { string s; s; s= bla ; cout
Java és web programozás
Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:
500. CC Megoldó Alfréd CC 500.
Programozás alapjai 2. PótZH 2010.05.20. gyakorlat: G1/IB.146 Hiány:3 ZH:7,71 MEGOLD SCH/500. Hftest: 0 ZHp: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;
PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function
117. AA Megoldó Alfréd AA 117.
Programozás alapjai 2. (inf.) pót-pótzárthelyi 2011.05.26. gyak. hiányzás: kzhpont: MEG123 IB.028/117. NZH:0 PZH:n Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
Java és web programozás
Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális
Programozás II. ATM példa Dr. Iványi Péter
Programozás II. ATM példa Dr. Iványi Péter 1 ATM gép ATM=Automated Teller Machine Pénzkiadó automata Kezelő szoftvert szeretnénk írni Objektum-orientált módon 2 Követelmények Egyszerre csak egy embert
STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1
STL gyakorlat C++ Izsó Tamás 2016. május 9. Izsó Tamás STL gyakorlat/ 1 Komponensek kapcsolata Deklarálja az alábbi osztálydiagramon szereplő osztályok közül az A, AA és AB osztályokat! A konstruktorokat
osztályok kapcsolata Származtatatás C++ Izsó Tamás 2014. március 19. Izsó Tamás Származtatatás/ 1
Származtatatás C++ Izsó Tamás 2014. március 19. Izsó Tamás Származtatatás/ 1 Dinamikus tagváltozó az osztályban class RVektor { i n t n ; R a c i o n a l i s p ; p u b l i c : RVektor ( i n t n=10 ) :
3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
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.
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. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat
Programozás C++ -ban
8. Dinamikus objektumok Programozás C++ -ban Ahhoz hogy általános prolémákat is meg tudjunk oldani, szükség van arra, hogy dinamikusan hozhassunk létre vagy szüntethessünk meg objektumokat. A C programozási
ISA szimulátor objektum-orientált modell (C++)
Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált
Virtuális függvények (late binding)
Virtuális függvények (late binding) Miskolci Egyetem Általános Informatikai Tanszék Virtuális függvények CPP5 / 1 Azonos nevű függvények megkülönböztetése paraméterszignatúra (függvény overloading) - egy
Felhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
128. AA Megoldó Alfréd AA 128.
Programozás alapjai 2. PótZH 2010.05.20. gyakorlat: Hiány:0 ZH: MEGOLD SEHOL/5. Hftest: 0 ZHp: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék
Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma
1.AA MEGOLDÓ BERCI AA 1.
Programozás alapjai 2. (inf.) 2. zárthelyi 2015.05.07. gyak./lab. hiányzás: 3/2 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra írt megoldásokat
Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat
Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot
Objektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt
Programozás alapjai II. (2. ea) C++
Programozás alapjai II. (2. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.02.23.
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
Eötvös Loránd Tudományegyetem Informatikai Kar Objektumelvű alkalmazások fejlesztése 6. gyakorlat, polimorfizmus 2011.10.27. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Kódismétlődés
Programozás C++ -ban 2007/4
Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos
0. Megoldó Manó 0. Programozás alapjai 2. (inf.) pót zárthelyi gyak. hiányzás: 2 n/kzhp: n/11,5. ABCDEF IB.028/2.
Programozás alapjai 2. (inf.) pót zárthelyi 2014.05.22. gyak. hiányzás: 2 n/kzhp: n/11,5 ABCDEF IB.028/2. Hftest: 4 (2,4p) Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot,
Programozás II. 6.Öröklés Dr. Iványi Péter
Programozás II. 6.Öröklés Dr. Iványi Péter 1 Öröklés Programozók lusta emberek, nem szeretnék valamit kétszer leírni Miért veszélyes? Nem hatékony Újra kell tárolni a kódot, újra le kell fordítani Karbantartás
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?
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? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"
1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon
1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (
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) {} };
A C++ kódokban lévő makrókat melyik egység dolgozza fel az alábbiak közül? preprocessor A szabványos C++-ban nem is írhatunk makrókat (csak C-ben) assembler linker Az alábbi példában a Foo f(5); konstruktor
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
Osztály és objektum fogalma
Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály
Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok
Bevezetés a programozásba II 5. Előadás: Másoló konstruktor, túlterhelés, operátorok Emlékeztető struct Vektor { int meret, *mut; Vektor(int meret); int szamlal(int mit); }; int Vektor::szamlal(int mit)
Programozás C++ -ban 2007/7
Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum
1. Alapok. Programozás II
1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph
JAVA PROGRAMOZÁS 2.ELŐADÁS
Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,
Származtatási mechanizmus a C++ nyelvben
Származtatási mechanizmus a C++ nyelvben Miskolci Egyetem Általános Informatikai Tanszék CPP2 / 1 Az öröklődés s fogalma 1. Egy osztály deklarálható valamely más osztály(ok) leszármazottjaként. Az deklaráció
.AA Megoldó Alfréd AA.
Programozás alapjai 2. (inf.) pót zárthelyi 2013.05.23. gyak. hiányzás: kzh: ZH:0 ABCDEF MEG/200. Hftest: (p) Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,
Programozás alapjai II. (3. ea) C++ Programfejlesztés. Néhány programozási módszer. Feladatanalízis. Modellezés Tervezés. Implementáció (programozás)
Programozás alapjai II. (3. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása Szeberényi Imre BME IIT M Ű E G Y T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2011.02.22.
Mit ír ki? feladatok megoldásokkal
Mit ír ki? feladatok megoldásokkal A feladatgyűjtemény 2006 és 2015 között ZH feladatként kiadott C++ feladatokat és megoldásukat tartalmazza. A megoldásokat sárga kiemeléssel jelöltük. Tartalomjegyzék
503.AA Megoldo Arisztid 503.A
Programozás alapjai 2. (inf.) 2. ZH 2017.04.27. gy./l. hiány: / ABCD123 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra írt megoldásokat értékeljük!
C++ programozási nyelv
C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok
Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.
Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum
Programozás C++ -ban
Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
Programozás alapjai II. (2. ea) C++ Programfejlesztés. Néhány programozási módszer. Feladatanalízis. Modellezés Tervezés. Implementáció (programozás)
Programozás alapjai II. (2. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.02.23.
Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.
Programozás C++ osztályok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. április 8. Csak bázisosztályként használt/értelmezhető
Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelé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;
JAVA PROGRAMOZÁS 3.ELŐADÁS
Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 3.ELŐADÁS 2014-2015 tavasz Polimorfizmus, absztrakt osztályok, interfészek 2 Példa - Hengerprogram 3 Példa - Hengerprogram 4 Példa - Hengerprogram
Programfejlesztés. Programozás alapjai II. (3. ea) C++ Néhány programozási módszer. Korai szoftverkészítés jellemzői. Gépi nyelv? Strukturált tervezés
Programozás alapjai II. (3. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása Szeberényi Imre BME IIT Programfejlesztés Feladatanalízis világ = dolgok + tevékenységek Modellezés
BME MOGI Gépészeti informatika 8.
BME MOGI Gépészeti informatika 8. 1. feladat Készítse beosztottak és vezetők munkahelyi adatait kezelő alkalmazást! A feladat megoldásához hozza létre a következő osztályokat! Beosztott osztály: adatmező
Java programozási nyelv 5. rész Osztályok III.
Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
0.2.1 Operátorok túlterhelése (műveletek definiálhatók felhaszn. típusokra) Kutya. Eb1. Eb2. Név (txt): Rex. Blöki. Német juhász 3
0 Az objektum-orientáltság 0.1 Objektum fogalma Egy rendszer egyedileg azonosítható szereplője adatokkal és működéssel. Egységbezárás (encapsulation) - viselkedés a külvilág felé - belső struktúra (kívülről
Java programozási nyelv 4. rész Osztályok II.
Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék
OOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
C# osztályok. Krizsán Zoltán
C# osztályok Krizsán Zoltán Fogalma Önálló hatáskőrrel rendelkező, absztrakt adattípus, amely több, különböző elemet tartalmazhat. Minden esetben a heap-en jön létre! A programozó hozza létre, de a GC
Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira
Programozás II gyakorlat 7. Példák a polimorfizmus alkalmazásaira Probléma class A { public: ~A() { cout
Objektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt
Programozás. Osztályok, Származtatott osztályok. Fodor Attila
Programozás Osztályok, Származtatott osztályok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. március 11. Beadandó feladat
Programozás alapjai II. (2. ea) C++ Programfejlesztés. Néhány programozási módszer. Feladatanalízis. Modellezés Tervezés. Implementáció (programozás)
Programozás alapjai II. (2. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2017.02.14.
Java és web programozás
Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)
és az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése
Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Készítette: Gregorics Tibor Szabóné Nacsa Rozália Alakítsunk át egy infix formájú aritmetikai kifejezést postfix
Programozás módszertan
Programozás módszertan p. Programozás módszertan Operátorok túlterhelése a C++ nyelvben Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA TANSZÉK Bevezetés Programozás
- 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]++;
Az alábbi feladatokat a AUT.BME.HU tanszéki weboldalon fellelhető AUT C++ Példatárból másoltam ki. A feladatokat a Programozás alapjai 2. ZH-ra való felkészülés jegyében válogattam, a példák nagy részét
Objektumorientált programozás C# nyelven III.
Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és