Obsah. October 2, Polymorfizmus. Typologie testování. Problém polymorfizmu. Vady/Anomálie. Vazební sekvence ČVUT FEL, K13132
|
|
- Anežka Benešová
- před 7 lety
- Počet zobrazení:
Transkript
1 OO testování Radek Mařík ČVUT FEL, K13132 October 2, 2014 Radek Mařík OO testování October 2, / 55 Obsah 1 Kĺıčové OO vlastnosti Dědičnost Řízení přístupu Polymorfizmus 2 Testování OO softwaru Typologie testování Anomálie DU párů Problém polymorfizmu 3 Kategorie OO vad a anomálíı Přehled Vady/Anomálie 4 Testování dědičnosti, polymorfizmu a dynamických vazeb Vazební sekvence Příklady 5 Kritéria OO testování Kritéria Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
2 Dědičnost Kĺıčové OO vlastnosti Dědičnost Umožňuje, aby společné vlastnosti mnoha tříd byly definovány v jedné třídě Odvozená třída má vše, co má její bázová třída. Navíc může: vylepšit odvozené vlastnosti (přepsáním) omezit odvozené vlastnosti přidat nové vlastnosti (rozšířením) Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Dědičnost typů Kĺıčové OO vlastnosti Dědičnost Deklarovaný typ... typ specifikovaný v deklaraci reference na objekt Clock w1; // declared type Clock Skutečný typ... typ skutečného objektu w1 = new Watch(); // actual type Watch Metoda v Java Metoda, která se volá, je nejnižší verze metody definované mezi skutečným a deklarovaným typem v hierarchii dědičnosti. A B C Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
3 Kĺıčové OO vlastnosti Dědičnost podtypu a podtřídy Dědičnost Jestliže B dědí z A, pak Dědičnost podtypu... kterýkoliv objekt typu B může nahradit objekt typu A. Notebook je speciálním typem počítače. nahraditelnost. Dědičnost podtřídy... objekty typu B nesmí být použity jako náhrady za objekty typu A. Objekty typu B nemusí být typově kompatibilní. Stack dědí z Vector... pohodlné pro implementaci, ale stack není určitě vektor. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Řízení přístupu (v Java) Kĺıčové OO vlastnosti Řízení přístupu Class 1 Package Class 3 inheritance Class 2 Class 4 Class 5 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
4 Řízení přístupu (v Java) Kĺıčové OO vlastnosti Řízení přístupu public members Class 1 Package Class 3 inheritance Class 2 Class 4 Class 5 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Řízení přístupu (v Java) Kĺıčové OO vlastnosti Řízení přístupu public members protected members Class 1 Package Class 3 inheritance Class 2 Class 4 Class 5 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
5 Řízení přístupu (v Java) Kĺıčové OO vlastnosti Řízení přístupu Class 1 public members protected members default Package Class 3 inheritance Class 2 Class 4 Class 5 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Řízení přístupu (v Java) Kĺıčové OO vlastnosti Řízení přístupu Class 1 public members protected members default private members Package Class 3 inheritance Class 2 Class 4 Class 5 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
6 Polymorfizmus Kĺıčové OO vlastnosti Polymorfizmus Ta samá proměnná může mít různé typy, které závisí na běhu programů. Jestliže B dědí z A, potom objekt typu B může být použit tam, kde se očekává objekt typu A. Jestliže jak A tak B definují tu samou metodu M (B přepisuje A), potom ten samý příkaz může volat jak A verzi M, tak i B verzi. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Typy testování Testování OO softwaru Typologie testování Testování intra-metod... testování v rámci jedné metody jedné třídy. Testování inter-metod... testování v rámci několika metod jedné třídy. Testování intra-třídy... testování v rámci jedné třídy. obvykle použitím sekvencí volání metod v rámci jedné třídy. Testování inter-tříd... testování několika tříd najednou. ověřování možností integrace Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
7 Testování OO softwaru Anomálie DU párů DU páry a jejich možné anomálie 1 Přepisující metoda má jinou def-množinu než přepisovaná metoda? Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Testování OO softwaru Anomálie DU párů DU páry a jejich možné anomálie 2 Přepisující metoda má jinou def-množinu než přepisovaná metoda? Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
8 Testování OO softwaru Anomálie DU párů DU páry a jejich možné anomálie 3 Přepisující metoda má jinou def-množinu než přepisovaná metoda? Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Testování OO softwaru Anomálie DU párů DU páry a jejich možné anomálie 4 Přepisující metoda má jinou def-množinu než přepisovaná metoda? Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
9 Testování OO softwaru Anomálie DU párů DU páry a jejich možné anomálie 5 Přepisující metoda má jinou def-množinu než přepisovaná metoda? Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Anomálie polymorfizmu 1 Testování OO softwaru Problém polymorfizmu Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
10 Anomálie polymorfizmu 2 Testování OO softwaru Problém polymorfizmu Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Anomálie polymorfizmu 3 Testování OO softwaru Problém polymorfizmu Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
11 Kategorie OO vad a anomálíı Přehled Možné vady OO programů Složitost vniká množstvím propojení komponent. Statický determinismus mizí - mnoho vad je možné detekovat pouze za běhu. Dědičnost a polymorfizmus umožňuje vertiální a dynamickou integraci. Agregační vazby a vazby užití jsou mnohem složitější. Návrháři ne vždy zacházejí opatrně s viditelností dat a metod. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 OO vady a anomálie Kategorie OO vad a anomálíı Přehled Zkratka Vada/Anomálie ITU* Nekonzistetní užití typu SDA* Anomálie definice stavu SDIH* Nekonzistentní definice stavu SDI Nesprávná definice stavu IISD Nepřímá nekonzistentní definice stavu ACB1* Anomální chování konstrukce (1) ACB2 Anomální chování konstrukce (2) IC Neúplná konstrukce SVA* Anomálie viditelnosti stavu Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
12 Kategorie OO vad a anomálíı Vady/Anomálie Nekonzistetní užití typu (ITU) nepřepisuje se (nejedná se o polymorfizmus). C rozšiřuje T a C přidává nové metody (rozšíření objekt je použit jako C, potom jako T, potom jako C metody T mohou přivést objekt do stavu nekonzistentním s C Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Kategorie OO vad a anomálíı Vady/Anomálie Anomálie definice stavu (SDA) X rozšíří W, a X přepisuje některé z metod. Přepisující metody v X nenadefinují některé proměnné, které jsou definovány přepsanými metodami v W Selhání pro objekt Y při zavolání m() následovaném n() W :: m() definuje v a W :: n() používá v X :: n() používá v Y :: m() nedefinuje v Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
13 Kategorie OO vad a anomálíı Vady/Anomálie Nekonzistence definice stavu (SDIH) Překrytí proměnné, možná náhodně. Jestliže proměnná v potomku je definována, verze v předchůdci nemusí být. Selhání pro objekt Y při zavolání m() následovaném n() Y přepíše W ) verzi v Y :: m() definuje Y :: v X :: n() používá v Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Kategorie OO vad a anomálíı Vady/Anomálie Anomálie v chování konstruktoru (ACB1) Konstruktor W volá metodu f (). Potomek W, X, přepíše f (). X :: f () používá proměnné, které by měly být definovány v konstruktoru X Selhání při konstrukci Když je konstruován objekt typu X, W () se provádí před X :: () Když W () volá X :: f (), použije se x, ale té zatím nebyla dána hodnota! Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
14 Kategorie OO vad a anomálíı Vady/Anomálie Anomálie ve viditelnosti stavu (SVA) Privátní proměnná v je deklarována v předchůdci W a v je definována W :: m(). X rozšiřuje W a Y rozšiřuje X. Y přepisuje m() a volá W :: m() k nadefinování v Selhání X :: m() je přidána později. Y :: m() nemůže dále již volat W :: m()! Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Testování dědičnosti, polymorfizmu a dynamických vazeb Vazební sekvence Vazební sekvence Páry volání metod v rámci jedné testované metody: společný kontext instance. množina stavových proměnných, které jsou referencovány oběma metodami. obsahuje alespoň jednu vazební cestu mezi volání obou metod vzhledem k dané stavové proměnné. Reprezentují možné interakce stavových prostorů mezi volanými metodami vzhledem k volající metodě. Používá se k identifikaci bodů integrace a testovacích požadavků. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
15 Testování dědičnosti, polymorfizmu a dynamických vazeb Typy Def-Use párů Vazební sekvence Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Testování dědičnosti, polymorfizmu a dynamických vazeb Vazební sekvence Testování založené na vazbách Integrace nastává pomocí vazeb softwarových artefaktů. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
16 Testování dědičnosti, polymorfizmu a dynamických vazeb Množina polymorfních volání Vazební sekvence PCS množina metod, které mohou být potenciálně provedeny jako výsledek volání metody v rámci dané instance kontextu. pcs(o :: m) = {W :: m, Y :: m, X :: m} Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Testování dědičnosti, polymorfizmu a dynamických vazeb Příklady Příklad vazební sekvence 1 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
17 Testování dědičnosti, polymorfizmu a dynamických vazeb Příklady Příklad vazební sekvence 1 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Testování dědičnosti, polymorfizmu a dynamických vazeb Příklady Příklad vazební sekvence 1 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
18 Testování dědičnosti, polymorfizmu a dynamických vazeb Příklady Příklad vazební sekvence 1 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Testování dědičnosti, polymorfizmu a dynamických vazeb Příklady Příklad vazební sekvence 2 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
19 Testování dědičnosti, polymorfizmu a dynamických vazeb Příklady Příklad vazební sekvence 2 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Testování dědičnosti, polymorfizmu a dynamických vazeb Příklady Příklad vazební sekvence 2 Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
20 Cíle testování Kritéria OO testování Kritéria Testujeme, jak na sebe vzájemně působí metoda a instance vázaná na objekt o: interakce skrze vazební sekvence. Potřeba uvážit množinu interakcí: Možné typy objektu o Které metody mohou být ve skutečnosti provedeny (množiny polymorfních volání). Testují se všechny vazby se všemi typy. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Sekvence všech vazeb Kritéria OO testování Kritéria All-Coupling-Sequences (ACS) Pro všechny vazební sekvence S j,k v f (), existuje alespoň jeden testovací případ t takový, že existuje vazební cesta indukovaná S j,k taková, že je podcestou běhové trasy f (t) Alespoň jedna vazební cesta musí být provedena. Neuvažuje ani dědičnost ani polymorfismus. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
21 Všechny poly-třídy Kritéria OO testování Kritéria All-Poly-Classes (APC) Pro všechny vazební sekvence S j,k v f () a pro každou třídu rodiny typů definovanou kontextem S j,k, existuje alespoň jeden testovací případ t takový, že existuje vazební cesta p indukovaná S j,k taková, že je podcestou běhové trasy f (t) Zahrnuje kontexty instací při volání. Nejméně jeden test for každý typ objektu. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Všechny vazební Def-Use Kritéria OO testování Kritéria All-Coupling-Defs-Uses (ACDU) Pro každou vazební proměnnou v každé vazební sekvence S j,k v f (), existuje alespoň jeden testovací případ t takový, že existuje vazební cesta p indukovaná S j,k taková, že je podcestou běhové trasy f (t) Každá poslední definice vazební proměnné dosahuje na všechny svá první použití. Neuvažuje dědičnost a polymorfismus. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
22 Kritéria OO testování Kritéria Všechny polymorfní vazební Def-Use All-Poly-Coupling-Defs-Uses (APDU) Pro každou vazební proměnnou v, pro každou třídu rodiny typů definovanou kontextem S j,k, každé vazební sekvence S j,k v f (), pro každý uzel m, který má poslední definici v a každý uzel n, který má první použití v, existuje alespoň jeden testovací případ t takový, že existuje vazební cesta p indukovaná S j,k taková, že je podcestou běhové trasy f (t) Každá poslední definice vazební proměnné dosahuje na všechny svá první použití pro každý možný typ. Pracuje s dědičnosti a polymorfismem. Uvažuje definice a použití proměnných. Kombinuje předchozí kritéria. Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55 Literatura I Kritéria OO testování Kritéria V této prezentaci je použita řada obrázků z níže uvedených původních anglických přednášek ( c Ammann and Offutt). Paul Ammann and Jeff Offutt. Introduction to Software Testing. Cambridge University Press, Cambridge, UK, first edition, February ISBN Paul Ammann and Jeff Offutt. Introduction to software testing, powerpoint slides, August Radek Mařík (marikr@fel.cvut.cz) OO testování October 2, / 55
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ář
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ě
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
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í
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
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
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
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
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
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,
14.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í
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á
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í
7.5 Diagram tříd pokročilé techniky
7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem
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
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,
Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19
Programování II Abstraktní třída Vícenásobná dědičnost 2018/19 Osnova přednášky Polymorfismus - důsledky. Abstraktní třída. Vícenásobná dědičnost. Polymorfismus - důsledky Polymorfismus Polymorfismus je
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
7.5 Diagram tříd pokročilé techniky
7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem
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ý
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í
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.
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
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,
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
Ú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
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;
Dědičnost (inheritance)
Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)
UML. Unified Modeling Language. Součásti UML
UML Unified Modeling Language 1995 počátek 1997 verze 1.0 leden dnes verze 2.0 (vývoj stále nedokončen) Standardní notace OMG podpora velkých firem (Microsoft, IBM, Oracle, HP ) popisuje struktury popisuje
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
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ě
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:
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ů
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).
1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
Abstraktní třídy, polymorfní struktury
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í
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ě
ČVUT FEL Katedra telekomunikační techniky, K Radek Mařík Strukturované testování 17.
Strukturované testování Radek Mařík ČVUT FEL Katedra telekomunikační techniky, K13132 17. října 2017 Radek Mařík (radek.marik@fel.cvut.cz) Strukturované testování 17. října 2017 1 / 55 Obsah 1 Návrh testů
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:
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
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í
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)
Ú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ýč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
Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.
Jakub Klemsa Jan Legerský Objektově orientované programování klemsjak@fjfi.cvut.cz jan.legersky@gmail.com 30. října 2012 návrhový vzor (design pattern) obecné řešení problému, které se využívá při návrhu
Diagram tříd (class diagram)
Diagramy tříd 1 Diagram tříd (class diagram) Zobrazuje třídy v daném systému a vztahy mezi nimi Zobrazuje statický stav ukazuje vzájemné interakce, ale neukazuje co se při těchto interakcích děje Při znázornění
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ý
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í
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:
Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu
Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní
Abstraktní 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,
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
Testování komponent. May 21, CA CZ, s.r.o. Radek Mařík Testování komponent May 21, / 45
Testování komponent Radek Mařík CA CZ, s.r.o. May 21, 2010 Radek Mařík (radek.marik@ca.com) Testování komponent May 21, 2010 1 / 45 Obsah 1 Základy testování komponent Definice Specifikace komponent Návrh
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ů
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
7.3 Diagramy tříd - základy
7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'
Mnohotvarost (polymorfizmus)
Mnohotvarost (polymorfizmus) TYPY MNOHOTVAROSTI... 2 PŘETĚŽOVÁNÍ METOD, PŘETĚŽOVÁNÍ OPERACÍ... 3 PŘETÍŽENÍ OPERÁTORŮ... 4 ČASTO PŘETĚŽOVANÉ OPERÁTORY... 4 PŘEPISOVÁNÍ... 7 VIRTUÁLNÍ METODY... 10 SEZNAM
Teoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
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
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod 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 třídám a objektům, instančním
Dolování v objektových datech. Ivana Rudolfová
Dolování v objektových datech Ivana Rudolfová Relační databáze - nevýhody První normální forma neumožňuje vyjádřit vztahy A je podtypem B nebo vytvořit struktury typu pole nebo množiny SQL omezení omezený
Programování v jazyce C a C++
Programování v jazyce C a C++ Příklad na tvorbu třídy Richter 1 4. prosince 2017 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno Dvourozměrné pole pomocí tříd Zadání Navrhněte a napište třídu pro realizace
7.3 Diagramy tříd - základy
7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'
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
Ú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
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 =
Diagramy tříd - základy
Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka Zákazník -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'
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é
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?
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ý
Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner
Jakub Čermák http://www.jcermak.cz Microsoft Student Partner Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces
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,
1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018
ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 Informační technologie 1 - Doporučená doba zpracování: 40 minut 1) Termín DCL v relačně databázové technologii
Zpracování deklarací a přidělování paměti
Zpracování deklarací a přidělování paměti Účel deklarací -pojmenování objektů -umístění objektů v paměti Tabulka symbolů -uchovává informace o objektech -umožňuje kontextové kontroly -umožňuje operace
Objektově orientované programování v PHP 5. Martin Klíma
Objektově orientované programování v PHP 5 Martin Klíma OOP & PHP 5 V PHP 5 konečně značné rozšíření OOP Blíží se to moderním programovacím jazykům jako Java nebo C# Výhody OOP Zapouzdření (nové modifikátory
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ů
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í
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
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.
1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými
Objektově orientované programování v jazyce Python
Objektově orientované programování v jazyce Python Co to je objektově orientované programování Python není přímo objektově orientovaný jazyk, ale podporuje nejdůležitější části objektově orientovaného
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
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
Programovací jazyk Java
1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška
Seminář Java II p.1/43
Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii
Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory 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 Kolekce ::= homogenní sada prvků
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
Sdílení dat mezi podprogramy
Sdílení dat mezi podprogramy Datové objekty mohou být mezi podprogramy sdíleny pomocí ne-lokálních referenčních prostředí, která jsou vytvářena na základě æ explicitních modifikací (formální parametry
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ň
Jazyk 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
Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics
1 Parametrizované třídy Generics generické třídy JDK zavádí mimo jiné tzv. parametrizované třídy - generics Úvod 2 podobnost se šablonami (templates) z C++ nejčastěji použité v oblasti knihoven kontejnerového
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
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
Objektově orientované programování v jazyce Python
Objektově orientované programování v jazyce Python Základní pojmy objektově orientovaného programování Objekt vychází z reálného světa. Má dva charakteristické rysy. Všechny objekty mají stav Všechny objekty
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 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
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í
Objektově orientovaný přístup
Objektově orientovaný přístup 1 Historie programovacích jazyků 1945: John von Neumann článek o nové metodě pro ukládání programů 1945: Grace Hopper poprvé termín "bug" 1946: Konrad Zuse Plankalkul - první
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í.