informatika:maturita:19a
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
informatika:maturita:19a [25. 04. 2015, 16.27] – xzemla1 | informatika:maturita:19a [25. 02. 2018, 22.53] (aktuální) – [Dědičnost] xjasek | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | <WRAP center round alert 60%> | + | ====== Principy objektově orientovaného programování ====== |
- | Ještě není dokončeno | + | |
- | </ | + | |
+ | ===== Vztah k ostatním paradigmatům ===== | ||
- | ====== Principy | + | Na rozdíl od imperativního a strukturovaného programování je výkonný kód objektově orientovaného programování |
- | ===== základní koncepce OOP: ===== | + | Nevýhodou objektově orientovaného programování je jeho větší náročnost na paměť a výpočetní rychlost, proto se používá hlavně u moderních počítačů, |
- | ==== Třída ==== | + | ===== Zapouzdření ===== |
- | vzor definován uživatelem, | + | Zapouzdření |
- | <WRAP center round box 60%> | + | |
- | class Clovek{ | + | |
- | string jmeno; | + | |
- | int vek; | + | |
- | </ | + | |
- | + | ||
- | a metody, např: | + | |
- | <WRAP center round box 60%> | + | |
- | dychej(){...}; | + | |
- | rekni(string co){...}; | + | |
- | } | + | |
- | </ | + | |
- | ==== Objekt | + | ===== Dědičnost ===== |
- | instance | + | Dědičnost umožňuje tvorbu nových tříd podle již vytvořených tříd. Tyto odvozené |
- | např . | + | např: |
<WRAP center round box 60%> | <WRAP center round box 60%> | ||
- | clovek kaja{ | + | class Zpevak extends Clovek |
- | jmeno = "Karel Novak"; | + | |
- | vek = 55; | + | |
- | } | + | |
- | </ | + | |
- | a můžeme použít metodu | + | zpivej{}; |
- | <WRAP center round box 60%> | + | |
- | kaja.rekni(" | + | |
- | kaja.dychej(); | + | |
- | </ | + | tancuj{}; |
- | + | ||
- | můžeme si vytvořit více instancí: | + | |
- | <WRAP center round box 60%> | + | |
- | clovek honza{ | + | |
- | jmeno = "Jan Cerny"; | + | |
- | vek = 10; | + | |
} | } | ||
</ | </ | ||
+ | V tomto příkladu jsme vytvořili novou třídu //Zpevak//, která je odvozena od třídy //Clovek//. Objekt třídy //Zpevak// tedy může využívat všechny atributy a metody třídy //Clovek// (např. metoda //vstan()// a atribut // | ||
- | a opět můžeme | + | ==== Vícenásobná dědičnost ==== |
+ | Počet rodičovských | ||
- | ===== Základní pilíře OOP ===== | ||
- | OOP stojí na třech základních pilířích: | ||
- | ==== Zapouzdření | + | ===== Polymorfismus ===== |
- | umožňuje | + | Umožňuje |
- | ==== Dědičnost ==== | + | např: |
- | Usnadňuje vytváření podobných | + | instance |
- | např: | + | To znamená, že i když každý objekt tuto metodu vykonává jinak, z vnějšího hlediska se tváří stejně a my nemusíme tedy přemýšlet, |
- | <WRAP center round box 60%> | + | |
- | class Zpevak extends Clovek {(říkáme, že třída pro zpěváky je potomkem člověka) | + | |
- | zpivej{}; | + | |
- | tancuj{}; | + | |
- | } | + | |
- | </ | + | |
+ | Pod pojmem polymorfismus můžeme také rozumět **Přetěžování metod** - to znamená že metoda může fungovat více různými způsoby, které se rozliší podle druhu a počtu parametrů. | ||
+ | Např metoda // | ||
- | ==== Polymorfismus ==== | + | V některých programovacích jazycích umožňuje polymorfismus metodám také různé zpracování parametrů různého typu. |
- | Umožňuje použít jednotné rozhraní pro práci s různými typy objektů | + | ===== Viditelnost atributů a metod ===== |
- | např: | + | Nastavením viditelnosti dat můžeme určit, které části programu budou mít k těmto datům přístup. Nastavit můžeme tři základní možnosti. |
- | instance třídy mladyClovek bude metodu presunSe(); vykonávat za pomocí metody chůze, ale instance | + | * private - data jsou viditelná pouze pro konkrétní |
- | + | * public - data jsou viditelná komukoli | |
- | To znamená, | + | * protected - data jsou viditelná pouze pro konkrétní třídu a odvozené třídy |
+ | ===== Rozhraní ===== | ||
+ | Zjistíme, že programátor umí psát na počítači a účetní také. Intuitivně cítíme, že nebudou mít mnoho dalších společných schopností a navíc tuto dovednost může mít napříč povoláními leckdo, proto nemá smysl tvořit třídu na způsob ČlovekPracujícíSPočítačem a od ní dědit Programátora a Účetní, ale je výhodnější například vytvořit rozhraní SchopenPsátNaPočítači s požadavkem na metodu napišNaPočítači() a upravit třídy Programátor a Účetní tak, aby toto rozhraní implementovaly, | ||
+ | Obdobně může abstraktní třída předepisovat doimplementování metod, pro které ona sama nemá vlastní kód, ale jen předpis abstraktní metody. |
informatika/maturita/19a.1429972046.txt.gz · Poslední úprava: autor: xzemla1