ݺߣ
Submit Search
Úvod do OOP
•
0 likes
•
549 views
Tomáš Holas
Follow
1 of 28
Download now
Download to read offline
More Related Content
Úvod do OOP
1.
Objektově orientovaný přístup Tomáš Holas ©
UNICORN COLLEGE 2010
2.
Úvod do OOP Tomáš
Holas © UNICORN COLLEGE 2010
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
9.
Evoluce metodik © 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
16.
Stavební prvky OOP ©
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
18.
Objekt © 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
20.
Třída a instance ©
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
25.
Mapování problémové domény ©
UNICORN COLLEGE 2010
26.
Ukázková třída © UNICORN
COLLEGE 2010
27.
Použití třídy © UNICORN
COLLEGE 2010
28.
© UNICORN COLLEGE
2010
Download