Programování v C++ 3, 3. cvičení

Podobné dokumenty
Programování v C++ 2, 4. cvičení

Programování v C++ 1, 5. cvičení

Programování v C++ 1, 6. cvičení

Programování v C++ 2, 7. cvičení

Více o konstruktorech a destruktorech

Programování v C++, 2. cvičení

Programování v C++ 2, 8. cvičení

Mělká a hluboká kopie

Programování v C++ 1, 16. cvičení

Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

přetížení operátorů (o)

Programování v C++ 1, 17. cvičení

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Programování v C++ 1, 1. cvičení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

PREPROCESOR POKRAČOVÁNÍ

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Programování v C++ 1, 14. cvičení

24. listopadu 2013, Brno Připravil: David Procházka

Programování II. Návrh programu I 2018/19

Konstruktory a destruktory

Objektové programování

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.

Objektově orientované programování. Úvod

přetížení operátorů (o)

Abstraktní třídy, polymorfní struktury

Programování v C++ VI

Programování II. Polymorfismus

Dědění, polymorfismus

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

PB161 Programování v jazyce C++ Přednáška 4

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Principy objektově orientovaného programování

Základy objektové orientace I. Únor 2010

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Teoretické minimum z PJV

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Chování konstruktorů a destruktorů při dědění

Generické programování

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Jazyk C++ I. Polymorfismus

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

20. Projekt Domácí mediotéka

Programování v jazyce C a C++

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

1. Dědičnost a polymorfismus

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Základy C++ I. Jan Hnilica Počítačové modelování 18

Úvod do programovacích jazyků (Java)

PB161 Programování v jazyce C++ Přednáška 1

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Vector datový kontejner v C++.

Jazyk C++ II. Šablony a implementace

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

IRAE 07/08 Přednáška č. 1

NMIN201 Objektově orientované programování 1 / :36:09

PB161 Programování v jazyce C++ Přednáška 4

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

Jazyk C++, některá rozšíření oproti C

Programování v jazyce C a C++

PROGRAMOVÁNÍ V C++ CVIČENÍ

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016

Dědičnost (inheritance)

C++ objektově orientovaná nadstavba programovacího jazyka C

Jazyk C++ I. Šablony 2

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Jazyk C# (seminář 3)

NPRG031 Programování II 1 / :25:46

Seminář Java II p.1/43

Objekty a třídy. Procedurální a objektově orientované programování. V této kapitole se naučíte: Procedurální a objektově orientované programování

Třídy a struktury v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++

Úvod do programování - Java. Cvičení č.4

Výčtový typ strana 67

16. února 2015, Brno Připravil: David Procházka. Konstruktory a destruktory

Základy programování (IZP)

Jazyk C++ I. Šablony

Abstraktní datové typy

Dynamika objektů. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

PB přednáška (21. září 2015)

PŘETĚŽOVÁNÍ OPERÁTORŮ

Funkční objekty v C++.

Spojová implementace lineárních datových struktur

1. Programování proti rozhraní

Úvod do programovacích jazyků (Java)

konstruktory a destruktory (o)

Mnohotvarost (polymorfizmus)

Základy programování (IZP)

PB161 Programování v jazyce C++ Přednáška 2

Transkript:

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 seznamu 1 Dokončení spojového seznamu 2 3

Odstranění prvku za zadaným prvek 1 získej pomocný ukazatel na prvek následující za zadaným 2 pokud je následník zadaného prvku zarážka, posuň zarážku na mazaný prvek 3 do položky dalsi zadaného prvku ulož ukazatel na následníka mazaného prvku 4 vymaž prvek, na který ukazuje pomocný ukazatel 1 void smazza(seznam *us, Prvek *pom))){ 2 Prvek *naslednik = pom->dalsi; 3 if(naslednik == us->zarazka){ 4 us->zarazka = pom; 5 } 6 pom->dalsi = naslednik->dalsi; 7 delete naslednik; 8 }

Odstranění prvku se zadanými daty 1 najdi prvek obsahující zadaná data 2 do nalezeného prvku překopíruj data z jeho následníka 3 smaž následníka pomocí výše popsané funkce 1 void smaz(seznam *us, Data co){ 2 Prvek *pom = najdi(us, plat); 3 if(!pom) 4 return; 5 pom->data = pom->dalsi->data; 6 smazza(us, pom); 7 }

Přehled Dokončení spojového seznamu 1 Dokončení spojového seznamu 2 3

Softwarový objekt Objekt Softwarový objekt představuje model nějaké části reálného světa. Datový typ určen: množinou přípustných hodnot množinou operací, které lze s hodnotami provádět Objektový typ: vlastní datové typy umožňují definovat množinu hodnot objektové typy umožňují navíc definovat i operace nad touto množinou

