Objektově orientované programování (zkracováno na OOP, z anglického Object-oriented programming) je metodika vývoje softwaru, založená na následujících myšlenkách, koncepci:
Některé z těchto vlastností jsou pro OOP unikátní, jiné (např. abstrakce) jsou běžnou vlastností i jiných vývojových 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í.
Tyto jazyky můžeme je rozčlenit do mnoha skupin, jako např.
Základním pojmem je objekt. Objekt si „pamatuje“ svůj stav (v podobě dat čili atributů) a poskytuje rozhraní operací, aby se s ním mohlo pracovat (nazývané metody). Při používání objektu nás zajímá, jaké operace (služby) poskytuje, ale ne, jakým způsobem to provádí - to je princip zapouzdření. Jestli to provádí sám nebo využije služeb jiných objektů, je celkem jedno. Vlastní implementaci pak můžeme změnit (např. zefektivnit), aniž by se to dotklo všech, kteří objekt používají.
Abstrakce objektu, která v architektuře programu podchycuje na obecné úrovni podstatu všech objektů podobného typu, se nazývá třída. Třída je předpis, jak vyrobit objekt daného typu. Například má sousedka (chápejme ji jako objekt) má nějaké jméno, je nějak vysoká, umí chodit a umí mluvit. Totéž platí i pro mne. Mohu tedy při modelování těchto dvou objektů, sousedky a mě, abstrahovat od nepodstatných dílčích odlišností a díky této abstrakci vytvořit obecnou třídu Člověk, která bude mít atributy jméno a příjmení (obojí je nějaký řetězec znamků) a metody chodit a mluvit.
Představme si dále, že můj soused je svářeč. Stejně jako moje sousedka má jméno, příjmení a umí chodit, mluvit, navíc ovšem umí svářet. Při modelování můžeme využít toho, že svářeč má všechny vlastnosti třídy Člověk a něco navíc. Vytvořme třídu Svářeč jako potomka třídy Člověk. Třída svářeč tímto dědí všechny atributy i metody třídy Člověk (nemusíme je v kódu znovu psát a budeme je upravovat na jediném místě), navíc bude mít metodu svařit.
Metoda svařit může mít dva například parametry (argumenty), prvníKusKovu a druhýKusKovu, a návratovou hodnotu jedenKusKovu. Vím, že když dám sousedovi svářeči dva kusy kovu a požádám o jejich svaření, dostanu je zpátky jako jeden kus kovu a nemusím se starat o to, jak to dokázal. Stejně to bude fungovat v programu. Objekty si mezi sebou mohou posílat zprávy, v našem případě zpráva znamená, že jeden objekt spustí metodu svařit jiného objektu a využije vrácenou hodnotu (druhá zpráva). Tomuto způsobu komunikace mezi objekty, která skrývá konkrétní implementaci a stará se jen o zprávy, se v objektově orientovaném programování říká zapouzdření.
Představme si nyní, že potřebujeme vytvořit komplexnější model světa, ve kterém se já od své sousedky začnu lišit. Já umím programovat a ona umí účtovat. Protože nám zůstaly různé společné vlastnosti, ponechme původní třídu Člověk a vytvořme dvě třídy Programátor a Účetní, obě poděděné od třídy Člověk. Nyní však v modelu světa nebude existovat žádná instance třídy Člověk, budou existovat jen instance potomků třídy Člověk, tedy tříd od Člověka poděděných. Pokud skutečně chceme, aby v našem modelu existovali pouze svářeči, programátoři a účetní, ale žádní obecní lidé, kteřé by nespadali ani do jedné z těchto skupin, lze označit třídu Člověk jako abstraktní třídu, tedy takovou, od níž nelze tvořit žádné instance.
SchopenPsátNaPočítači s metodou napišNaPočítači a upravit třídy Programátor a Účetní tak, aby toto rozhraní implementovaly. V definici rozhraní zpravidla nemůže být obsažen kód (implementaci) dané metody, ale všechny třídy, které toto rozhraní implementují, musí být schopny se nějak vypořádat s příkazem napišNaPočítači.
Další důležitou vlastností objektů je polymorfismus. Stejná zpráva může být poslána různým nebo od různých objektů. Můžeme rozlišit, zda jde o polymorfismus nad dvěma různými objekty, nebo nad dvěma různými stavy téhož objektů a nebo zda zprávu posílají různé objekty.
Představte si sekretářku a ředitele jako dva objekty. Sekretářka umí rozhraní SchopenPsátNaPočítači, kde je např. operace napsatDopis, ale ředitel ho nemá (není to jeho starost). Ale může mít operaci napsatDopis, protože může požadavek předat jinému objektu - sekretářce. Udržování odkazů na jiné objekty a využívání jejich služeb se říká skládání objektů.
برمجة شيئية | Обектно-ориентирано програмиране | Objektno Orijentirano Programiranje | Orientació a objectes | Objektorienteret programmering | Objektorientierte Programmierung | Objektema programado | Programación orientada a objetos | Objektuei orientatutako programazio | Olio-ohjelmointi | Programmation orientée objet | תכנות מונחה עצמים | Objektumorientált programozás | Pemrograman Berorientasi Objek | Objektema programado | Programmazione orientata agli oggetti | オブジェクト指向 | Objektinis programavimas | Pengaturcaraan Berorientasikan Objek | Objectoriëntatie | Objektorientert programmering | Programowanie obiektowe | Orientação a objeto | Объектно-ориентированное программирование | Objektorienterad programmering | การเขียนโปรแกรมเชิงวัตถุ | Nesne Yönelimli Programlama | Об’єктно-орієнтоване програмування | Lập trình hướng đối tượng | 面向对象的程序设计 | 객체지향 프로그래밍
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Objektově orientované programování".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world