Objektově orientované programování je paradigma, tedy pohled na to, jak programovat. Brzy sami uvidíte, že právě OOP přináší dost zásadní zjednodušení na všechny časté úlohy a potíže, které se při reálném programování řeší stále dokola.
Základní myšlenka objektově orientovaného programování je rozdělit velkou aplikaci (složitý úkol) na spoustu malých částí, které umíme řešit elegantně a nezávisle na sobě.
Pokud například programujeme rezervační systém pro letenky, tak jde o velmi komplexní projekt, který řeší tisíce případů. Když se nám podaří celou složitou logiku rozložit na mnoho vrstev a částí, dokážeme celý složitý systém snadno pochopit a jednotlivé dílčí úkoly naprogramovat samostatně.
Kromě akademického pohledu na věc existuje i řada praktických důvodů, proč OOP používat:
Osobně si neumím představit, že by týmy s více jak jedním člověkem programovali jakkoli jinak.
Poznámka:
Použití objektů přináší počítači o trochu vyšší režii paměti i procesoru, proto tím výkon aplikace trochu snížíme. V reálném prostředí to ale ničemu nevadí, protože přeprogramováním aplikace do objektů sice ztratíme část výkonu (obvykle jednotky procent), zato ale ušetříme čas programátorům (obvykle desítky až stovky procent). Čas člověka je vždycky mnohem dražší (a navíc velmi omezený), než čas počítače.
Nezapomeňte také na to, že OOP přináší velké zjednodušení celé aplikace a umožňuje rozsáhlé aplikace dokončit za rozumný čas. Velké množství složitých aplikací by bez objektů skoro nešlo naprogramovat.
Základní snahou OOP je při návrhu softwaru co nejvíc simulovat vlastnosti, chování a principy reálného světa. Objekty v OOP reprezentují reálné entity. Tento způsob myšlení nám umožňuje budovat obrovské komplexní systémy, kterým lze dobře rozumět, interně řeší reálné problémy tak, jak by se řešily i bez počítače a je možné principy vysvětlit reálným lidem.
Pokud například implementujeme aplikaci na správu obsahu, dává smysl si celou vnitřní logiku rozvrhnout do mnoha reálných entiít (článek, autor, kategorie) a relace nevytvářet podle uměle generovaných ID záznamů (jak se to konvenčně v databázích dělá), ale podle reálných vazeb.
Příklad konkrétní implementace:
class Article{private Author $author;/** @var Category[] */private array $categories;private string $title;}class Author{private string $name;}class Category{private string $name;}
Jak můžeme vidět, třída Article
neobsahuje pouze technické parametry, jako je například ID záznamu s autorem, ale jde o reálnou vazbu na entitu Autora, která má opět své vlastnosti.
Vysvětlení konkrétní implementace a syntaxe najdete v úvodním tutoriálu.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.
Napište mi, pokud si nevíte rady.
Lektor: Jan Barášek
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | cs