Abstraktní třídy, polymorfní struktury
|
|
- Václav Vopička
- před 5 lety
- Počet zobrazení:
Transkript
1 Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta informačních technologii, ČVUT v Praze Karel Müller, Josef Vogel, 2011 Programování a algoritmizace 2, BI-PA2, 2011, Přednáška 9 BI-PA2 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
2 Témata abstraktní třídy polymorfní datové struktury Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 2/32
3 Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 3/32 Abstraktní třídy Příklad: čítače různých typů hodnot Třídu Citac zavedeme bez datových položek, pouze s deklarovanými prototypy metod.
4 Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 4/32 Čítač jako abstraktní třída Citac zvetsit zmensit nastavit hodnota Operace jsou definované až pro potomky IntCitac int hodn int pochodn zvetsit zmensit nastavit hodnota ZnCitac char hodn char pochodn zvetsit zmensit nastavit hodnota DatCitac Datum hodn Datum pochodn zvetsit zmensit nastavit hodnota
5 p9\citac1\citac.h Abstraktní třída Citac (specifikace) Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 5/32 /* citac.h */ #ifndef _CITAC_ #define _CITAC_ struct Citac { Citac() { } virtual ~Citac() { } virtual void zvetsit() = 0; virtual void zmensit() = 0; virtual void nastavit() = 0; virtual void hodnota(char *val) = 0; }; #endif metody budou definovány až v podtřídách
6 p9\citac1\intcitac.h Konkrétní podtřída IntCitac Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 6/32 /* intcitac.h */ #include "citac.h" #include <stdio.h> class IntCitac : public Citac { int hodn; int pochodn; public: IntCitac(int ph) {pochodn = ph; nastavit();} virtual void zvetsit() {hodn++;} virtual void zmensit() {hodn--;} virtual void nastavit(){hodn = pochodn;} virtual void hodnota(char *val) {sprintf(val, "%d", hodn);} };
7 p9\citac1\zncitac.h Konkrétní podtřída ZnCitac Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 7/32 /* zncitac.h */ #include "citac.h #include <ctype.h> #include <stdio.h> class ZnCitac : public Citac { char hodn; char pochodn; public: ZnCitac(char ph) {pochodn = ph; nastavit();} virtual void zvetsit() {hodn++;} virtual void zmensit() {hodn--;} virtual void nastavit() {hodn = pochodn;} virtual void hodnota(char *val) { if (isprint(hodn)) sprintf(val, "%c", hodn); else sprintf(val, "\\%d", hodn); } };
8 p9\citac1\citani.cpp Úprava v proceduře pro čítání Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 8/32 void citani(citac *pc) { int volba; char hodn[100]; do { pc->hodnota(hodn); cout << "Hodnota = " << hodn << endl; volba = menu(); switch (volba) { case 1: pc->zvetsit(); break; case 2: pc->zmensit(); break; case 3: pc->nastavit(); break; } } while (volba > 0); cout << "konec citani" << endl; }
9 p9\citac1\main.cpp Program se dvěma čítači Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 9/32 #include "intcitac.h" #include "zncitac.h" #include "citani.h" #include <iostream> using namespace std; int main() { IntCitac ic(0); ZnCitac zc('a'); cout << "Citace\n"; // Citani cisel cout << "Citani cisel\n" << endl; citani(&ic); // čítá cisla // Citani znaku cout << "\ncitani znaku\n" << endl; citani(&zc); // čítá znaky cout << "Konec\n"; return 0; }
10 Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 10/32 Řešení 2 Jako abstraktní třídu zavedeme typ čitatelných hodnot CitHodnota zvetsit zmensit hodnota Cislo hodn zvetsit zmensit hodnota Znak hodn zvetsit zmensit hodnota Datum den mesic rok zvetsit zmensit hodnota
11 Řešení 2 V čítači nebude hodnota, ale ukazatel na čitatelnou hodnotu Čítač nebude abstraktní, ale konkrétní třída Citac CitHodnota *hodn CitHodnota *pochodn zvetsit zmensit nastavit hodnota objekt typu Cislo, Znak nebo Datum Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 11/32
12 p9\citac2\citac.h Třída Citac Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 12/32 /* citac.h */ #ifndef _CITAC_ #define _CITAC_ #include "cithodn.h" class Citac { CitHodnota *hodn; CitHodnota *pochodn; public: Citac(CitHodnota *ph) {pochodn = ph; nastavit();} void zvetsit() {hodn->zvetsit();} void zmensit() {hodn->zmensit();} void nastavit() {hodn = pochodn;} void hodnota(char *val){hodn->hodnota(val);} }; #endif
13 p9\citac2\cithod.h, cislo.h Abstraktní a konkrétní čitatelná hodnota Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 13/32 /* cithodn.h */ struct CitHodnota { virtual void zvetsit() = 0; virtual void zmensit() = 0; virtual void hodnota(char *val) = 0; }; /* cislo.h */ #include <stdio.h> #include "cithodn.h" class Cislo : public CitHodnota { int hodn; public: Cislo(int c) {hodn = c;} virtual void zvetsit() {hodn++;} virtual void zmensit() {hodn--;} virtual void hodnota(char *val) {sprintf(val, "%d", hodn);} };
14 p9\citac2\main.cpp Program pro čítání čísel a znaků Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 14/32 #include "citani.h" #include "citac.h" #include "cislo.h" #include "znak.h" #include <iostream> using namespace std; int main() { Cislo *pc=new Cislo(0); Znak *pz=new Znak('A'); Citac citcisel(pc); Citac citznaku(pz); cout << "\n\ncitace\n"; cout << "Citani cisel\n" << endl; // Citani cisel citani(&citcisel); cout << "\ncitani znaku\n" << endl; // Citani znaku citani(&citznaku); cout << "Konec\n"; delete pc; delete pz; return 0; } -- Nefunguje nastavit! Proč?
15 Oprava chyby Chyba je v tom, že nastavit uloží do hodn ukazatel na stejný objekt, na který ukazuje pochodn hodn pochodn 0 Je třeba přiřadit ukazatel na dynamicky vytvořenou kopii hodn pochodn 0 0 kopie počáteční hodnoty Vytvoření dynamické kopie sebe sama musí umět čitatelná hodnota Třídu CitHodnota doplníme o virtuální metodu CitHodnota *kopie() Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 15/32
16 Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 16/32 Doplněná třída CitHodnota CitHodnota zvetsit zmensit hodnota kopie Cislo hodn zvetsit zmensit hodnota kopie Znak hodn zvetsit zmensit hodnota kopie Datum den mesic rok zvetsit zmensit hodnota kopie
17 p9\citac3\cithod.h, cislo.h Doplněná třída CitHodnota a Cislo Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 17/32 /* cithodn.h */ struct CitHodnota { virtual void zvetsit() = 0; virtual void zmensit() = 0; virtual void hodnota(char *val) = 0; virtual CitHodnota *kopie() = 0; }; /* cislo.h */ #include <stdio.h> #include "cithodn.h class Cislo : public CitHodnota { int hodn; public: Cislo(int c) {hodn = c;} virtual void zvetsit() {hodn++;} virtual void zmensit() {hodn--;} virtual void hodnota(char *val) {sprintf(val, "%d", hodn);} virtual CitHodnota *kopie(){return new Cislo(hodn);} };
18 p9\citac3\citac.h Upravená třída Citac Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 18/32 /* citac.h */ #include "cithodn.h" class Citac { CitHodnota *hodn; CitHodnota *pochodn; public: Citac(CitHodnota *ph) }; { pochodn = ph; hodn = pochodn->kopie(); } ~Citac() { delete pochodn; delete hodn; } void zvetsit() { hodn->zvetsit(); } void zmensit() { hodn->zmensit(); } void nastavit() { delete hodn; hodn=pochodn->kopie(); } void hodnota(char *val) { hodn->hodnota(val); }
19 Polymorfní datové struktury Abstraktní datový typ (zásobník, fronta, tabulka apod.) je obvykle implementován datovou strukturou Datová struktura obsahuje prvky, pro které mohou být definovány určité operace Homogenní datová struktura obsahuje prvky stejného typu, tzn. každá operace se provádí pro všechny prvky stejně Polymorfní datová struktura obsahuje prvky různých typů, operace s prvky se mohou provádět různě v závislosti na typu prvku Polymorfní datové struktury je třeba implementovat s využitím abstraktní třídy, typy prvků jsou jejími podtřídami Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 19/32
20 Polymorfní zásobník Polymorfní zásobník bude implementován spojovým seznamem dynamických proměnných, které budou obsahovat ukazatel na prvek zásobníku Typy prvků zásobníku budou podtřídami abstraktní třídy Prvek Stack Elem Elem Elem Prvek Prvek Prvek Ve třídě Prvek bude pro všechny prvky bude přetížen operátor <<, který pro výpis použije dynamicky vázanou metodu Print, jejíž definice bude až v podtřídách Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 20/32
21 Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 21/32 Polymorfní zásobník Stack vrch void push(prvek*) Prvek *pop() int isempty() << Elem dalsi hodn Prvek void print(ostream&)=0 << Cislo int hodn void print(ostream&) Znak char hodn void print(ostream&)
22 Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 22/32 p9\polym1\stack.h Polymorfní zásobník /* stack.h */ #include <iostream> using namespace std; class Prvek { public: virtual void print(ostream&) const = 0; friend ostream& operator<<(ostream& s,const Prvek& p) {p.print(s); return s;} }; class Stack { struct Elem { Prvek *hodn; Elem *dalsi; Elem(Prvek *h, Elem *d){hodn = h; dalsi = d;} }; Elem *vrch; public: Stack() {vrch = 0;} ~Stack(); void push(prvek* p) {vrch = new Elem(p, vrch);} Prvek* pop(); int isempty() {return vrch == 0;} friend ostream& operator<<(ostream&, Stack&); };
23 p9\polym1\stack.cpp Polymorfní zásobník Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 23/32 /* stack.cpp */ #include "stack.h" Stack::~Stack() { Elem *p=vrch; while (p) { vrch=vrch->dalsi; delete p; p=vrch; } } Prvek* Stack::pop() { Elem *pom = vrch; Prvek *prvek = vrch->hodn; vrch = vrch->dalsi; delete pom; return prvek; } ostream& operator<<(ostream& s, Stack& stc) { Stack::Elem *pom = stc.vrch; while (pom) { s << *pom->hodn << endl; pom = pom->dalsi; } return s; }
24 p9\polym1\main.cpp Použití polymorfního zásobníku Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 24/32 /* main.cpp */ /* Stack s abstraktnim prvkem */ #include "stack.h" #include <iostream> using namespace std; class Cislo : public Prvek { int hodn; public: Cislo(int h) {hodn = h;} virtual void print(ostream& s) const {s << hodn;} }; class Znak : public Prvek { char hodn; public: Znak(char h) {hodn = h;} virtual void print(ostream& s) const {s << hodn;} };
25 p9\polym1\main.cpp Použití polymorfního zásobníku Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 25/32 void main() { Stack s; Znak z('b'); Cislo c(222); cout << "Polymorfní zásobník\n"; Cislo *pcislo=new Cislo(10); s.push(pcislo); Cislo *pznak=new Znak( a ); s.push(pznak); s.push(&z); s.push(&c); cout << "Vypis zásobníku\n" << s; cout << "Odebirani ze zásobníku\n"; while (!s.isempty()) cout << *s.pop() << endl; delete pcislo; delete pznak; }
26 K parametrům typu reference na nadtřídu Je-li parametr funkce (metody, konstruktoru) typu reference na třídu T, přípustným skutečným parametrem je objekt typu T, kde T je T nebo podtřídou T. Ve druhém případě se předá odkaz na objekt, aniž by se prováděla konverze na T. Bylo použito v předchozím příkladě: class Prvek { public: virtual void print(ostream&) const = 0; friend ostream& operator<<(ostream& s,const Prvek& p) {p.print(s); return s;} }; Funkce operator<< definovaná pro třídu Prvek se vyvolá i pro objekt typu Cislo nebo Znak; vlastní výpis provede metoda print, která je definovaná pro každou podtřídu jinak. Parametr typu reference na nadtřídu může být též výstupním parametrem Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 26/32
27 p9\polym2\main.cpp Výběr ukazatele z polymorfní datové struktury Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 27/32 Při výběru ukazatele na prvek polymorfní datové struktury je někdy třeba jej uložit do proměnné typu ukazatel Obsahuje-li datová struktura ukazatele na instance podtříd abstraktní třídy T, lze vybraný ukazatel uložit přímo (bez přetypování) pouze do proměnné typu T* Příklad 1: Stack s; s.push(new Cislo(10)); s.push(new Znak( a )); Znak *pz = s.pop(); Cislo *pc = s.pop(); Příklad 2: Stack s; s.push(new Cislo(10)); s.push(new Znak( a )); Prvek *p1 = s.pop(); Prvek *p2 = s.pop(); // chyba při překladu // chyba při překladu // O.K. // O.K.
28 p9\polym3\main.cpp Dynamické přetypování na ukazatel na podtřídu Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 28/32 Ukazatel na nadtřídu lze dynamicky přetypovat na ukazatel na podtřídu Příklad: Součet čísel v polymorfním zásobníku int main() { Stack s; s.push(new Cislo(10)); s.push(new Cislo(29)); s.push(new Znak('a')); cout << s; } Cislo *pc; int soucet = 0; while (!s.isempty()) { pc = dynamic_cast<cislo*>(s.pop()); if (pc!=null) soucet += pc->hodn; } cout << "soucet cisel v zasobniku = " << soucet << endl; return 0;
29 p9\polym4\main.cpp Dynamický test typu objektu Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 29/32 Někdy stačí pouze zjistit typ objektu, na který ukazuje proměnná typu nadtřída objektu Příklad: počet čísel a znaků v polymorfním zásobníku #include <typeinfo> int main() { Stack s; s.push(new Cislo(10)); s.push(new Cislo(29)); s.push(new Znak('a')); cout << s; Prvek *p; int pocetcisel = 0, pocetznaku = 0; while (!s.isempty()) { p = s.pop(); if (typeid(*p)==typeid(cislo)) pocetcisel++; else if (typeid(*p)==typeid(znak)) pocetznaku++; } cout << "pocet cisel = " << pocetcisel << endl; cout << "pocet znaku = " << pocetznaku << endl; return 0; }
30 RTTI RTTI - Run Time Type Information mechanizmus umožňující identifikaci typu objektu při běhu programu původně řešeno knihovnami (např. MFC), přičemž v každé jinak proto doplněno do poslední verze jazyka RTTI zahrnuje: dynamické přetypování (operátor dynamic_cast) identifikaci typu objektu (operátor typeid) třídu type_info obsahující informace o typu objektu Použití RTTI ve VC vyžaduje nastavení parametru překladače Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 30/32
31 RTTI Je-li p ukazatel na třídu s dynamicky vázanými metodami, pak výsledek operace dynamic_cast<t*>(p) je typu T* a je různý od NULL, ukazuje-li p na objekt, jehož třída je T nebo potomkem či předkem T, jinak je výsledkem NULL Je-li x proměnná nebo parametr typu reference na třídu s dynamicky vázanými metodami, pak výsledek operace dynamic_cast<t&>(x) je typu T, je-li x instancí třídy T nebo potomka či předka T, jinak vyvolána výjimka bad_cast Je-li x instance nebo identifikátor třídy T s dynamicky vázanými metodami, pak výsledkem operace typeid(x) je dynamická identifikace třídy T Výsledkem operátoru typeid je konstatní reference na objekt typu type_info, který identifikuje třídu při běhu programu Použití operátoru typeid vyžaduje vložení header-souboru <typeinfo.h> Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 31/32
32 Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 32/32 Operátory přetypování const_cast<t>(x) přidává nebo ubírá modifikátory const resp. volatile static_cast<t>(x) běžná přetypování, v rámci hierarchie tříd pouze se statickou kontrolou (bez dynamické kontroly typů) dynamic_cast<t>(x) přetypování ukazatelů nebo referencí v rámci hierarchie tříd s dynamickou kontrolou typů reinterpret_cast<t>(x) implementačně závislá a nepřenositelná přetypování
Mělká a hluboká kopie
Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
VíceJazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
VíceZpracoval: houzvjir@fel.cvut.cz
Zpracoval: houzvjir@fel.cvut.cz 9. Datový typ ukazatel, přetěžování funkcí, typ reference, vstup a výstup, třídy, staticky vázané metody, dědění, dynamicky vázané metody, abstraktní třídy, polymorfní datové
VíceAbstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
VícePřetěžování operátorů
Karel Müller, Josef Vogel (ČVUT FIT) Přetěžování operátorů BI-PA2, 2011, Přednáška 4 1/31 Přetěžování operátorů Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
VíceProgramování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
VíceDynamická identifikace typů v C++.
Dynamická identifikace typů v C++. Pod pojmem "Dynamická identifikace typů" rozumíme zjišťování typů proměnných, nebo objektů v době běhu programu. Identifikaci typů zajišťuje operátor typeid. Než se ale
VícePřetěžování operátorů
Přetěžování operátorů Cíle lekce Cílem lekce je seznámit se s mechanizmem přetížení operátorů a s použitím tohoto mechanizmu při návrhu a implementaci programů. Po absolvování lekce budete: umět využívat
VíceProgramování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
Více2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
VíceKonstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
VíceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
VíceDědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března
Dědičnost Cíle lekce Cílem lekce je naučit se pracovat a využívat dědičnosti při návrhu a tvorbě programů. Lekce je zaměřena hlavně na jednoduchou dědičnost. Bude rovněž vysvětlen rozdíl mezi dědičností
VíceJazyk C++ II. Dynamické identifikace typů
Jazyk C++ II Dynamické identifikace typů AR 2013/2014 Jazyk C++ II Úvod Jak můžeme zjistit druh objektu, na který ukazuje ukazatel? V případě nemusíme typ objektu znát, pokud se jedná o funkci virtuální,
VíceProgramování v C++ 1, 17. cvičení
Programování v C++ 1, 17. cvičení výjimky 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky Binární vyhledávací
VícePokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody
Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro
Vícepřetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního
VíceProgramování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
VíceVíce o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
Vícepřetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - operátor je speciální
VíceDědění, polymorfismus
Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá
VíceProgramování v C++ 1, 6. cvičení
Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
Více<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************
zdroje/zdroje.xml
VíceZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
VíceVector datový kontejner v C++.
Vector datový kontejner v C++. Jedná se o datový kontejner z knihovny STL jazyka C++. Vektor je šablona jednorozměrného pole. Na rozdíl od "klasického" pole má vector, mnoho užitečných vlastností a služeb.
VíceDynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
VícePolymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března
Polymorfismus Cíle lekce Cílem lekce je vysvětlit význam pojmu polymorfismus jako základní vlastnosti objektově orientovaného programování. Lekce objasňuje vztah časné a pozdní vazby a jejich využití.
VícePREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
VíceJazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem
Jazyk C++ 1 Blok 3 Objektové typy jazyka C++ Studijní cíl Ve třetím bloku bude představen a rozebrán nejdůležitější objektový typ jazyka C++ a to sice třída. Po absolvování bloku bude student schopen navrhovat
VíceProgramování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených
VícePreprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceUkazka knihy z internetoveho knihkupectvi www.kosmas.cz
Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena
VíceDatové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
VíceRozptylování, stromy - zákl. vlastnosti
Karel Müller, Josef Vogel (ČVUT FIT) Rozptylování, stromy - zákl. vlastnosti BI-PA2, 2011, Přednáška 12 1/55 Rozptylování, stromy - zákl. vlastnosti Ing. Josef Vogel, CSc Katedra softwarového inženýrství
VíceAbstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VícePŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
Vícetypová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceChování konstruktorů a destruktorů při dědění
Dědičnost V objektově orientovaném programování je dědičnost způsob, jak vytvořit novou třídu použitím již existujících definic jiných tříd. Takto vytvořené třídy přebírají vlastnosti a metody svého předka
VíceŠablony, kontejnery a iterátory
7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by
VícePB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory
PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových
VíceVirtuální metody - polymorfizmus
- polymorfizmus - potomka lze použít v místě, kde je možné použít předka - v dosud probraných situacích byly vždy volány funkce, které jsou známy již v době překladu. V situaci, kdy v době překladu není
VícePROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK
PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK ČÍSLO OPERAČNÍHO PROGRAMU: CZ.1.07 NÁZEV OPERAČNÍHO PROGRAMU: VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST OPATŘENÍ:
VíceC++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++
C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka
VíceFunkční objekty v C++.
Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceDatové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.
Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),
VíceObjektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.
C++ Akademie SH Za áte níci C++ 2. kv tna 2011 Obsah 1 Objektov orientované programování Obsah Objektov orientované programování 1 Objektov orientované programování P et ºování Jev, díky kterému m ºeme
VícePB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Dynamická alokace Kopírovací konstruktor Přetypování v C++ Nikola Beneš 12. října 2015 PB161 přednáška 4: dynamická alokace, kopírovací konstruktor, casting
VíceZákladní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
VícePokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++ Prostory jmen U programů mohou někdy nastat kolize mezi jmény (tříd, funkcí, globálních proměnných atd.) pokud v různých
VíceŠablony, kontejnery a iterátory
11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array
VíceGenerické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
VíceKolekce, cyklus foreach
Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro
VíceAlgoritmizace a programování
Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura
VíceZpracoval: houzvjir@fel.cvut.cz
Zpracoval: houzvjir@fel.cvut.cz 10. Objektově orientované programování v C++. Přetěţování operátorů, generické funkce a třídy, výjimky, knihovny. (A7B36PJC) Obsah OOP v C++... 2 Pro připomenutí - Základní
VíceZáklady C++ I. Jan Hnilica Počítačové modelování 18
Základy C++ I 1 Přechod z C na C++ jazyk C++ je nadmnožinou jazyka C z hlediska syntaxe se jedná o velmi podobné jazyky, spolu s dalšími jazyky "céčkovské" rodiny, jako je např. C# každý platný program
VíceDTP Základy programování Úvod do předmětu
DTP Základy programování 01 - Úvod do předmětu Úvod Co již umíte? Plán předmětu Studijní materiály Způsob ukončení předmětu Základní pojmy I. Řešený problém: Řešeným nebo zpracovávaným problémem je konkrétní
Více1. Dědičnost a polymorfismus
1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář
VíceProgramování II. Polymorfismus
Programování II Polymorfismus Osnova přednášky Vztah přetížení, překrytí a protected přístupu. Co je polymorfismus? Příklad. Přetížení, překrytí, protected Přetížení x překrytí Přetížením řešíme doplnění
VíceJazyk C++ I. Polymorfismus
Jazyk C++ I Polymorfismus AR 2013/2014 Jazyk C++ I Úvod Metody s časnou vazbou jsou překládány jako obyčejné céčkovské funkce. Této metodě je předán jako první implicitní parametr this. Rozdíl mezi obyčejnou
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceSyntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private:
Vyjímky. Pod pojmem výjimka se rozumí nějaká výjimečná situace, která nastane v dané funkci. V jazyce C i C++ se často používá návratových hodnot funkcí, které vracejí úspěšnost provádění nějaké operace
VíceFunkce, intuitivní chápání složitosti
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
VíceIterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;
Iterátory v C++. Iterátor v C++ je vlastně taková obdoba ukazatelů pro kontejnery. Dříve, než se dostaneme k bližšímu vysvětlení pojmu iterátor, ukážeme si jednoduchý příklad, jak pracovat s obyčejným
VícePokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné
VíceJazyk C++ I. Šablony 2
Jazyk C++ I Šablony 2 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()
VíceStandardní algoritmy v C++.
Standardní algoritmy v C++. Standardní algoritmy jsou součástí STL. Jedná se o spoustu užitečných šablon funkcí, které za nás naprogramoval někdo jiný. Na nás je jen, abychom je používali. Také si ukážeme
VíceTŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);
TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;
VíceProgramování v C++ 2, 8. cvičení
Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky
Více9. přednáška - třídy, objekty
třída String a její použití kolekce, typované kolekce 9. přednáška - třídy, objekty Algoritmizace (Y36ALG), Šumperk - 9. přednáška 1 Třída String Objekty knihovní třídy String jsou řetězy znaků Od ostatních
VíceJazyk C++ I. Šablony
Jazyk C++ I Šablony AR 2013/2014 Jazyk C++ I Úvod Zatím známe programovací styly: Strukturované programování, Objektově orientované programovaní. AR 2013/2014 Jazyk C++ I 2 Příklady void Print(const int&
VíceJazyk C++ II. Výjimky
Jazyk C++ II Výjimky AR 2013/2014 Jazyk C++ II Funkce abort Dříve byl obvyklý způsob zavolat metodu abort(). Metoda provádí okamžitě: Vyprázdnění vyrovnávací paměti, Ukončení celého programu, Vrátí číslo
VíceProgramování v C++ První kroky
Programování v C++ První kroky Karel Mozdřeň 29. října 2009 1 Obsah 1 Úvod 5 1.1 Pro koho je kniha určena...................... 5 1.2 Proč první kroky?.......................... 5 2 Začínáme 6 2.1 Hello,
VíceOperační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
VíceMnožina v C++ (set, multiset).
Množina v C++ (set, multiset). Množina je datová struktura, ve které jsou uloženy nějaké prvky. V množině nesmí být dva stejné prvky. Naopak multimnožina může obsahovat i stejné prvky. Nad množinou lze
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti LEXIKÁLNÍ ANALÝZA Kód ve vstupním jazyku Lexikální analyzátor
VícePole, množina, tabulka
Karel Müller, Josef Vogel (ČVUT FIT) Pole, množina, tabulka BI-PA2, 2011, Přednáška 11 1/53 Pole, množina, tabulka Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
VíceJazyk C++ II. Šablony a implementace
Jazyk C++ II Šablony a implementace AR 2013/2014 Jazyk C++ II Úvod Dědičnost a kompozice nejsou vždy tou správnou odpovědí na požadavky znovupoužitelnosti kódu. Proto máme možnost definování určité třídy
VíceIUJCE 07/08 Přednáška č. 6
Správa paměti Motivace a úvod v C (skoro vždy) ručně statické proměnné o datový typ, počet znám v době překladu o zabírají paměť po celou dobu běhu programu problém velikosti definovaných proměnných jak
VíceMartin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016
ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce
Víceint ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N
Struktura (union) - struktura a union jsou složené typy, které "v sobě" mohou obsahovat více proměnných - struktura obsahuje v každém okamžiku všechny své proměnné, union obsahuje (=je "aktivní") pouze
VíceSpojová implementace lineárních datových struktur
Spojová implementace lineárních datových struktur doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB
VíceC++ objektově orientovaná nadstavba programovacího jazyka C
C++ objektově orientovaná nadstavba programovacího jazyka C (1. část) Josef Dobeš Katedra radioelektroniky (13137), blok B2, místnost 722 dobes@fel.cvut.cz 5. května 2014 České vysoké učení technické v
VíceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
VíceStřední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace
Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Datové typy Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 5 Číslo: V/5 Programování v jazyce
VícePB161 Programování v jazyce C++ Přednáška 8
.. PB161 Programování v jazyce C++ Přednáška 8 Výjimky Správa prostředků (RAII) Nikola Beneš 9. listopadu 2015 PB161 přednáška 8: výjimky, RAII 9. listopadu 2015 1 / 24 . PB161 přednáška 8: výjimky, RAII
VícePB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20
VíceKTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
VíceArchitektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.
Architektura COM doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Historie Component Object Model (COM)
VíceJazyk C++ I. Polymorfismus
Jazyk C++ I Polymorfismus AR 2013/2014 Jazyk C++ I Operátory Co to vůbec jsou operátory? Na co je používáme? AR 2013/2014 Jazyk C++ I 2 Operátory Můžeme si upravit operátory pro vlastní objektové typy?
VíceJazyk C# a platforma.net
Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 2. část BI-DNP Evropský sociální fond
VíceDynamické datové struktury I.
Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
VíceAplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a
Aplikace Embedded systémů v Mechatronice Michal Bastl A2/713a Aplikace Embedded systémů v Mechatronice Obsah přednášky: Opakování Pointery v C pole a řetězce předání funkci referencí Vlastní datové typy
VícePB161 Programování v jazyce C++ Přednáška 9
PB161 Programování v jazyce C++ Přednáška 9 Jmenné prostory Výjimky podrobně Nikola Beneš 20. listopadu 2018 PB161 přednáška 9: jmenné prostory, výjimky 20. listopadu 2018 1 / 32 Jmenné prostory PB161
VícePB161 Programování v jazyce C++ Přednáška 5
PB161 Programování v jazyce C++ Přednáška 5 Jmenné prostory Vstupní/výstupní proudy Nikola Beneš 19. října 2015 PB161 přednáška 5: jmenné prostory, vstupní/výstupní proudy 19. října 2015 1 / 29 Jmenné
VíceC++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19
C++ přetěžování funkcí a operátorů 1 Přetěžování funkcí jazyk C++ umožňuje napsat více funkcí se stejným názvem, těmto funkcím říkáme přetížené přetížené funkce se musí odlišovat typem nebo počtem parametrů,
Více