1 / 18

Objektově orientovaný přístup (úvod)

Objektově orientovaný přístup (úvod). Objektově orientovaný přístup (úvod). Proč objekty? Objektový přístup umožňuje lepší využití kódu než knihovny procedur, možnost znovupoužití. Elegantně se zvládnou prostředky pro okenní rozhraní systémů.

lucie
Download Presentation

Objektově orientovaný přístup (úvod)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Objektověorientovanýpřístup (úvod)

  2. Objektověorientovanýpřístup (úvod) • Proč objekty? • Objektový přístup umožňuje lepší využití kódu než knihovny procedur, možnost znovupoužití. • Elegantně se zvládnou prostředky pro okenní rozhraní systémů. • Dávkové úlohy se staly interaktivními (objekt reaguje na více podnětů, na každý jinak). • Metodický faktor (mnoho dřívějších doporučení je nyní skryto v definici tříd a objektovém přístupu). • Definice • Objekt je cokoliv, jakákoliv věc, stavební jednotka, která modeluje nějakou část světa (člověk, tiskárna, kamera, faktura, hotelový pokoj, pacient, diagnoza,…) • Objekty (pohromadě jsou zde uzavřena data i jejich vlastnosti a chování) jednoho systému jsou propojené vazbami a působí na sebe navzájem.

  3. Objekt v OOP • Základní vlastnosti objektu – struktura objektu Objektobsahuje • 1. vnitřnípaměť(mávlastnostněcosipamatovat) - atributyobjektu, zvenčí je objektunepřístupná, je jehosoukromouzáležitostí, co siobjektpamatuje a jak. Představuje stav objektu. Stav objektu se mění podle chování objektu. Stav objektu je definován hodnotami všech atributů v daný okamžik. • 2. metodyobjektu(procedury a funkce, obecnějiposloupnostkódupgmu, kterévykonávajínějakoučinnostnadvnitřnípamětí). Opětzvnějškuneviditelné a nepřístupné. Představuje chování objektu, schopnost objektu něco dělat. • 3. jinéobjekty, kterým je schopenposlatzprávy a takříditjejichčinnost.

  4. 4.schopnost přijmout a zpracovat zprávu(požadavek) zvnějšku. Každý objekt obsahuje tzv. protokol zprávv rozhraní (přiřazení zprávy metodě objektu). Každá zpráva může mít vstupní a výstupní parametry, jediná možnost, jak spolupracovat s objektem, je poslat mu zprávu. Lze také říci, že zpráva slouží k „vybírání“ údajů z objektů resp. k „zapisování“ údajů do objektů, také ke spouštění dalších operací. Protokol je množina všech zpráv, které je možné objektu poslat. Bez znalosti protokolu uživatelé s objekty nemohou pracovat, nevědí, co objekty umějí udělat. Obr. 2x obecný objekt Objekt v OOP

  5. Objekt v OOP - zprávy • Zpráva je komunikační jednotka mezi dvěma objekty, která umožňuje, aby funkce SW aplikace byla výsledkem spolupráce skupiny objektů. Zprávy jsou tvořeny kombinací řídících a datových toků. • Typy zpráv • Konstruktor pro tvorbu objektů. • Destruktor pro rušení objektů. • Modifikátor pro modifikaci stavu objektů. • Selektor vrací info o stavu objektu. • Iterátor pro prohlížení obsahu datové struktury. • Typy přenosu zpráv • Jednoduchý přenos • Synchronizovaný přenos • Asynchronní přenos

  6. Objekt v OOP- odvozené vlastnosti Odvozenévlastnostiobjektu • Používání abstrakce • Existence objektů • Definování tříd objektů • Zapouzdření (nejdůležitější princip OOP) • Ukrývání implementace • Komunikace objektů • Polymorfismus • Dědičnost

  7. Objekt v OOP- odvozené vlastnosti • Abstrakce (proces vytváření jednoduché reprezentace složité reality). • Objekty a třídy (objekt má atributy, chování, vztahy s jinými objekty, třída je abstrakce objektů se stejnými vlastnostmi). • Zapouzdření (encapsulating) • data a funkce s nimi pracující jsou spojeny do jednoho objektu, data jsou skryta před ostatními objekty a lze k nim přistupovat pouze pomocí metod objektu. • Výhody: data jsou chráněna před narušením zvenku, ostatní objekty nemusí znát vnitřní strukturu dat, realizace změny v datech je jednodušší, projeví se jen v jedné třídě. • Ukrývání implementace (možnost používat metody objektů bez znalosti jejich implementace).

  8. Objekt v OOP- pohledy Pozn. OO programátor je buď tvůrce třídy nebo klientský programátor. Na objekt se dívámedvěmapohledy a) objekt, kterýpoužijeme v programujižjakohotový, naprogramovaný, zajímajínásveřejná data a operace, b) objekt, kterýmámezaúkolzhotovitneboopravit. • Ad a) zajímánáspopiszpráv a co se volánímtěchtozprávděje, tedyzajímáme se o chováníobjektu (pro klientské programátory). • Ad b) zajímajínásvšechnyvlastnosti,objektmusímeotevřít a zpracovatjehovnitřek, vždynaúrovni, kde je to třeba (pro programátory tvůrce).

  9. Objekt v OOP- odvozenévlastnosti • Komunikace objektů (aby existovala, musí mít jeden objekt přístup k druhému – musí mít odkaz na druhý objekt). • Dědičnost (vlastnost tříd viz dále). • Polymorfismus(stejná zpráva může vyvolávat různé operace) • Pokud mají různé objekty shodné protokoly, nemusí to znamenat, že mají stejnou datovou strukturu a stejné metody. • Objekty různých tříd mají metodu se stejným jménem, přičemž její implementace se v jednotlivých třídách může lišit. • Tj. dva různé objekty mohou přijmout tutéž zprávu a každý z nich na základě této zprávy vyvolá jinou metodu (operace “zobraz” vyvolaná zasláním zprávy jednou zobrazí text a jednou obrázek). • Jinými slovy jedna zpráva - dva různé objekty - dvě různé metody - dvojí reakce na tutéž zprávu.

  10. Objekt v OOP- odvozenévlastnosti

  11. Třída v OOP - vlastnosti • Třída je předpis pro budoucí objekt (abstrakce), ale samotnou realizací pro řešení analytického problému je objekt jako instance třídy. • Merunka: “Třída objektů slouží k tomu, abychom mohli strukturu dat a množinu metod patřících jednomu druhu objektu jednoduše popsat společně pro všechny objekty, které do daného druhu patří. Na třídy v OOP vlastně nahlížíme jako na popis toho, jaké druhy objektů v systému potřebujeme. Pro každou třídu pak definujeme, jakou budou mít její objekty strukturu a metody.” • Platí: • objekt je instance třídy, • objekt přebírá vlastnosti třídy, • třída má deklaraci, výčet atributů, metody, • objekt má hodnoty atributů a nemůže mít jiné metody než jeho třída.

  12. Třída v OOP - vlastnosti • Dědičnost - sdílení kódu • je znovupoužitelnost na úrovni deklarace třídy, • dědění je vztah mezi třídami nikoli mezi jejich objekty, • třída, ze které se dědí je předek (nadtřída), třída, která dědí je potomek (podtřída). • odvozená třída obsahuje všechny datové položky třídy předka a kopíruje rozhraní předka, tj. zprávy, které můžeme poslat objektům předka můžeme poslat i objektům potomka. Objekty potomka dědí i chování předka, ale chceme-li, aby potomek měl jiné chování, můžeme přidat novou metodu nebo změnit metodu předka překrytím, zastíněním – overriding viz předchozí obr. • existují dva projevy dědění: • generalizace (navrhnu objekty (třídy), k nim rodiče), • specializace (navrhnu třídu, z ní potomky).

  13. Specifikace třídy • Specifikace třídy obsahuje • Jméno třídy • Atributy třídy • Operace, které jsou platné pro všechny objekty třídy. • Viditelnost atributů a operací • Private - neviditelné, důsledně zapouzdřené části třídy • Protected - viditelné pouze z dané třídy odvozeným objektům • Public – jsou viditelné všem objektům třídy

  14. Další pojmy v OOP • Zpráva - požadavek, který jeden objekt posílá druhému. • Link - spojení mezi objekty, realizováno tak, že procedura jednoho objektu volá proceduru druhého objektu. • Asociace - spojení mezi třídami, které může a nemusí být realizováno linkem - zobecnění linku. • Každý objekt má svou identitu. • Každý objekt má odpovědnost za svou činnost. • ”Objekt má chování” znamená, že objekt vlastní metody, které toto chování zajistí.

  15. Výhody: znovupoužitelnost a snadnálokalizacezměn a chyb, oddělenídetailů od celku, rozšiřitelnost a sémantickábohatost, snadnějšípopisrozhraní s vnějškem, snazšídefinováníceléhosystému, zdůrazňujeme to, co objekt je a ne jak je užit - objektovéaplikacebývajístabilnější. Nevýhody: objektově-orientovanýkódneníefektivní, novámetodikasivyžádázaškolenípracovníků, neexistujíefektivnínástroje pro OOA. Objektově-orientovanýpřístup obecně

  16. Objektově-orientovanýpřístup obecně • OOA Object Oriented Analysis • vychází z objektově-orientovaného programování, • pohled na svět jako na soustavu spolupracujících objektů • kvalitativní změna myšlení při návrhu systémů, • blízké přirozenému lidskému chápání, • překonání semantické mezery • objekty v pojetí uživatelů a pgmátorů znamenají totéž. • Naučit se objektově programovat znamená naučit se objektově myslet. Prakticky objektově myslet znamená prakticky používat nějakou školu objektového modelování. Pgmátor si nejprve musí svůj pgm nějak představit a namalovat a teprve poté může tvořit kód (Kraval).

  17. Vlastnosti “Informace v obrázcích” Prostředekkomunikace (modely, diagramy) Zachycujeobch. procesy, věcnouproblematiku, architekturusystému Je podporovánosilnounotací a metodologiemi Metodologie Booch, Coad,Yourdon OMT (Object Modeling Technik), Rumbaugh OOSE (Object-Oriented Software Engineering) Jacobson (scénáře Use Case) Modelyvytváříme proto, ženejsmeschopniplněpochopitkomplexnísystémjakocelek. Model je zjednodušení reality. Díkymodelům vizualizujemestávajícínebovytvářenýsystém, specifikujemestrukturunebochovánísystému, získávámezáklad pro konstrukcisystému a dokumentujemerozhodnutí o systému. Vizuální modelování

  18. UML Unified Modeling Language • UML poskytuje • pravidla pro pojmenování, rozsahplatnosti, rozsahviditelnosti, omezení, provedenímodelu • různéspecifikace • rozšiřitelnostjakojsou stereotypy, dodanéhodnoty • přestože je nejčastěji spojován s modelováním OO SW díky rozšířením má mnohem širší využití, • je to pouhá notace, syntaxe (standard pro zobrazení a popis modelů), nikoliv metodika modelování. • Součásti UML • Definice notace UML (syntaxe) • Metamodel UML (sémantika) • Jazyk OCL pro popis omezení v modelech • Specifikace převodu do výměnných formátů (CORBA, IDL,XML)

More Related