Uživatelské nástroje

Nástroje pro tento web


informatika:maturita:18a

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
informatika:maturita:18a [16. 02. 2015, 16.51]
xmrnustik Přidány vztahy mezi třídami.
informatika:maturita:18a [12. 02. 2018, 15.38] (aktuální)
xsilling [Objektově orientované programování (OOP)]
Řádek 1: Řádek 1:
 ====== Objektově orientované programování (OOP) ====== ====== Objektově orientované programování (OOP) ======
-Je programovací přístup založený na tom, že vše se dá popsat pomocí objektů. 
- 
-<WRAP center round alert 60%> 
-Text hotový, chybí obrázky 
-</​WRAP>​ 
- 
- 
  
 +Je programovací přístup založený na principu, že se naprosto vše dá popsat pomocí jednotlivých objektů.
  
 +Viz [[informatika:​pojmy:​jazyky|]].
 ===== Základní pojmy ===== ===== Základní pojmy =====
  
 ==== Objekt ==== ==== Objekt ====
-Je základní jednotkou používánou ​v rámci OOP. Každý problém je pro OOP rozložitelný do objektů. Objekt v sobě, jak data (v podobě atributů), tak má i funkční části popisující jeho chování (v podobě metod).+ 
 +Je základní jednotkou používanou ​v rámci OOP. Každý problém je pro OOP rozložitelný do objektů. Objekt v sobě uchovává vlastní ​data (atributymá i funkční části popisující jeho chování (metody).
  
 ==== Třída ==== ==== Třída ====
-Třída je taková ​"​šablona ​objekt". Popisuje, jaké bude mít objekt vlastnosti (atributy) a co bude umět dělat (metody). ​+ 
 +Třída je prakticky ​"​šablona ​objektu". Popisuje, jaké bude mít objekt vlastnosti (atributy) a co dokáže ​dělat (metody).
  
 ==== Instance ==== ==== Instance ====
  
-Instance objektu je už běžící objekt (vytvořený ​ze třídy) s naplněnými atributy a s možností na něm volat metody.+Instance objektu je už běžící objekt (vytvořený ​podle vzoru třídy) s naplněnými atributy a s možností na něm volat implementované ​metody.
  
 ==== Atribut ==== ==== Atribut ====
-Jak už zde bylo několikrát zmíněno atribut je vlastností ​objektu. + 
-Vlastnosti může ​mít dva druhy: +Atributy určují jednotlivé vlastnosti ​objektu. 
-  * Hodnotová vlastnost (spíše hodnotová proměnná) ​vlastnost ​vyjadřitelná jako číslo, znak nebo pravdivostní hodnota + 
-  * "Objektová vlastnost" - další objekt, který původní objekt používá (například Člověk má jako vlastnost objekty Srdce, Vlasy, Charakter,...)+Mohou mít dva základní ​druhy: 
 +  ​* **Hodnotová vlastnost (spíše hodnotová proměnná)** – vlastnost ​vyjádřitelná jako číslo, znak nebo pravdivostní hodnota. 
 +  * **Objektová vlastnost** – další objekt, který původní objekt používá (například Člověk má jako vlastnost ​další ​objekty ​jako Srdce, Vlasy, Charakter...).
  
 ==== Metoda ==== ==== Metoda ====
-Schopnost objektu provádět činnost. Může po svém provedení vracet nějakou hodnout (Srdce má metodu ZískatTlak(),​ která vrací současný krevní tlak), ale nutně nemusí (Srdce má metodu Bij(), která nic nevrací). 
  
-Metoda může také přijímat ​arguemnty (Objekt Malíř má metodu VymalujPokoj(Barva)).+Schopnost objektu provádět určitou činnost. Metody po svém provedení vracejí určenou hodnotu (například metoda Srdce  //​ziskejTlak()//​ by vracela současný krevní tlak) – může však vracet i hodnotu **void**, tedy nic (metoda //bij()// by například pouze provedla akci bití Srdce, nebylo by tedy třeba nic vracet). 
 + 
 +Metoda může také přijímat ​potřebné argumenty (metoda Srdce //​zmenRychlost(rychlost)// by nastavila novou rychlost bití Srdce podle zadané hodnoty argumentu rychlost).
  
 === Konstruktor === === Konstruktor ===
-Speciální metoda konstruktoru,​ která je volána vždy při vytváření instance dané třídy. Může zde docházet k inicializaci potřebných vlastností. 
  
-Pozn. V některých objektových programovacích jazycích existuje i speciální ​metoda ​zvaná destruktor, která ​se používá, když už objekt není potřeba a má být zničen+Speciální ​metoda ​konstruktoru, která ​je volána vždy při vytváření nové instance třídy (nevrací proto vůbec nic). Může zde docházet k inicializaci ​potřebných vlastností. Třída může mít i více konstruktorů podle počtu argumentů.
  
 +V některých objektových programovacích jazycích (C++) existuje i speciální metoda zvaná **destruktor**,​ která se používá, když už objekt není potřeba a má být zničen. ​
  
 ===== Vztahy mezi objekty ===== ===== Vztahy mezi objekty =====
Řádek 42: Řádek 42:
 ==== Závislost ==== ==== Závislost ====
  
 +Objekt, z kterého míří šipka, využívá ve svém kódu objekt do kterého šipka míří (například v argumentu metody nebo jako lokální proměnnou).
  
 +Př.: Object Zvíře obsahuje metodu nakrmit, která v rámci svého argumentu přijímá objekt typu Jídlo.
  
-Objekt, z kterého míří šipka, využívá ve svém kódu objekt do kterého míří šipka (například v argumentu metody nebo jako lokální proměnnou). +{{ :​informatika:​maturita:​18_umlzavislost.png |UML diagram závislosti}}
- +
- +
-Př. Objekt Zvíře obsahuje metodu nakrmit, která v rámci svého argumentu přijímá objekt typu Jídlo.+
  
 ==== Asociace ==== ==== Asociace ====
Řádek 53: Řádek 52:
 Objekty jsou v užším vztahu přímo v kódu. Jeden obsahuje referenci na druhý (například jako datový typ atributu). ​ Objekty jsou v užším vztahu přímo v kódu. Jeden obsahuje referenci na druhý (například jako datový typ atributu). ​
  
-Př. Objekt Auto obsahuje referenci na objekt Barva.+Př.Objekt Auto obsahuje referenci na objekt Barva. 
 + 
 +{{ :​informatika:​maturita:​18_umlasociace.png |UML diagram asociace}}
  
 ==== Agregace ==== ==== Agregace ====
Řádek 59: Řádek 60:
 Silnější vztah než asociace. Objekt na straně kosočtverce vlastní instance objektu na druhé straně. Při zániku prvního, ale nedochází k zániku druhých. Silnější vztah než asociace. Objekt na straně kosočtverce vlastní instance objektu na druhé straně. Při zániku prvního, ale nedochází k zániku druhých.
  
-Př. Objekt ​EvropskáUnie ​obsahuje referenci na objekty typu Stát, které jsou v rámci EU. Zanikne-li však EU, státy sice mohou válčit, ale pořád existují.+Př.Objekt ​EU obsahuje referenci na objekty typu Stát, které jsou v rámci EU. Zanikne-li však EU, státy sice mohou válčit, ale pořád ​budou existují. 
 + 
 +{{ :​informatika:​maturita:​18_umlagregace.png |UML diagram agregace}}
  
 ==== Kompozice ==== ==== Kompozice ====
Řádek 65: Řádek 68:
 Silnější vztah než asociace. Objekt na straně kosočtverce vlastní instance objektu na druhé straně. Při zániku prvního zanikají i instance druhého. Silnější vztah než asociace. Objekt na straně kosočtverce vlastní instance objektu na druhé straně. Při zániku prvního zanikají i instance druhého.
  
-Př. Objekt Škola obsahuje objekty typu Třída, které daná škola má. Ve chvíli, kdy škola zaniká nemůžou dále existovat objekty typu Třída samostatně.+Př.Objekt Škola obsahuje objekty typu Třída, které daná škola má. Ve chvíli, kdy Škola zaniká nemůžou dále existovat objekty typu Třída samostatně ​– zaniknou tedy společně se Školou.
  
-==== Dědičnost (nebo také specializace ​nebo generalizace) ====+{{ :​informatika:​maturita:​18_umlkompozice.png |UML diagram kompozice}} 
 + 
 +==== Dědičnost (neboli ​specializace ​či generalizace) ====
  
 Objekt, ze kterého míří šípka, je speciálním případem objektu druhého. Objekt, ze kterého míří šípka, je speciálním případem objektu druhého.
  
-Př. Objekt Jablko je speciálním případem objektu Plod.+Př.Objekt Jablko je speciálním případem objektu Plod. 
 + 
 +{{ :​informatika:​maturita:​18_umldedicnost.png |UML diagram dědičnosti}}
  
 ==== Implementace ==== ==== Implementace ====
  
-Speciální vztah mezi rozhráním ​a objektem, který ho implementuje. Význam je podobný jako u dědičnosti. +Speciální vztah mezi rozhraním ​a objektem, který ho implementuje. Význam je podobný jako u dědičnosti.
- +
-Př. Objekt Auto implementuje metody rozhrání Pohybovatelný. +
- +
- +
- +
- +
- +
  
 +Př.: Objekt Auto implementuje (pohybové) metody rozhraní Pohybovatelný.
  
 +{{ :​informatika:​maturita:​18_umlimplementace.png |UML diagram implementace}}
informatika/maturita/18a.1424101872.txt.gz · Poslední úprava: 16. 02. 2015, 16.51 autor: xmrnustik