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 [09. 02. 2015, 22.15]
xmrnustik
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%> 
-NENÍ HOTOVÉ PROZATÍM ROZPRACOVANÉ 
-</​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 ​parametry (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 ===== 
 + 
 +==== 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. 
 + 
 +{{ :​informatika:​maturita:​18_umlzavislost.png |UML diagram závislosti}} 
 + 
 +==== Asociace ==== 
 + 
 +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. 
 + 
 +{{ :​informatika:​maturita:​18_umlasociace.png |UML diagram asociace}} 
 + 
 +==== Agregace ==== 
 + 
 +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 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 ==== 
 + 
 +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ě – zaniknou tedy společně se Školou. 
 + 
 +{{ :​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. 
 + 
 +Př.: Objekt Jablko je speciálním případem objektu Plod. 
 + 
 +{{ :​informatika:​maturita:​18_umldedicnost.png |UML diagram dědičnosti}} 
 + 
 +==== Implementace ==== 
 + 
 +Speciální vztah mezi rozhraním a objektem, který ho implementuje. Význam je podobný jako u dědičnosti. 
 + 
 +Př.: Objekt Auto implementuje (pohybové) metody rozhraní Pohybovatelný.
  
 +{{ :​informatika:​maturita:​18_umlimplementace.png |UML diagram implementace}}
informatika/maturita/18a.1423516514.txt.gz · Poslední úprava: 09. 02. 2015, 22.15 autor: xmrnustik