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



Podobné dokumenty
Mělká a hluboká kopie

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

Více o konstruktorech a destruktorech

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

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

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Přetěžování operátorů

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

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

Přetěžování operátorů

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

Abstraktní datové typy

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

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

Abstraktní třídy, polymorfní struktury

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, 5. cvičení

Dědění, polymorfismus

Konstruktory a destruktory

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

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace

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

Standardní algoritmy v C++.

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

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

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

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

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

Programování v jazyce C a C++

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

Šablony, kontejnery a iterátory

Programování v jazyce C a C++

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

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

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

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

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

Programování v C++ VI

Jazyk C++ I. Polymorfismus

2) 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.

Vstupní a vstupní proudy v C++

Jazyk C++ I. Šablony 3

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

konstruktory a destruktory (o)

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

Prostory jmen. #include<iostream.h> namespace RadimuvProstor { int secti(int a, int b); class Trida { private: int Atribut; public: void metoda();

Programování v C++ První kroky

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

Principy objektově orientovaného programování

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

Zpracoval:

Šablony, kontejnery a iterátory

PB přednáška (26. října 2015)

Řetězce. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Martin Flusser. December 15, 2016

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

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;

e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Jazyk C++ I. Šablony 2

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

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

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

Pole a kolekce. v C#, Javě a C++

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

Objektově orientované programování. Úvod

Základy objektové orientace I. Únor 2010

Funkční objekty v C++.

Jazyk C++ II. Šablony a implementace

PREPROCESOR POKRAČOVÁNÍ

Úvod do programovacích jazyků (Java)

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

Jazyk C++ I. Šablony

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

Vector datový kontejner v C++.

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

KTE / ZPE Informační technologie

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

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

Dynamická identifikace typů v C++.

Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private:

2. Ur íme sudost/lichost funkce a pr se íky s osami. 6. Na záv r na rtneme graf vy²et ované funkce. 8x. x 2 +4

Virtuální metody - polymorfizmus

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

Programování v jazyce JavaScript

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Vytváření a použití knihoven tříd

Teoretické minimum z PJV

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

Úvod do programovacích jazyků (Java)

První kapitola úvod do problematiky

Zpracoval:

Pole, množina, tabulka

Přetěžování operátorů, dynamika objektů 2

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

Programování v C++ Ostrava, 2006 Rostislav Fojtík

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

SYSTÉMOVÉ PROGRAMOVÁNÍ Cvičení č.1

Generické programování

Transkript:

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 denovat metody nebo funkce se stejným jménem. P íklad - 01.cpp: int secti(int a, int b){ cout << "Scitani typu int." << endl; return a + b; } double secti(double a, double b){ cout << "Scitani typu double." << endl; return a + b; }

S ítání vlastních objekt - bez p et ºování Pokud máme n jakou vlastní t ídu m ºeme si napsat podobnou funkci se ti. Ov²em narazíme na n kolik problém. P íklad - 02.cpp: Complex secti(complex a, Complex b){ Complex v(0,0); cout << "Scitani typu Complex ("; a.vypis(); cout << ") + ("; b.vypis(); cout << ")." << endl; //problematicky vypis v.setre(a.getre() + b.getre()); //prebytecne setry, getry v.setim(a.getim() + b.getim()); } return v;

S ítání vlastních objekt - s p et ºování Lep²í e²ení je pomocí p et ºování operátor. P íklad - 03.cpp: class Complex{ public: Complex(int, int); Complex operator+(complex) const; friend Complex operator-(complex, Complex); friend ostream& operator<<(ostream &,const Complex &); private: int m_re; int m_im; };

Pokud si vytvo íme objekt a nep edenujeme mu operátor =. Vytvo í se implicitní operátor =, který provádí m lkou kopii. M lká kopie M lká kopie vytvo í p esnou kopii, v²e co bylo ve starém objektu bude nyní v novém. Problém s ukazateli - 04.cpp: Pokud v na²em objektu byl n jaký ukazatel, který ukazoval na dynamicky alokovanou pam, zkopíruje se také, a poté ukazují dva ukazatelé z r znýcho objekt na stejný blok pam ti.

Hluboká kopie Hluboká kopie nám správn zkopíruje i ukazatele. Vytvo í se nové místo v pam t, na toto místo se zkopíruje pot ebná data a správn se nastaví ukazatel na nový blok pam ti. P íklad - 05.cpp: Pokud pot ebujeme v objektu vyuºít hlubokou kopii. Musíme p etíºit operátor =. Array & Array::operator=(const Array & x){ if(this == &x)return *this; delete [] m_pole; prvku = x.prvku; m_pole = new int[10]; for(int i = 0; i < x.prvku; i++) m_pole[i] = x.m_pole[i]; return *this; }

Aby bylo v²e úpln správn musíme je²t o²et it moºnost, kdy je objektu p i azen jiný objekt jiº p i jeho vytvá ení. P íklad Array pole 2 = pole1; Pokud není kopírující konstruktor vytvo en, op t se vytvo í implicitní, který prování m lkou kopii. - 06.cpp: Array::Array(const Array & x){ prvku = x.prvku; m_pole = new int[10]; } for(int i = 0; i < x.prvku; i++) m_pole[i] = x.m_pole[i];

Konec Objektov orientované programování Konec D kuji za pozornost!