28
© UNICORN COLLEGE 2010 Objektově orientovaný přístup Tomáš Holas

Úvod do OOP

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Úvod do OOP

© UNICORN COLLEGE 2010

Objektově orientovaný přístup

Tomáš Holas

Page 2: Úvod do OOP

© UNICORN COLLEGE 2010

Úvod do OOP

Tomáš Holas

Page 3: Úvod do OOP

© UNICORN COLLEGE 2010

Agenda

Co to je objektově orientovaný přístup

Problémy při vývoji software

Znovupoužitelnost

Evoluce programátorských metodik

Základní kocepty OOP

Page 4: Úvod do OOP

© UNICORN COLLEGE 2010

Co znamená OOP?

Program se skládá z entit zvaných objekty, které odpovídají konceptům, se kterými bude program manipulovat

Aplikace pro řízení firmy by mohla mít např. objekty Zaměstnanec, Pobočka, Produkt …

Pro specifikaci vlastností a struktury objektů slouží třída

Třída Zaměstnanec je vzor, který se použije k vytvoření mnoha různých objektů typu Zaměstnanec.

Objekty komunikují tak, že si navzájem posílají zprávy

Objektu Zaměstnanec pošleme zprávu "Jak se jmenuješ?"

Page 5: Úvod do OOP

© UNICORN COLLEGE 2010

Co může být objektově orientované

Programovací styl

Koncepty z problémové domény se mapují přímo na objekty ve zdrojovém kódu

Filozofie

Způsob designu, implementace a přemýšlení o zdrojovém kódu

Technologie

Objektově orientované metodiky, programovací jazyky, databáze

Page 6: Úvod do OOP

© UNICORN COLLEGE 2010

Softwarová krize

Společnost je stále více závislá na softwaru

Problémy softwaru:

Velké množství chyb

Složitý na pochopení

Špatně se udržuje

Špatně se rozšiřuje

Stále znovu "vynalézáme kolo"

vysoké náklady na vývoj

vždy nové zavlečené chyby

Page 7: Úvod do OOP

© UNICORN COLLEGE 2010

Řešení: Znovupoužitelnost!

Programy se píší ručně, od základů..

… jako výroba vlastních šroubků při stavbě domu

Průmyslová revoluce: montážní linka, náhradní díly

Cíl: Vyvinout znovupoužitelné softwarové komponety

Jednoduše ovladatelné

Snadné na pochopení

Vhodné k použití v různých programech

Nový kód využívá komponent a řeší už specifické problémy

Znovupoužitelnost není cut & paste

Pokud máte nutkání zkopírovat kód, měli byste vytvořit komponentu

Page 8: Úvod do OOP

© UNICORN COLLEGE 2010

Výhody znovupoužitelnosti

Méně kódu – nižší cena vývoje

Mnohokrát použitý kód = spolehlivě otestovaný kód

Chybu stačí opravit na jednom místě

Vyšší specializace programátorů

Můj kód používají ostatní – motivace k tomu psát ho dobře

Page 9: Úvod do OOP

© UNICORN COLLEGE 2010

Evoluce metodik

Page 10: Úvod do OOP

© UNICORN COLLEGE 2010

Modulární programování

Rozdělit velké problémy na menší, snadněji uchopitelné

Rozdělením velkých programů na menší části

Každou část kódovat a testovat samostatně

Jádrem modularizace je subrutina (1950)

Nevyřešené problémy:

Které části programu převést na subrutiny

Jaké budou argumenty, návratové hodnoty a vedlejší efekty

Page 11: Úvod do OOP

© UNICORN COLLEGE 2010

Strukturované programování

Systematický způsob modularizace (1960)

Funkcionální dekompozice

Přístup shoda-dolu

Rozdělování funkcionality od nejvyšší úrovně, na menší a menší komponenty, dokud nedostaneme konkrétní subrutiny

Page 12: Úvod do OOP

© UNICORN COLLEGE 2010

Limity funkcionální dekompozice

Funkce vyvíjejících se systému nelze vždy předvídat

Úspěšný systém se bude rozšiřovat

Nutnost implementovat více úkolů, než bylo původně v plánu

Systém se upraví aby zahrnoval počáteční změny

Z úprav se stanou "hacky"

Požadovaná funkcionalita se vzdaluje od původní dekompozice

Komplexita a nestabilita systému narůstá

Modifikace vyžadují odvážnější hacky, nebo kompletní přepsání

Proces se zastavuje, když náklady přerostou užitek z nové funkcionality

Page 13: Úvod do OOP

© UNICORN COLLEGE 2010

Problém globálních dat

Zvýšení flexibility - globální data

Sdílená mezi subrutinami

Každá subrutina pracující s globálními daty může nepředvídatelným způsobem ovlivňovat ostatní subrutiny

Page 14: Úvod do OOP

© UNICORN COLLEGE 2010

Problematické přizpůsobení kódu

Pro implementaci podobné (ne identické) operace na existujících datech musíme duplikovat kód

Kolekce dat s různými typy vyžadují náročné rozhodování

Page 15: Úvod do OOP

© UNICORN COLLEGE 2010

Jak to řeší OOP?

Předávání zpráv

Jasná a konzistentní syntaxe pro manipulaci s objekty

Zapouzdření

Způsob jak ochránit data a vnitřní funkce před nežádoucími zásahy z venku

Dědičnost

Umožňuje definovat nové datové struktury na základě těch starých (otestovaných), za použití existujícího kódu

Polymorfismus

Datové struktury si samy udržují informace o svých typech

Všechny objekty obsahují kompletní sadu funkcí pro práci se svými daty

Page 16: Úvod do OOP

© UNICORN COLLEGE 2010

Stavební prvky OOP

Page 17: Úvod do OOP

© UNICORN COLLEGE 2010

Objekt

Objekt je souhrn informací, který modeluje některé vysokoúrovňové koncepty z problémové domény

Existuje 1:1 vazba mezi "realnými věcmi" z problémové domény a objekty v OO programu

Práce s OO programy je intuitivní, jedná se o určitý typ "virtuální reality"

Struktura a chování objektu je popsána v definici třídy objektu

Definováním objektů vytváříme další datové typy

Celé číslo

Řetězec

Automobil

Page 18: Úvod do OOP

© UNICORN COLLEGE 2010

Objekt

Page 19: Úvod do OOP

© UNICORN COLLEGE 2010

Třída a instance

Třída je vzor pro vytváření mnoha podobných objektů

Vytvořený objekt je instance dané třídy

Objekty ze stejné třídy budou mít stejnou základní strukturu a funkcionalitu

Z jedné třídy je možné vytvořit mnoho instancí

Page 20: Úvod do OOP

© UNICORN COLLEGE 2010

Třída a instance

Page 21: Úvod do OOP

© UNICORN COLLEGE 2010

Instanční proměnné

Instanční proměnná (nebo atribut) objektu je určitá informace náležející jednotlivé instanci (objektu)

Jméno objektu typu Člověk, model nebo rok objektu Automobil

Instanční proměnné jsou definovány v třídě objektu

Každý objekt má vlastní privátní místo, kam si ukládá svoje data

Page 22: Úvod do OOP

© UNICORN COLLEGE 2010

Instanční metody

Instanční metody jsou akce, které je objekt schopen provádět

Objekt třídy Člověk by měl umět sdělit své jméno, příjmení..

Objekt třídy Auto by měl umět nastartovat, zařadit rychlost..

Instanční metoda se implementuje se pomocí speciální subrutiny, která je připojená k třídě objektu, a má přístup ke všem instančním proměnným objektu

Page 23: Úvod do OOP

© UNICORN COLLEGE 2010

Metody a zprávy

Zpráva je požadavek, který pošleme objektu, když chceme, aby provedl nějakou akci případně nastavil nebo vrátil hodnotu atributu

Metoda je část kódu, která je zavolána, aby obsloužila akci požadovanou danou zprávou

Page 24: Úvod do OOP

© UNICORN COLLEGE 2010

Jak vypadá zpráva

Zpráva se skládá ze 3 částí

Příjemce: objekt přijímající zprávu

Jméno metody: jakou akci chceme na objektu vyvolat

Parametry: argumenty které zpráva vyžaduje

Page 25: Úvod do OOP

© UNICORN COLLEGE 2010

Mapování problémové domény

Page 26: Úvod do OOP

© UNICORN COLLEGE 2010

Ukázková třída

Page 27: Úvod do OOP

© UNICORN COLLEGE 2010

Použití třídy

Page 28: Úvod do OOP

© UNICORN COLLEGE 2010