Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy

Podobné dokumenty
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.

Jazyk C# (seminář 3)

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

KTE / ZPE Informační technologie

Generické programování

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

Abstraktní třída a rozhraní

1. Dědičnost a polymorfismus

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

20. Projekt Domácí mediotéka

11. Dědičnost. Dědičnost strana 103

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

Jazyk C# (seminář 6)

Mnohotvarost (polymorfizmus)

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

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

Výčtový typ strana 67

Objektově orientované programování v jazyce Python

Dědění, polymorfismus

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom

Návrhové vzory OMO, LS 2014/2015

typová konverze typová inference

PB161 Základy OOP. Tomáš Brukner

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

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

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

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

PREPROCESOR POKRAČOVÁNÍ

Teoretické minimum z PJV

Typický prvek kolekce pro české řazení

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

Java - výjimky. private void vstup() throws IOException {... }

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

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.

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

Motivační příklad reálný svět. výroba (assembly line)

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

1. Téma 12 - Textové soubory a výjimky

1. Programování proti rozhraní

Zápis programu v jazyce C#

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

Principy objektově orientovaného programování

Dědičnost (inheritance)

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

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

Jazyk C++ I. Šablony 2

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

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

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

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

Třídy a objekty -příklady

Programovací jazyk Java

Základy objektové orientace I. Únor 2010

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

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

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

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

Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015. poslední přednáška a materiál k samostudiu

Objektové programování

Jazyk C++ I. Šablony 3

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

Seminář Java IV p.1/38

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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/

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

Java efektivně. Lukáš Zapletal liberix.cz. Pokročilejší techniky programování v Javě

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

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

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Úvod do programovacích jazyků (Java)

Jazyk C++ II. Šablony a implementace

Projekty pro výuku programování v jazyce Java

Java testovací třída

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Java a XML. 10/26/09 1/7 Java a XML

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Programování II. Polymorfismus

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

10. března 2015, Brno Připravil: David Procházka. Programovací jazyk C++

Projekt Obrázek strana 135

, Brno Připravil: David Procházka Návrhové vzory

C# - OOP (object oriented programming)

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.

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Problém, jehož různé instance je třeba často řešit Tyto instance lze vyjádřit větami v jednoduchém jazyce

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Programování v Javě I. Únor 2009

Seminář Java II p.1/43

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Transkript:

3. ročník

Objekt základní prvek v OOP má vlastnosti charakterizují objekt (barva, počet osob) má metody definují to, co objekt umí (vypni motor, připoj se) vznikne vytvoření nové instance definován pomocí třídy

Zapouzdření jeden ze základních rysů OOP umožňuje objektu schovat své vlastnosti/metody před okolním světem provádí se pomocí modifikátorů přístupu public: vlastnost/metoda je volně dostupná - využívat může kdokoliv private: vlastnost/metoda je skrytá využívat ji může jen objekt sám

Dědičnost jeden z hlavních rysů OOP umožňuje seskupovat objekty do hierarchie rodič potomek správně: generalizace - specializace objekt potomka získá veškeré vlastnosti i metody od svého rodiče

Charakteristický případ: existuje několik tříd slouží k podobnému účelu část kódu obsahují zcela stejnou Řešení: vytvoření společného předka (generalizace) bude obsahovat vlastnosti a metody, které jsou shodné pro všechny jeho potomky jednotlivým třídám definujeme společného předka

Příklad: dvě (nebo více) podobných tříd stejného typu Televize, Mikrovlnná trouba mají stejné vlastnosti/metody zapnout, vypnout, společné prvky přesunout do rodičovské třídy Elektrické zařízení

public class Televize public bool Zapnuto get; private set; public int Program get; private set; public class Mikrovlnka public bool Zapnuto get; private set; public int Casovac get; private set; public void Zapnout() this.zapnuto = true; public void Vypnout() this.zapnuto = false; public void Zapnout() this.zapnuto = true; public void Vypnout() this.zapnuto = false; public void PrepniProgram(int cislo) this.program = cislo; public void NastavCasovac(int minuty) this.casovac = minuty; Dvě totožné elektrické zařízení se liší pouze konkrétními metodami

public class ElektrickeZarizeni public bool Zapnuto get; private set; public class Televize : ElektrickeZarizeni public int Program get; private set; public void Zapnout() this.zapnuto = true; public void Vypnout() this.zapnuto = false; public void PrepniProgram(int cislo) this.program = cislo; public class Mikrovlnka : ElektrickeZarizeni public int Casovac get; private set; public void NastavCasovac(int minuty) this.casovac = minuty; Třídy Televize i Mikrovlnka jsou totožné s minulým řešením, avšak celý kód je výrazně efektivnější

Práce s instancí Televize t = new Televize(); t.zapnout(); if (t.zapnuto == true) t.prepniprogram(1); Mikrovlnka m = new Mikrovlnka(); m.zapnout(); if (m.zapnuto == true) m.nastavcasovac(2);

Charakteristický případ: existuje hotová třída má požadované vlastnosti i metody část funkcionality jí chybí Řešení: vytvoření potomka z daného předka (specializace) potomek přidá další vlastnosti/metody potomkovi navíc zůstalo to, co zdědil od předka

Příklad: viz. praktický příklad s třídami Televize a Mikrovlnka každý potomek si přidá metodu podle své potřeby (NastavCasovac a PrepniProgram)

Charakteristický případ: existuje hotová třída má potřebné metody (název, parametry, ) dělá činnost trochu jinak než chceme Řešení vytvoření potomka z daného předka (specializace) přepsání požadovaných metod (overrides) potomek pozměnil chování metody rodiče

Příklad: neurčitý objekt, který umí ukládat data pozměníme metodu pro uložení na výstup do databáze/souboru/externí webové služby/ Příklad: každý objekt se umí zobrazit jako text máme vlastní objekt, který chceme zobrazit textově podle potřeb přepíšeme metodu ToString()

public class Tvar public virtual double Obsah() throw new InvalidOperationException(); public class Obdelnik : Tvar public int A get; set; public int B get; set; public override double Obsah() return this.a * this.b; public class Kruh : Tvar public int R get; set; public override double Obsah() return Math.PI * Math.Pow(this.R, 2);

Práce s instancí Obdelnik obd = new Obdelnik(); obd.a = 2; obd.b = 5; // vypise 10 (2*5) Console.WriteLine( obd.obsah() ); Kruh kr = new Kruh(); kr.r = 5; // vypise 78,5 (3.14 * 5 * 5) Console.WriteLine( kr.obsah() );

Společný předek Tvar má metodu pro výpočet obsahu tato metoda sama nemůže vykonávat činnost abstraktní tvar nemá obsah musí být označena jako virtual (překrytelná) potomci si mohou tuto metodu volitelně upravit Každý potomek Obdélník a Kruh si upravuje metodu pro výpočet obsahu po svém metoda Obsah vykonává konkrétní výpočet způsob výpočtu závisí na konkrétním tvaru musí být označena jako override (překrývá)