OOP v PHP – Začínáme
Vítám vás v prvním díle seriálu o Objektově Orientovaném Programování (dále jen OOP) v PHP, ve kterém vás seznámím se základy objektově orientovaného přístupu programování, jaké má výhody/nevýhody, proč se OOP zabývat a jaké jsou jeho hlavní znaky.
Takže co to vlastně „Objekt“ je?
Pod slovem „objekt“ si můžete představit všechno co je vnímano smysly. Je to nejobecnější slovo pro téměř cokoli co se dá nějak smyslově zachytit. Objekty si také můžeme představit jako jednotlivé entity modelované reality. Objekt může taky obsahovat mimojiné další objekt nebo objekty jako jeho vlastnost.
„Toto je nejčastějši forma zobrazení objektu. Obal tvoří
operace a jádro tvoří vlastnosti objektu. Jak vidíte k vlastnostem se
přistupuje skrz operace. ID je identifikátor objektu. Každý objekt je
unikátní a má svoje určité číslo, pod kterým se dá najít (uživatel
přímo nepřistupuje k objektu pomocí jeho čísla, ale skrze proměnnou
která na něj ukazuje). “
Co ale znamená OOP?
Na tuto otázku vám asi nikdo jednoznačně neodpoví, ale pokusím se vám to přiblížit. Když si vemete co znamená objekt (cokoliv) a orientovaný (směřující k něčemu), dostaneme něco jako „Programování směřující k čemukoli“. Tato definice nám ale nic specifického neříká, nevyčteme z toho o čem OOP vlastně je. OOP by se dalo chápat spíše jako snaha psát software z principu reálného světa, tedy mapování skutečných objektů z reálného světa do programového kódu a poskytuje nám abstrakci pro překlenutí mezery mezi reálnými objekty a kódem.
Klíčové vlastností OOP:
Další vlastnosti OOP:
Zapouzdření
Pod tímto pojmem si můžeme představit zabalení vlastnosti a operací do jednoho balíčku, který se nazývá „objekt“. To znamená, že k příslušným vlastnostem a operacím se programátor dostane pouze pomocí rozhraní daného objektu. Pokud je to možné, jediný přístup k vlastnostem objektu by mělo být přes operace (tzn. navenek jsou vidět jenom jeho operace, nikoli jeho vlastnosti).
Dědičnost
Tuto vlastnost využijeme tehdy, když máme 2 a více objektů, které mají určité společné vlastnosti nebo operace a nechceme aby se jejich implementace zbytečně opakovala. V tomto případě se vytvoří tzv. „rodičovská třída“, která bude obsahovat společné rysy pro její „potomky“. Potomci budou dědit veškeré vlastnosti a operace své rodičovské třídy a budou implementovat nové, více specifické vlastnosti a operace pro daný typ třídy. Jinak řečeno dědičnosti je schopnost spojit různé typy pod jeden společný. Např. „Ženy“ a „Muži“ mají společné rozhraní „Člověk“.
„V tomto případě nemusíme deklarovat vlastnosti věk a výška
ani operaci zjistiVek() v třídách Muž a Žena, protože dědí tyto
vlastnosti a operaci od rodiče“
Polymorfismus
Polymorfismus neboli mnohotvárnost navazuje na dědičnost a je to vlastnost jak lze nabývat různých implementací na základě více tříd pomocí jediného názvu operace nebo atributu. Polymorfismem tedy získáme objekty o různých implementacích, které jsou sdružené pod jeden společný typ (mají společnou nadřazenou “rodičovskou” třídu).
Skrývání informací a implementací
V reálném světe používáme každý den různé objekty, ale nezajímá nás jak tyto objekty funguji. Např. takový mobilní telefon. Téměř nikoho nezajímá jak mobil vlastně funguje, ale pouze využíváme jeho operace. OOP funguje na stejném principu. Není nutné znát implementaci objektu, pouze ho využíváme pro získání, změnu nebo vykonání určité operace.
Zachování stavu
Oproti různých podpogramů a funkcí si objekt zachovává svůj stav po celou dobu jeho existence a je stále připraven provádět další a další operace s jeho vlastnostmi.
Identita objektů
Každý objekt je svým způsobem specifický / unikátní a liší se jeho vlastnostmi (proměnné) a operacemi (funkcemi neboli metodami).
Zprávy
Jedná se v zásadě o komunikací mezi dvěmi objekty. Aby byla zpráva úspěšně odesláná musí znát výchozí objekt 2 povinné a 1 nepovinný parametr.
Třídy
Tvoří vlastně základní stavební prvek pro vytvoření objektu nebo je můžeme taky nazývat šablony. Každý objekt je totiž vytvořen podle určitého vzoru, který obsahuje jaké má mít daný objekt vlastnosti a operace.
Jaké jsou výhody a nevýhody OOP?
Mezi výhody jednoznačně patří modularita, což znamená, že program je rozdělen do několika funkčních logických části. Dalšími výhodami jsou:
Mezi nevýhody bych zařadil snad jenom, že se jedná o relativně složitější způsob programování oproti strukturovanému, ale to je jenom první dojem. Dále větší pamětová náročnost a možná není tak vhodné pro malé projekty.
To je z prvního dílu vše a doufám, že se vám líbil. Případné otázky a přípomínky pište do komentářů.
Hodnocení tutoriálu: 1.9 (hodnotilo 35 uživatelů)