OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

(instance konkrétní třídy)
ÚVOD DO C++ 3 TŘÍDY a objekty - POKRAČOVÁNÍ
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole.
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
C++ Přednáška 1 Neobjektové rozšíření jazyka Základy vstupu a výstupu Ing. Jiří Kulhánek, kat. 352, VŠB TU Ostrava 2004.
Pole, ukazatele a odkazy
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
Polymorfismus Dědičnost
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Programování v C++ Cvičení.
Čtvrté cvičení Objektové programování Objektový model v Javě
JavaScript - 5. část Pole Ústav automatizace inženýrských úloh a informatiky FAST VUT v Brně 0U2 - Základy informatiky a výpočetní techniky 2.
( Funkce se symbolickými proměnnými – limity,derivace,integrály )
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
C# - struktury, výčtové typy, pole
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
PB161 Jmenné prostory, I/O proudy PB161 | Jmenné prostory, IO proudy PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Adapter. Adapter – pojem Součástka navržená k propojení dvou „nekompatibilních“ zařízení Definice slova podle Cambridge Advanced Learner's Dictionary:
Objektové programování
C# - funkce a procedury Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Dynamická alokace, polymorfismus
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
DEKLARACE PROMĚNNÝCH A KONSTANT
PB161 – Programování v jazyce C++ Objektově Orientované Programování
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
6. cvičení Polymorfismus
PB161 Právo friend, přetěžování operátorů, přetypování PB161 | Friend, operátory PB161 – Programování v jazyce C++ Objektově Orientované Programování.
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
IB111 Programování a algoritmizace
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
VYTVOŘENÍ TŘÍDY KOMPLEXNÍHO ČÍSLA Vytvořte třídu proměnné, která bude prezentovat komplexní číslo. Zadávat se budou dvě složky, reálná a imaginární. Dále.
OSNOVA: a) Příkazy pro cykly II. b) Příkazy pro řízení přenosu c) Příkazy – příklad d) Řetězce v C e) Funkce “stdio.h“ pro řetězce f) Funkce “string.h“
OSNOVA: a) Příkazy pro větvení b) Příkazy pro cykly c) Příkazy pro řízení přenosu d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
13/04/20151 Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
OSNOVA: a) Algoritmy třídění b) Třídění dynamických záznamů Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 1 pro obor EST.
OSNOVA: a) Ukazatel b) Pole a ukazatel c) Pole ukazatelů d) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 1 pro.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Počítače a programování 1
OSNOVA: a)3D grafické výstupy – doplnění b)Práce se soubory Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST.
Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 11
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA:
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
Programování v jazyce C++ Speciality jazyka C++, úvod do OOP.
Počítače a programování 2
Y36PJC Programování v jazyce C/C++
Úvod do C# - OOP Jaroslav BURDYS 4IT.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Y36PJC Programování v jazyce C/C++
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Tvorba WEBOVÝCH stránek – obrázky
Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 3
C# přehled vlastností.
Transkript prezentace:

OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 4

Přetížení členských funkcí (1/8) - definuje základní přístup k mnohotvarosti (polymorfismu) objektového programování Přetížení členských funkcí - umožňuje definovat různé parametry funkce pro různé případy jejich použití. - lze s výhodou použít i u konstruktorů s různým přístupem inicializace – objekt může být inicializován s parametry v konstruktoru nebo například bez parametrů s defaultní inicializací. - lze použít u funkce tak, aby mohla pracovat s různými typy parametrů např. double sin(double) a současně float sin(float) a podobně. Na základě typu parametrů se pak volá příslušná funkce (použito i v C).

Přetížení členských funkcí (2/8) Příklad: Doplnění třídy pro popis objektu typu obdélník s využitím jednoduché třídy pro bod z příkladu BPC2E_Ex101 o přetížení konstruktoru Deklarace třídy pro obdélník: 4x proměnná typu int + 4x proměnná typu Point class Rect //rectangle class { public: Rect (int top, int left, int bottom, int right); //initialization with input parameters Rect (); //initialization by default values ~Rect () {} …

Přetížení členských funkcí (3/8) Konstruktor pro třídu Rect – inicializace pomocí vstupních int parametrů (stejné jako v hlavičkovém souboru rect.hpp k příkladu BPC2E_Ex101.cpp ) Rect::Rect(int top, int left, int bottom, int right) { Top = top;Left = left; Bottom = bottom;Right = right; TopLeft.SetX(left); TopLeft.SetY(top); TopRight.SetX(right); TopRight.SetY(top); BottomLeft.SetX(left); BottomLeft.SetY(bottom); BottomRight.SetX(right); BottomRight.SetY(bottom); }

Přetížení členských funkcí (4/8) Konstruktor pro třídu Rect bez inicializace parametrů, soukromé členské proměnné jsou naplněny defaultními hodnotami. Rect::Rect() { Top = 10;Left = 0; Bottom = 0;Right = 10; TopLeft.SetX(left); TopLeft.SetY(top); TopRight.SetX(right); TopRight.SetY(top); BottomLeft.SetX(left); BottomLeft.SetY(bottom); BottomRight.SetX(right); BottomRight.SetY(bottom); } Kompletní deklarace a definice metod třídy umístěna do rect1.hpp

Přetížení členských funkcí (5/8) Volání obou typů (přetížených) konstruktorů (defaultní a s iniciali- zací) pro vytvoření objektů typu obdélník int main() {//new object with default parameters Rect my_rect_A; int SA = my_rect_A.GetArea(); std::cout << "Area of my_rect_A: " << SA << "\n"; //new object with user parameters Rect my_rect_B(10, 5, 0, 25); int SB = my_rect_B.GetArea(); std::cout << "Area of my_rect_B: " << S << "\n"; return 0; } Příklad: BPC2E_Ex109.cpp + rect1.hpp

Přetížení členských funkcí (6/8) #include class Rect { public: Rect(int wi, int he); ~Rect(){} //two ways, how to print object rectangle: void PrintRect() const; //with parameters of given object void PrintRect(int wi, int he) const; //with reiniciated parameters private: int W; int H; }; Příklad: Přetížení metod pro kreslení obdélníku – kreslení obdélníku podle parametrů objektu – kreslení obdélníku s vlastní reinicializací parametrů

Přetížení členských funkcí (7/8) void Rect::PrintRect() const { //using params of object PrintRect(W, H); //calling print method } void Rect::PrintRect(int wi, int he) const { //using new parameters for(int i = 0; i < he; i++) { for(int j = 0; j < wi; j++) { std::cout << "\xDB"; //print char █ } std::cout << "\n"; //print new line } Definice obou metod pro vykreslení obdélníku Tiskne se plný obdélník s danou šířkou a výškou ze znaků █

Přetížení členských funkcí (8/8) int main() { Rect A(25,5); //new rectangle with initialization std::cout << "\nrectangle A:\n"; A.PrintRect(); // print rectangle with params // of object std::cout << "\nrectangle B:\n"; A.PrintRect(40,2); // print rectangle with spec. // parameters return 0; } Generování objektu obdélník s definovanými parametry a jeho následný tisk a tisk obdélníku s reinicializovanými parametry, tyto parametry se neukládají do privátních proměnných objektu W a H Příklad: BPC2E_Ex110.cpp

Dědičnost tříd (1/10) Dědičnost tříd: - je vlastnost OOP, která umožňuje vytvářet nové objekty na základě již vytvořených objektů s využitím dědění jak proměnných tak i metod původní třídy, nová metoda se označuje jako odvozená třída syntaxe: class derived_class:acces_type basic_class {declaration} Např. class dog:public mammal { }

Dědičnost tříd (2/10) Příklad: Ukázka odvození třídy Pes od třídy Savec #include using namespace std; enum RASA {ZLATY_RETRIEVER, PUDL, JEZEVCIK, OVCAK, DOBRMAN, LABRADOR}; // deklarace třídy Savec class Savec { public: Savec(); //výchozí konstruktor ~Savec(); //destruktor int VratVek() const; //přístupové metody void ZadejVek(int); int VratVahu() const; void ZadejVahu(int); …

Dědičnost tříd (3/10) … void Promluvit() const; //výkonné metody void Spat() const; protected: int Vek; //privátní proměnné int Vaha; };

Dědičnost tříd (4/10) // deklarace třídy Pes class Pes : public Savec //přebírají se všechny // metody a proměnné public a protected { public: Pes();//výchozí konstruktor ~Pes(); //destruktor RASA VratRasu() const;// přidané přístupové metody void ZadejRasu(RASA); VrtetOcasem(); // přidaná výkonná metoda protected: // přidaná nová položka, // protože je protected, RASA jehoRasa;// bude děděna dceřinnou // třídou odvozenou od třídy Pes };

Dědičnost tříd (5/10) Specifikátory přístupu: public (veřejný) – k proměnné je přístup odkudkoli, lze ji měnit např. ve funkci main() : Pes Alik; Alik.Vek = 15; private (soukromý) – k proměnné je přístup jen v rámci objektu dané třídy – pro přístup odjinud je zapotřebí použití přístupových metod protected (chráněný) - proměnná je pro danou třídu privátní avšak může se k ní přistupovat i v objektech odvozených tříd

Dědičnost tříd (6/10) Příklad: Třída Dog odvozená ze třídy Mammal a použití #include enum BREED {GOLD_RETRIEVER, POODLE, DACHSHUND, SHEEPDOG, SLEUTH, LABRADOR}; class Mammal //parent class { public: Mammal(); ~Mammal(); int GetAge() const {return Age;} void SetAge(int new_age) {Age = new_age;} int GetWeight() const {return Weight;} void SetWeight(int new_weight) {Weight = new_weight;}

Dědičnost tříd (7/10) … void Outspeak() const {std::cout << "Voice of mammal.\n";} void Sleep() const {std::cout << "Psssst. Go to sleep.\n";} protected: int Age; int Weight; };

Dědičnost tříd (8/10) class Dog : public Mammal //derived class { public: Dog(); ~Dog(); BREED GetBreed()const {return Dog_breed;} void SetBreed(BREED new_breed) {Dog_breed = new_breed;} void WagByTeil()const {std::cout << "Dog is wagging by its tail.\n";} void BegForGrub()const {std::cout << "Dog is begging for grub.\n";} private: BREED Dog_breed; }; odvozená třída Dog

Dědičnost tříd (9/10) Mammal::Mammal(): //constructor with inicialization Age(1), Weight(5) { std::cout << "Constr. of Mammal is active.\n"; } Mammal::~Mammal() { std::cout << "Destr. of Mammal is active.\n"; } Dog::Dog(): //constructor with inicialization Dog_breed(GOLD_RETRIEVER) { std::cout << "Constructor of Dog is active.\n"; } Dog::~Dog() { std::cout << "Destructor of Dog is active.\n"; }

Dědičnost tříd (10/10) int main() { Dog Fido; Fido.Outspeak(); //method from parental class Fido.WagByTeil(); Fido.BegForGrub(); std::cout << "Fido is" << Fido.GetAge() << " years old\n"; Fido.SetAge(3); std::cout << "Fido is now" << Fido.GetAge() << " years old\n"; return 0; } Příklad: BPC2E_Ex111.cpp Výsledek: Nejprve se volají konstruk- tory nadřazených tříd, des- truktory pak v opačném sledu

Téma následující přednášky – Vývojové prostředí MS Visual Studio a OOP C++ projekty DĚKUJI ZA POZORNOST