OOP
Objektově orientované programování
Koncepce OPP
Objekty – jednotlivé prvky modelované reality (jak data, tak související funkčnost) jsou v programu seskupeny do entit, nazývaných objekty. Objekty si pamatují svůj stav a navenek poskytují operace (přístupné jako metody pro volání).
Abstrakce – programátor, potažmo program, který vytváří, může abstrahovat od některých detailů práce jednotlivých objektů. Každý objekt pracuje jako č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í – 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.
Skládání – Objekt může obsahovat jiné objekty.
Delegování – Objekt může využívat služeb jiných objektů tak, že je požádá o provedení operace.
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).
Polymorfismus – odkazovaný objekt se chová podle toho, jaké třídy je instancí. Pokud několik objektů poskytuje stejné rozhraní, pracuje se s nimi 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í.
Vztah k principům reálného světa
Základním paradigmatem OOP je snaha modelovat při řešení úloh principy reálného světa v počítači pokud možno jedna ku jedné. V praktickém životě otevíráme dveře pořád stejně, bez ohledu na to, zda jsou dřevěné nebo laminované, zda mají kukátko, bezpečnostní vložku nebo řetízek navíc.
Existuje velké množství programovacích jazyků umožňujících objektově orientované programování, např. Perl, Smalltalk, Java, C++, Object Pascal, C#, Visual Basic .NET, Lisp, PHP, Python, Ruby…
Tyto jazyky můžeme rozčlenit do mnoha skupin, jako:
Tzv. čistě objektové jazyky, někdy nazývané objektové, ve kterých výpočet probíhá výhradně interakcí objektů, a to vzájemným zasíláním zpráv. Sem patří např. Smalltalk, Ruby a Python.
Tzv. hybridní jazyky, nebo také objektově orientované, které jsou založeny na imperativním programování a obvykle pouze částečně implementují vlastnosti objektového programování. Mezi takové jazyky patří např. C++ nebo Java.
Objektová rozšíření původně neobjektových jazyků, např. Object Pascal, který vznikl jako rozšíření neobjektového jazyka Pascal.
Odkaz na server na kterém je možno nalézt mnoho výukových materiálů k OOP
https://www.builder.cz/
Zdroje:
https://cs.wikipedia.org/wiki/Objektov%C4%9B_orientovan%C3%A9_programov%C3%A1n%C3%AD
https://www.builder.cz/