Objektově orientované programování: Porovnání verzí

Smazaný obsah Přidaný obsah
Formulace, styl
m +link
Řádek 1:
'''Objektově orientované programování''' (zkracováno na ''OOP'', z anglického '''Object-oriented programming''') je v [[Informatika|informatice]] specifické [[programovací paradigma]], které ho odlišilo od původního procedurálního. [[Zdrojový kód|Výkonný kód]] je v objektovém programování přidružen k [[Data|datům]] ([[Metoda (objektově orientované programování)|metody]] jsou ''zapouzdřeny'' v [[Instance třídy|objektech]]), což umožňuje snadnější přenos kódu mezi různými projekty (''[[Abstrakce (programování)|abstrakce'']] a [[Zapouzdření (objektově orientované programování)|zapouzdření]]). Propojení umožnilo zavést [[Dědičnost (objektově orientované programování)|dědičnost]], ale kvůli zjednodušení si vyžádalo zavedení [[Polymorfismus (programování)|polymorfismu]].
 
== Koncepce ==
* ''[[Instance třídy|Objekty]]'' – jednotlivé prvky modelované reality (jak data, tak související funkčnost) jsou v programu seskupeny do [[Entita (informatika)|entit]], nazývaných objekty. Objekty si pamatují svůj stav a navenek poskytují ''operace'' (přístupné jako metody pro volání).
 
* ''[[Abstrakce (programování)|Abstrakce]]'' – [[programátor]], potažmo [[počítačový program|program]], který vytváří, může abstrahovat od některých detailů práce jednotlivých objektů. Každý objekt pracuje jako [[Černá skříňka (kybernetika)|černá skříňka]], která dokáže provádět určené činnosti a komunikovat s okolím, aniž by vyžadovala znalost způsobu, kterým vnitřně pracuje.
 
* ''[[Zapouzdření (objektově orientované programování)|Zapouzdření]]'' – zaručuje, že objekt nemůže přímo přistupovat k „vnitřnostem“ jiných objektů, což by mohlo vést k nekonzistenci. Každý objekt navenek zpřístupňuje ''rozhraní'', pomocí kterého (a nijak jinak) se s objektem pracuje.
Řádek 10:
* ''[[Objektová kompozice|Kompozice]]'' – Objekt může obsahovat jiné objekty.
 
* ''[[Delegování (programování)|Delegování]]'' – Objekt může využívat služeb jiných objektů tak, že je požádá o provedení operace.
 
* ''[[Dědičnost (objektově orientované programování)|Dědičnost]]'' – objekty jsou organizovány stromovým způsobem, kdy objekty nějakého druhu mohou ''dědit'' z jiného druhu objektů, čímž přebírají jejich schopnosti, ke kterým pouze přidávají svoje vlastní rozšíření. Tato myšlenka se obvykle implementuje pomocí rozdělení objektů do ''tříd'', přičemž každý objekt je instancí nějaké třídy. Každá třída pak může dědit od jiné třídy (v některých programovacích jazycích i z několika jiných tříd).
Řádek 16:
* ''[[Polymorfismus (programování)|Polymorfismus]]'' – odkazovaný objekt se chová podle toho, jaké třídy je instancí. Pozná se tak, že několik objektů poskytuje stejné rozhraní, pracuje se s nimi navenek stejným způsobem, ale jejich konkrétní chování se liší podle implementace. U polymorfismu podmíněného dědičností to znamená, že na místo, kde je očekávána instance nějaké třídy, můžeme dosadit i instanci libovolné její podtřídy, neboť rozhraní třídy je podmnožinou rozhraní podtřídy. U polymorfismu nepodmíněného dědičností je dostačující, jestliže se rozhraní (nebo jejich požadované části) u různých tříd shodují, pak jsou vzájemně polymorfní.
 
Některé z těchto vlastností jsou pro OOP unikátní, jiné (např. [[Abstrakce (programování)|abstrakce]]) jsou běžnou vlastností i jiných vývojových [[Metodika vývoje softwaru|metodik]]. OOP je někdy označováno jako programátorské [[paradigma]], neboť popisuje nejen způsob vývoje a zápisu programu, ale i způsob, jakým návrhář programu o problému přemýšlí.
 
== Vztah k principům a fungování reálného světa ==