Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19
|
|
- Štefan Zeman
- před 6 lety
- Počet zobrazení:
Transkript
1 Programování II Abstraktní třída Vícenásobná dědičnost 2018/19
2 Osnova přednášky Polymorfismus - důsledky. Abstraktní třída. Vícenásobná dědičnost.
3 Polymorfismus - důsledky
4 Polymorfismus Polymorfismus je schopnost objektu vystupovat v různých rolích (formách) Časná a pozdní vazba. Kdy kterou použít? Souvisí to se substitučním principem, tedy se zastupitelností předka potomkem. V C++ je polymorfismus spojen s dědičností!!! Nejde tedy jen o obyčejné překrytí.
5 Virtuální metody Jednou označená metoda jako virtuální zůstává virtuální ve všech potomcích. Uvnitř konstruktorů sice můžeme volat virtuální metody, ale ty se budou chovat nevirtuálně. Virtuální destruktor je potřeba, pokud použijeme polymorfní přiřazení
6 Nevirtuální destruktor
7 Výsledek
8 Virtuální destruktor
9 Výsledek
10 Abstraktní třída
11 Čistě virtuální metoda Metoda, která má pouze deklaraci. Nemá implementaci (definici). K čemu to je dobré? Pro správný návrh
12 Čistě virtuální metody
13 Dědičnost z nové třídy
14 Výsledek
15 Proč??? Ale
16 Abstraktní třída Třída, která má alespoň jednu čistě virtuální metodu se nazývá abstraktní. Abstraktní proto, že nemůžeme vytvořit její instanci. Může, ale nemusí, mít členské proměnné a implementované metody. Má konstruktor a destruktor. Pro potomka.
17 Čistě abstraktní třída Třída, jejíž všechny metody jsou čistě virtuální. K čemu může být taková třída? Jako prázdný vzor pro dědičnost. Deklaruje, ale nedefinuje, budoucí společné chování potomků. Je jako interface v Java nebo C#.
18 Dědičnost účtů AbstractAccount abstraktní třída Account PartnerAccount CreditAccount Kdo tedy má implementovat čistě virtuální metodu? Potomek!!!
19 Vícenásobná dědičnost
20 Vícenásobná dědičnost Může potomek dědit z více tříd? Proč ne? Proč ano? Je to pěkný koncept, ale poněkud nebezpečný a často obtížně pochopitelný
21 Tak tudy opravdu ne
22 Ale proč ne?
23 Není to pro začátečníky a pokročilí se bez toho obejdou. Problém je v tom, že Teacher a Student nejsou oddělené abstrakce. Sdílejí společné rysy University_Person. Je tam i problém technický?
24 Má to tedy smysl? Předci musí to být různé abstrakce. Různé abstrakce můžeme chápat tak, že NEMAJÍ společný stav ani chování. Pak má smysl o vícenásobné dědičnosti uvažovat.
25 Správný příklad Letadlo společnosti je: Letadlem s technickými parametry a funkcemi s nimi spojenými. Majetkem s evidenčními údaji a odpovídající funkčností.
26 A další
27
28 Obejdeme se bez ní? Ano, ale Někdy potřebujeme, aby třída měla vlastnosti nad rámec základní abstrakce, kterou jinak popisuje. Je to opět o zastupitelnosti předka potomkem. Tentokrát ale může potomek vystupovat v rolích, které se chováním podstatně liší.
29 Problémy, které mohou nastat Konflikty jmen Třídy, ze kterých se dědí, mohou mít stejně pojmenované členské položky (proměnné i metody). Dá se vyřešit různými způsoby. Opakovaná dědičnost Dá se uhlídat, že se vícekrát nedědí z jedné a téže třídy? Tady je to trošku horší
30 Opakovaná dědičnost Nepřímá Přímá
31 A hlavně nenápadně Redundantní dědičnost
32 Proč se o tom tedy bavíme? Je to užitečný koncept, zejména proto, že objekt může zastupovat dvě odlišné abstrakce Musí se ale používat s rozmyslem. A kdy tedy?
33 Použití vícenásobné dědičnosti Potřebujeme-li, aby objekty reprezentovaly v různých situacích různé abstrakce. Nejlépe natolik různé, že nehrozí konflikty jmen. Souvisí to se zastupitelností předka potomkem. Ideální je, pokud jsou předci čistě abstraktní třídy (bez dat). Pak je to totéž, co v moderních objektových jazycích interface. Interface je koncept, který se prosadil jako náhrada vícenásobné dědičnosti.
34 Implementuje příklady z přednášky, zaměřte se na využití abstraktní a čistě abstraktní třídy a na to, jak fungují konstruktory a destruktory. Reimplementuje jednoduchou dědičnou hierarchii geometrických objektů tak, aby jste využili abstraktní a čistě abstraktní třídy.
35 Kontrolní otázky Co je čistě virtuální metoda? Kdy je vhodné použít čistě virtuální metodu? Uveďte příklad. Co je abstraktní třída? Kdy je vhodné použít abstraktní třídu? Uveďte příklad. Má abstraktní třída konstruktor a destruktor? A proč? Může mít abstraktní třída členská data a funkce (metody)? Co je čistě abstraktní třída? Co je vícenásobná dědičnost? Kdy není vhodné použít vícenásobnou dědičnost? Uveďte příklad. Kdy je možné použít vícenásobnou dědičnost? Uveďte příklad. Jaké problémy mohou nastat při použití vícenásobné dědičnosti? Uveďte příklad Co je opakovaná dědičnost? Uveďte příklady. Proč můžeme potřebovat vícenásobnou dědičnost? S čím to souvisí?
36 Ke studiu Bertrand Meyer. Object-Oriented Software Construction. Prentice Hall [ , ]
Programová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í
Programování II. Dědičnost změna chování 2018/19
Programování II Dědičnost změna chování 2018/19 Osnova přednášky Rozšíření chování. Změna chování. Příklad. Rozšíření chování Když rozšiřujeme chování Můžeme bezpečně použít to, co už máme. Nehrozí žádný
Programování II. Úvod do dědičnosti 2018/19
Programování II Úvod do dědičnosti 2018/19 Osnova přednášky Co řeší dědičnost? Příklad. Dědičnost základní princip. Co řeší dědičnost? Co se řeší? Znovu-použitelnost Nechceme znovu opisovat (kopírovat)
Programování II. Návrh programu II
Programování II Návrh programu II Osnova přednášky Dědičnost shrnutí. Návrh programu s využitím dědičnosti Dědičnost shrnutí Klíčové otázky CO je dědičnost? PROČ použít dědičnost? KDY použít dědičnost?
Programování II. Objektová dekompozice Třída jako objekt 2018/19
Programování II Objektová dekompozice Třída jako objekt 2018/19 Osnova přednášky Co je lepší? Funkce nebo objekty? Může být třída zároveň objektem? Příklad. Funkce nebo objekty? Funkce x objekty Je lepší
Programování II. Třídy a objekty (objektová orientovanost) 2018/19
Programování II Třídy a objekty (objektová orientovanost) 2018/19 Osnova přednášky Objektový přístup (proč potřebujeme objekty). Třídy, objekty,... Příklad. Proč potřebujeme objekty? Udržovatelnost softwaru
Programování II. Modularita 2017/18
Programování II Modularita 2017/18 Modul? Osnova přednášky Vývoj programování Modularita Příklad Vývoj programování Paradigmata programování Jak a proč se jazyky vyvíjejí? V čem se OOP liší od předchozích
Virtuá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í
Polymorfismus. Č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í.
1. 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ář
7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ
Page 1 of 7 7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ 1. Úvod 2. Obalení 3. Dědičnost 4. Polymorfismus 5. Statické a virtuální metody 6. Dynamické objekty 7.1 ÚVOD Objektově orientované programování (dále
Abstraktní třída a rozhraní
Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě
PB161 Programování v jazyce C++ Přednáška 7
PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z
PB161 Programování v jazyce C++ Přednáška 7
PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z
20. Projekt Domácí mediotéka
Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý
3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda
1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání
Základy objektové orientace I. Únor 2010
Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných
Dě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á
typová 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
Programování v C++ VI
Programování v C++ VI Konstruktory, destruktory a dědičnost Konstruktory a dědičnost I když jsme se bavili o dědičnosti, trochu jsme zapomněli na konstruktory to se ale nevyplácí, vzpomeňte si, jak důležitý
24. listopadu 2013, Brno Připravil: David Procházka
24. listopadu 2013, Brno Připravil: David Procházka Dědičnost Základy objektového návrhu Časná a pozdní vazba Strana 2 / 22 Obsah přednášky 1 Časná a pozdní vazba 2 Rozhraní pro dědičnost 3 Konstruktory
Programová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é
Dynamicky 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:
Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.
13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny
Generické 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 =
Pokroč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
11 Diagram tříd, asociace, dědičnost, abstraktní třídy
11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,
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.
23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,
NMIN201 Objektově orientované programování 1 / :36:09
NMIN201 Objektově orientované programování 1 / 26 8.10.2013 15:36:09 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat
NPRG031 Programování II 1 / :25:46
NPRG031 Programování II 1 / 26 28. 2. 2018 11:25:46 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat jiné objekty
Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické
Třídy, polymorfismus A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Polymorfizmus ~ vícetvarost Polymorfizmus základní vlastnost objektového přístupu základní princip polymorfismu:
Chová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
Programování II. Návrh programu I 2018/19
Programování II Návrh programu I 2018/19 Osnova přednášky Co víme? Objektový návrh programu. Příklad. Co víme? Třída Třída je popisem objektů se společnými vlastnostmi. class private:
Objektové programování
Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k
TŘÍ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;
Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.
Objekty v PHP 5.x This is an object-oriented system. If we change anything, the users object. Objektové PHP Objekty se poprvé objevili v PHP ve verzi 4. Nepříliš zdařilý pokus. Programátoři získali nedůvěru
Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.
3. ročník Dědičnost seskupování tříd do hierarchie nadtyp-podtyp potomek získá všechny vlastnosti a metody kromě označených jako private provádí se pomocí dvojtečky za názvem třídy Polymorfismus všude
6 Objektově-orientovaný vývoj programového vybavení
6 Objektově-orientovaný vývoj programového vybavení 6.1 Co značí objektově-orientovaný - organizace SW jako kolekce diskrétních objektů, které zahrnují jak data tak chování objekt: OMG: Objekt je věc (thing).
Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39
Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy
Delphi - objektově orientované
Kapitola 6 Delphi - objektově orientované programování Objektově orientované programování (zkracováno na OOP, z anglického Object oriented programming) je metodika vývoje softwaru, založená na těchto myšlenkách,
Vyřešené teoretické otázky do OOP ( )
Vyřešené teoretické otázky do OOP (16. 1. 2013) 1) Vyjmenujte v historickém pořadí hlavní programovací paradigmata a stručně charakterizujte každé paradigma. a) Naivní chaotičnost, špatná syntaxe a sémantika
IB111 Programování a algoritmizace. Objektově orientované programování (OOP)
IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,
Michal 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ů
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
Obsah. October 2, Polymorfizmus. Typologie testování. Problém polymorfizmu. Vady/Anomálie. Vazební sekvence ČVUT FEL, K13132
OO testování Radek Mařík ČVUT FEL, K13132 October 2, 2014 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, 2014 1 / 55 Obsah 1 Kĺıčové OO vlastnosti Dědičnost Řízení přístupu Polymorfizmus 2 Testování
Programová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
Programování v C++ 2, 7. cvičení
Programování v C++ 2, 7. cvičení spojový seznam 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 Dědění
Jazyk 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
OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů... 8-1 8.2 Standardně zavedené proudy... 8-1 8.
David MATOUŠEK OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PØÍKLADECH Praha 2011 David Matoušek Objektové programování v C++ v pøíkladech Lektoroval Ing. Bohumil Brtník, Ph.D. Bez pøedchozího písemného svolení nakladatelství
Seminář Java IV p.1/38
Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly
Anotace. Objekt self, operátor @. Zapouzdření, polymorfismus,
Anotace Objekt self, operátor @. Zapouzdření, polymorfismus, dědičnost, virtuální metody, čistě virtuální funkce, abstraktní třídy. Objekt self, operátor vzetí pointeru Říkali jsme si o konstruktorech
PB přednáška (21. září 2015)
PB161 1. přednáška (21. září 2015) Cíle předmětu 1. vysvětlit základy OOP 2. seznámit s možnostmi jazyka C++ 3. (zavést a) podpořit praktické programátorské schopnosti 4. nadchnout do (nebo alespoň neodradit
Návrhové vzory OMO, LS 2014/2015
Návrhové vzory OMO, LS 2014/2015 Motivace Cílem objektového návrhu je strukturu aplikace navrhnout tak, aby splňovala následující kritéria: snadná rozšiřitelnost účelnost testovatelnost dokumentovatelnost
Programová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é
Jazyk C# (seminář 3)
Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na
Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D.
Unity a Objekty Programování 2 (NMIN102) RNDr. Michal Žemlička, Ph.D. Větší programy Časté problémy: Ve více programech by se nám hodilo využít stejné řešení nějakého podproblému dalo by se vyřešit překopírováním
Programová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
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ
Metodický list č. 1 Myšlenky a základy objektového programování Základním cílem tohoto tematického celku je pochopit rozdíl mezi funkcionálním a modulárním programováním. Tematický celek je rozdělen do
PB161 Programování v jazyce C++ Přednáška 8
PB161 Programování v jazyce C++ Přednáška 8 Dědičnost Návrhové principy v OOP Nikola Beneš 13. listopadu 2018 PB161 přednáška 8: dědičnost, návrhové principy 13. listopadu 2018 1 / 30 Dědičnost PB161 přednáška
PB161 Programování v jazyce C++ Přednáška 1
.. PB161 Programování v jazyce C++ Přednáška 1 Organizace Úvod do OOP v C++ Nikola Beneš 21. září 2015 PB161 přednáška 1: organizace, úvod do OOP v C++ 21. září 2015 1 / 39 Cíle předmětu 1. vysvětlit základy
Objekty, třídy, vazby 2006 UOMO 30
Objekty, třídy, vazby 2006 UOMO 30 Osnova Vymezení pojmu objekt Objekt a základní objektové koncepty Třídy, třída vs. objekt Vztahy mezi objekty, vazby mezi třídami Polymorfismus 2006 UOMO 31 Vymezení
9. Polymorfismus a rozhraní
Polymorfismus a rozhraní strana 73 9. Polymorfismus a rozhraní Tato kapitola navazuje na základní informace o objektech v kapitole 2, zde se budeme zabývat přetěžováním metod, polymorfismem a rozhraními.
Bridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
PB161 Základy OOP. Tomáš Brukner
PB161 Základy OOP Tomáš Brukner Sylabus - Co je to OOP? Jaké jsou základní principy OOP? Jak se projevují v C++? https://cs.wikipedia.org/wiki/strahovská_knihovna SELECT * FROM books WHERE pages < 250
Výčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
C# - OOP (object oriented programming)
C# - OOP (object oriented programming) Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí OOP proč? Velmi využívaný přístup k programování
Kód, který se nebude často měnit
Factory Method Úvod - problém Mějme obchod s auty: public class OrderCars { public Car ordercar(string model) { Car car; Při přidání nového modelu je nutné upravit if(model.equals("mark IV")) car = new
4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ
4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ OBJEKT Program v Javě je staticky strukturován na třídy, jejichž instance (objekty) za běhu dynamicky programu vznikají a zanikají. Objekt je nejprve
11. Dědičnost. Dědičnost strana 103
Dědičnost strana 103 11. Dědičnost V této kapitole si vysvětlíme jeden ze základních pojmů objektově orientovaného programování dědičnost (inheritance). S ní souvisejí i následující témata: předek a potomek
Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce
11.5.2012. 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
Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
Využití OOP v praxi -- Knihovna PHP -- Interval.cz
Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování
3. Třídy. Základní pojmy objektového programování. Třídy
3. Třídy Základní pojmy objektového programování Jak už víme, je Java objektovým programovacím jazykem. V úvodu této kapitoly si objasníme základní pojmy objektové teorie. Objekt představuje souhrn dat
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
Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13
Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací
Dě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í
Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787
Stručný obsah První týden 25 den 1 Začínáme 27 den 2 Anatomie programu C++ 43 den 3 Proměnné a konstanty 57 den 4 Výrazy a příkazy 79 den 5 Funkce 107 den 6 Objektově orientované programování 141 den 7
ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33
Stručný obsah Část 1: Zahřívací kolo Kapitola 1 Co je a k čemu je návrhový vzor 33 Kapitola 2 Zásady objektově orientovaného programování 39 Kapitola 3 Co konstruktor neumí (Jednoduchá tovární metoda Simple
PB161 Programování v jazyce C++ Přednáška 3
PB161 Programování v jazyce C++ Přednáška 3 Reference, const Přetěžování funkcí Statické atributy a metody Dědičnost a kompozice Nikola Beneš 5. října 2015 PB161 přednáška 3: reference, const, přetěžování,
Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006
Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem
IRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
Třída. Atributy. Operace
Class Diagrams Třída Atributy Operace Třída Třída je jakýsi prototyp objektů. Za třídou si můžeme představit množinu jejích instancí. Každý objekt dané třídy má stejnou množinu atributů (proměnných) a
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Nepravidlové a hybridní znalostní systémy
Nepravidlové a hybridní znalostní systémy 7. 14. listopadu 2017 _ 3-1 Nepravidlové reprezentace znalostí K nepravidlovým reprezentačním technikám patří: rozhodovací stromy rámce sémantické sítě Petriho
Programovací techniky
Programovací techniky 2005/2006 přednášky: Ing. Pavel Mautner, Ph.D. (UK415) cvičení: Ing. Pavel Mautner, Ph.D. Ing. Roman Mouček, Ph.D. (UK415) Ing. Štěpán Albrecht Plán přednášek PT -2005/2006 1. Úvod,
TRANSFORMACE RELAČNÍHO DATOVÉHO MODELU NA OBJEKTOVÝ TRANSFORMATION OF RELATIONAL TO OBJECT DATA MODEL
TRANSFORMACE RELAČNÍHO DATOVÉHO MODELU NA OBJEKTOVÝ TRANSFORMATION OF RELATIONAL TO OBJECT DATA MODEL Vít Holub Anotace Článek poskytne čtenáři základní přehled v datových modelech, ukáže výhody a nevýhody
Objektově orientované programování
Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 7 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 7: Objektově
10 Balíčky, grafické znázornění tříd, základy zapozdření
10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému
Návrhové vzory Design Patterns
Návrhové vzory Design Patterns doc. Ing. František Huňka, CSc. Ostravská univerzita PřF 1 Definice vzoru Každý vzor popisuje problém, který nastává opakovaně v našem prostředí, a potom popisuje podstatu
PREPROCESOR 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,
Dědičnost, rozhraní (interface)
Dědičnost, rozhraní (interface) Obsah kapitoly DĚDIČNOST... 1 CHYBNÉ POUŽITÍ DĚDIČNOSTI... 8 VÍCENÁSOBNÁ DĚDIČNOST... 10 VÍCEÚROVŇOVÁ HIERARCHIÍ TŘÍD... 11 ROZHRANÍ (INTERFACE)... 18 SEZNAM OBRÁZKŮ...
Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo
Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo Viditelnost Přístup ke třídám i jejim prvkům lze (podobně jako např. v C++) regulovat. Přístupem se rozumí jakékoli použití dané třídy, prvku
Ukazka 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
State. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu
State State Známý jako Stav, Object for States Účel umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu Použitelnost chování objektu závisí na jeho stavu, který se mění za
10 Generické implementace
10 Generické implementace Main Entry: 1 ge ner ic Pronunciation: j&-'ner-ik Function: adjective Etymology: French générique, from Latin gener-, genus birth, kind, class 1 a : relating to or characteristic
Quo vadis programování? Automatizace vyhodnocování studentských úloh
Vaše jistota na trhu IT Quo vadis programování? Automatizace vyhodnocování studentských úloh Rudolf PECINOVSKÝ rudolf@pecinovsky.cz Vladimír Oraný vladimir.orany@gmail.com Vaše jistota na trhu IT Obsah
Analýza a modelování dat. Přednáška 4
Analýza a modelování dat Přednáška 4 Objektově orientovaný přístup Strukturovaný přístup starší přístup analýzy modelování dat typický zástupce: E-R model prvky reálného světa zobrazujeme do předem připravených
III/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
Úvod - problém. Při přidání nového modelu je nutné upravit. Kód, který se nebu de často měnit. n Mějme obchod s auty:
Factory Method Úvod - problém n Mějme obchod s auty: public class OrderCars { public Car ordercar(string model) { Car car; Při přidání nového modelu je nutné upravit if(model.equals("mark IV")) { car =