Terminologie třída (class) jiné označení pro objektový typ instance, objekt (object) proměnná, konstanta nebo parametr objektového typu Položky třídy: atribut datová položka metoda funkční položka funkce konstruktor destruktor vlastnost atribut doplněný o přístupové metody

Vlastnosti objektových typů 1 zapouzdření (encapsulation) definice datových složek společně s metodami omezení přístupu k určitým složkám 2 dědičnost (inheritance) možnost od jedné třídy (předek) odvodit jinou třídu (potomek) potomek zdědí metody a atributy předka, některé lze překrýt, jiné lze doplnit Potomek může zastoupit předka. 3 mnohotvárnost (polymorfismus) práce s instancemi neznámého typu: předek nebo potomek? určení typu instance za běhu programu

Syntaxe Dokončení spojového seznamu Objektový typ class identifikátor [:identifikátory předků]{ <seznam sekcí> } Sekce <specifikace přístupu> <seznam metod> <seznam atributů> Určení přístupu: public položky veřejné sekce přístupné odkudkoliv private položky soukromé sekce dostupné jen v rámci třídy, ve které byly deklarovány protected položky chráněné sekce dostupné jen v rámci třídy, ve které byly deklarovány, a jejích potomcích

Práce s objektovými typy instance obvykle vytvářeny dynamicky konstruktor speciální metoda sloužící k inicializaci instance, obvykle nastaví hodnoty atributů přístup k požadované položce pomocí operátoru selekce (tečka:.) při implementaci metod musíme kvalifikovat metodu jménem třídy, ke které náleží ukazatel this na aktuální instanci destruktor speciální metoda sloužící k úklidu před zrušením instance (uvolnění paměti, uzavření otevřených souborů,... )

Přehled Dokončení spojového seznamu 1 Dokončení spojového seznamu 2 3

Zadání Dokončení spojového seznamu Zadání příkladu Napište třídu TVektor, která bude reprezentovat bod ve dvourozměrném prostoru. Třída bude mít dva soukromé atributy X a Y. Naprogramujte veřejné přístupové metody, které umožní získat a měnit hodnotu těchto atributů. Dále zkuste napsat metody pro tisk a pro získání vzdálenosti od počátku soustavy souřadné (velikost radiusvektoru).

Třída TVektor 1 class TVektor{ 2 public: //verejna sekce 3 TVektor(); //konstruktory 4 TVektor(float xx, float yy); 5 ~TVektor(); //destruktor 6 void tisk(); 7 float delka() const; 8 void nastavx(float xx); 9 void nastavy(float yy); 10 float vratx() const; 11 float vraty() const; 12 private: //soukroma sekce 13 float x, y; 14 };

Přístupové metody 1 void TVektor::tisk(){ 2 cout << "[" << vratx() << ", " << vraty() 3 << "]" << endl; 4 } 5 void TVektor::nastavX(float xx){ 6 this->x = xx; //oouziti ukazatele this 7 } 8 float TVektor::vratX() const{ 9 return x; 10 } 11 float TVektor::delka() const{ 12 return sqrt(vratx()*vratx()+vraty()*vraty()); 13 }

Konstruktory a destruktor 1 TVektor::TVektor(float xx, float yy){ 2 nastavx(xx); 3 nastavy(yy); 4 } 5 6 TVektor::TVektor(){ 7 TVektor(0, 0); 8 } 9 10 TVektor::~TVektor(){ 11 std::cout << "Rusi se instance" << std::endl; 12 }

Použití třídy TVektor 1 int main(){ 2 TVektor a; 3 a.nastavx(3); 4 a.nastavy(2); 5 TVektor *b = new TVektor(3, -2); 6 a.tisk(); 7 b->tisk(); 8 cout << "Delka vektoru a:" << a.delka() << endl; 9 delete b; 10 return 0; 11 }

Závěr Dokončení spojového seznamu 1 opakování již procvičených pojmů struktury práce s dynamickou pamětí operátory new, delete dokončení neobjektové implementace spojového seznamu 2 nové pojmy úvod do objektově orientovaného programování třída, objekt metody, atributy zapouzdření specifikace přístupu přístupové metody

Zadání domácího úkolu Zadání úkolu Napište program, který číslo zadané v desítkové soustavě převede do šestnáctkové soustavy. Program rozdělte do funkcí: jedna funkce provede vlastní převod a uloží výsledek do paměti a druhá funkce uložený výsledek vypíše na standardní výstup.