informatika:maturita:19a
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
informatika:maturita:19a [24. 03. 2015, 14.08] – vytvořeno rydloadm | informatika:maturita:19a [25. 02. 2018, 22.53] (aktuální) – [Dědičnost] xjasek | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | *žemla | + | ====== Principy objektově orientovaného programování ====== |
+ | |||
+ | ===== Vztah k ostatním paradigmatům ===== | ||
+ | |||
+ | Na rozdíl od imperativního a strukturovaného programování je výkonný kód objektově orientovaného programování obsažen v rámci objektů. To znamená, že konkrétní hodnoty jsou uloženy jako atributy těchto objektů. Zpracování atributů spolu s celkovou komunikací s objekty probíhá pomocí kódu, který je obsažený v metodách objektů. Navenek pak program působí jako několik navzájem spolupracujících objektů, což umožňuje snadnější přenos kódu mezi různými projekty a jednodušší úpravu již existujícího kódu pomocí dědičnosti. Další výhodou je také větší zabezpečení dat díky viditelnosti atributů. | ||
+ | |||
+ | 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čů, | ||
+ | |||
+ | ===== Zapouzdření ===== | ||
+ | |||
+ | Zapouzdření může být chápáno jako zabalení dat a metod do jednoho objektu. Tento proces váže data s metodami, které s těmito daty pracují, čímž umožňuje základní funkce OOP. Další funkcí zapouzdření je znepřístupnění dat a metod na základě jejich viditelnosti. | ||
+ | |||
+ | ===== Dědičnost ===== | ||
+ | |||
+ | Dědičnost umožňuje tvorbu nových tříd podle již vytvořených tříd. Tyto odvozené třídy pak obsahují všechny atributy a metody rodičovských tříd. Odvozené třídy si mohou tyto data různě upravovat nebo přidávat další. | ||
+ | |||
+ | např: | ||
+ | <WRAP center round box 60%> | ||
+ | class Zpevak extends Clovek { | ||
+ | |||
+ | zpivej{}; | ||
+ | |||
+ | tancuj{}; | ||
+ | } | ||
+ | </ | ||
+ | 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 // | ||
+ | |||
+ | ==== Vícenásobná dědičnost ==== | ||
+ | Počet rodičovských tříd je určen použitým programovacím jazykem (např. Java umožňuje pouze jednu rodičovskou třídu, C++ umožňuje více). | ||
+ | |||
+ | |||
+ | ===== Polymorfismus ===== | ||
+ | |||
+ | Umožňuje použít jednotné rozhraní pro práci s různými typy objektů | ||
+ | např: | ||
+ | |||
+ | instance třídy // | ||
+ | |||
+ | 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, | ||
+ | |||
+ | Pod pojmem polymorfismus můžeme také rozumět | ||
+ | Např metoda // | ||
+ | |||
+ | V některých programovacích jazycích umožňuje polymorfismus metodám také různé zpracování parametrů různého typu. | ||
+ | |||
+ | ===== Viditelnost atributů a metod ===== | ||
+ | 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. | ||
+ | * private - data jsou viditelná pouze pro konkrétní objekt | ||
+ | * public - data jsou viditelná komukoli | ||
+ | * 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.1427202508.txt.gz · Poslední úprava: autor: rydloadm