Objektově orientované programování

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Model systému pohledem OOP (konstrukty OOP): Osamostatnění pojmů)
m (Rysy OOP: Upraven formát)
Řádka 45: Řádka 45:
  
 
== Rysy OOP ==
 
== Rysy OOP ==
; Abstrakce (abstraction)
+
 
 +
; Abstrakce (''abstraction'')
 
*objekt pracuje jako „černá skříňka“
 
*objekt pracuje jako „černá skříňka“
**objekt můžeme používat aniž bychom znali detaily jeho fungování
+
*objekt můžeme používat aniž bychom znali detaily jeho fungování
**implementaci objektu lze změnit, pokud nezměníme rozhraní, zbytek kódu nemusíme měnit
+
*implementaci objektu lze změnit, pokud nezměníme rozhraní, zbytek kódu nemusíme měnit
 +
 
 
; Zapouzdření (''encapsulation'')
 
; Zapouzdření (''encapsulation'')
*objekt může přistupovat k vlastnostem jiných objektů pouze pomocí zasílání zpráv!
+
*objekt může přistupovat k atributům jiných objektů pouze pomocí zasílání zpráv!
 
*„data a funkce dohromady“
 
*„data a funkce dohromady“
 +
 
; Polymorfismus (''polymorphism'')
 
; Polymorfismus (''polymorphism'')
 
*různé objekty mohou reagovat na stejnou zprávu různě
 
*různé objekty mohou reagovat na stejnou zprávu různě
 
*„když dva dělají totéž, není to totéž“
 
*„když dva dělají totéž, není to totéž“
 +
 
; Skládání (''agregation'')
 
; Skládání (''agregation'')
 
*objekt může jako své součásti obsahovat jiné objekty
 
*objekt může jako své součásti obsahovat jiné objekty
 +
 
; Delegování (''delegation'')
 
; Delegování (''delegation'')
 
*pro provedení operace objekt část akce řeší voláním dalších objektů
 
*pro provedení operace objekt část akce řeší voláním dalších objektů
 +
 
; Dědičnost (''inheritance'')
 
; Dědičnost (''inheritance'')
 
*pokud objekt sdílí a rozšiřuje rozhraní jiného objektu, popisujeme to dědičností
 
*pokud objekt sdílí a rozšiřuje rozhraní jiného objektu, popisujeme to dědičností
* dědičnost používáme pouze tehdy, kdy objekt přebírá (a případně rozšiřuje o nové zprávy) CELÉ rozhraní jiného objektu
+
* dědičnost používáme pouze tehdy, kdy objekt přebírá (a případně rozšiřuje o nové zprávy) CELÉ rozhraní jiného objektu (jinak používáme skládání + delegování)
**jinak používáme skládání + delegování
+
  
 
== Použití konstruktů OOP v programovacích jazycích ==
 
== Použití konstruktů OOP v programovacích jazycích ==

Verze z 13. 1. 2014, 07:15


Obsah

Co je to OOP?

Základní paradigma OOP

Cíle

Model systému pohledem OOP (konstrukty OOP)

Objekt
Zpráva
Rozhraní objektu/třídy
Třída
Instance
Atributy
Stav objektu

Rysy OOP

Abstrakce (abstraction)
Zapouzdření (encapsulation)
Polymorfismus (polymorphism)
Skládání (agregation)
Delegování (delegation)
Dědičnost (inheritance)

Použití konstruktů OOP v programovacích jazycích

Syntaxe Javy viz Java: Zápis tříd.

Objekty, třídy

Vytváření objektů

Zprávy

Metoda má
Přetěžování metod (overloading)
Překrývání metod (overlaying)
Atomizace metod

Atributy

Instanční proměnné
Třídní proměnné
Přístupnost metod a atributů (určena modifikátory)

Syntaxe v Javě viz Java: Modifikátory přístupu.

Dědičnost

Abstraktní třída

Rozhraní (interface)

Nepleťte s pojmem „rozhraní třídy“ ve smyslu souhrnu všech metod!
Pokud implementujeme interface, pak „slibujeme“, že součástí rozhraní třídy jsou minimálně metody, zahrnuté v interface.

Operátory this a super

Příklady použití rysů OOP v knihovnách Javy

Polymorfismus
Skládání

Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje