Weitere ähnliche Inhalte
Ähnlich wie Úvod do OOP (20)
Úvod do OOP
- 3. 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
© UNICORN COLLEGE 2010
- 4. 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š?"
© UNICORN COLLEGE 2010
- 5. 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
© UNICORN COLLEGE 2010
- 6. 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
© UNICORN COLLEGE 2010
- 7. Ř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
© UNICORN COLLEGE 2010
- 8. 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
© UNICORN COLLEGE 2010
- 10. 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
© UNICORN COLLEGE 2010
- 11. 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
© UNICORN COLLEGE 2010
- 12. 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
© UNICORN COLLEGE 2010
- 13. 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
© UNICORN COLLEGE 2010
- 14. 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í
© UNICORN COLLEGE 2010
- 15. 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
© UNICORN COLLEGE 2010
- 17. 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
© UNICORN COLLEGE 2010
- 19. 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í
© UNICORN COLLEGE 2010
- 21. 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
© UNICORN COLLEGE 2010
- 22. 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
© UNICORN COLLEGE 2010
- 23. 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
© UNICORN COLLEGE 2010
- 24. 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
© UNICORN COLLEGE 2010