Přehled současných způsobů tvorby programů Objektové a vizuální programování
Objektové programování Koncepce, tj.hlavní myšlenka, vlastnosti Programovací jazyky Teorie objektů
Vlastnosti 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í).
Vlastnosti 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.
vlastnosti 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.
vlastnosti 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.
vlastnosti 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).
Některé z těchto vlastností jsou pro OOP unikátní, jiné (např 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í.
Programovací jazyky Bylo již dříve, proto jen shrnu Tzv. čistě objektové jazyky, někdy nazývané objektové ve kterých se programuje pouze pomocí objektů. Sem patří např. Smalltalk a Ruby. Tzv. hybridní jazyky, nebo také objektově orientované ve kterých programátor může a nemusí dodržovat principy OOP, které je většinou implementováno nekompletně (základní typy). Mezi takové jazyky patří např. C++ a Python. Objektová rozšíření původně neobjektových jazyků, např. Object Pascal, který vznikl jako rozšíření neobjektového jazyka Pascal.
Teorie objektů Základním pojmem - objekt. Objekt si „pamatuje“ svůj stav (v podobě dat čili atributů) a poskytuje rozhraní operací, aby se s ním mohlo pracovat. Při používání objektu nás zajímá, jaké operace (služby) poskytuje, ale ne, jakým způsobem to provádí - princip zapouzdření. Jestli to provádí sám nebo využije služeb jiných objektů, je celkem jedno. Abstrakce objektu, která v programu podchycuje podstatu všech objektů podobného typu, se nazývá třída. Třída = předpis, jak vyrobit objekt daného typu. Například Váš spolužák (chápejme ho jako objekt) má nějaké jméno, je nějak vysoký, umí chodit a umí mluvit. Totéž platí i pro Vás. Můžeme tedy při modelování těchto dvou objektů, spolužáka a Vás, 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 znaků) a metody chodit a mluvit.
Dědičnost Při vytváření objektů pro chod programu, které budou odpovídat zmíněným dvěma reálným objektům, je třeba vytvořit dvě různé třídy Člověk, pro každý modelovaný reálný objekt jednu instanci (tedy jedna třída Vy a jedna spolužák). Hodnoty atributů jméno a příjmení se pochopitelně v našem případě budou lišit, nicméně obě instance jsou schopny chodit a mluvit díky tomu, že jsme tyto schopnosti obecně přiřadili třídě Člověk. Představme si dále, že můj soused je svářeč. Stejně jako spolužák 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í.
Zapouzdření Zapouzdření v objektech znamená, že k obsahu objektu se nedostane nikdo jiný, než sám vlastník. Navenek se objekt projeví jen svým rozhraním (operacemi, metodami) a komunikačním protokolem. 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ů.
Atomizace metod = zodpovědnost objektu = to, co objekt umí, o co se stará. Objekt by neměl umět sám příliš mnoho a nemusí to dělat sám (viz skládání objektů). Znakem kvalitního návrhu softwaru je to, že třídy v projektu obsahují pokud možno atomické metody, které řeší pouze jeden konkrétní problém.
Vizuální programování Forma programování i pro běžného uživatele Není nutné znát progr. jazyky (syntaxe, kódy) „jen kliká myší“ vybírá si součásti, které ve svém programu chce použít. Spojuje je mezi sebou, určuje jejich vlastnosti a funkce.
když je program hotov a fungují všechny funkce které tam uživatel nastavil, tak nechá program přeložit do strojového jazyka. Tím se program zakóduje do zápisu, kterému rozumí počítač.
Příklady programů Baltík Squeak Etoys Petr …