Nová verze tohoto webu se nachází na www.tutorialy.com

homeforumTutorialy.com
 
Reklama
Programujeme objektově v PHP - první díl
Programujeme objektově v PHP - první díl
Programujeme objektově v PHP - první díl
První díl ze seriálu o OOP v PHP, ve kterém vám vysvětlím základní pojmy objektově orientovaného programování
Autor: Neuronic | Kategorie: Tvorba webu > PHP | Zhlédnuto: 4496x |
Hodnocení: 1.9 | Komentáře (0) | Obtížnost: Pokročilý | Vloženo: 11.1.2007

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:

  • Dědičnost (inheritance)
  • Polymorfismus (polymorphism)
  • Zapouzdření (encapsulation)

Další vlastnosti OOP:

  • Skrývání informací a implementací (information and imiplamentation hiding)
  • Zachování stavu
  • Identita objektů (object identity)
  • Zprávy (messages)
  • Třídy (classes)

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.

  1. musí znát identifikátor objektu, kterému je zpráva určena
  2. musí znát název operace, kterou má cílový objekt vykonat
  3. může uvést argument nebo argumenty, se kterými má být daná operace provedena

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:

  • větší přehlednost celé aplikace oproti strukturovanému programování
  • znovupoužitelnost kódu (můžete používat stále stejný kód pro určité problémy)
  • jednoduchá rozšiřitelnost
  • rozdělení aplikace do několika vrstev (prezentační, logickou „bussiness“ a databáze)
  • přízpůsobitelnost
  • snadné spravování kódu
  • jednodušší testování
  • větší bezpečnost celé aplikace

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ů)

Ohodnoťte tutoriál (jako ve škole):

Tutorialy.com © 2006 Marek Čapla & Filda | výměna odkazů | mapa webu | RSS zdroj | PageRank: 4 | ISSN 0322-9289

Online flash hry