Objekty, třídy, vazby 2006 UOMO 30
Osnova Vymezení pojmu objekt Objekt a základní objektové koncepty Třídy, třída vs. objekt Vztahy mezi objekty, vazby mezi třídami Polymorfismus 2006 UOMO 31
Vymezení pojmu objekt Data s metodami Objekt je něco, co lze zřetelně identifikovat (Coleman et al.) Objekt je charakteristický množinou operací a stavem, který si pamatuje působení operací (Jacobson) Objekt má stav, chování a identitu (Booch) Jednoznačně identifikovatelná, zřetelně ohraničená, smyslově vnímatelná část reality nebo myšlenkově manipulovatelná část našeho vědomí, která tvoří v jistém smyslu a pro daný účel ucelenou množinu charakteristik stavu a chování a vyznačuje se vlastní existencí v čase. 2006 UOMO 32
Objekty Člověk vnímá okolní svět jako objekty Objekt je vždy v nějakém stavu stav se Vyznačují se stavem a chováním Stav je dán vlastnostmi resp. hodnotami jednotlivých vlastností (věk:26, váha:56) Chování je dáno tím co objekt dělá resp. jak přechází z jednoho stavu do druhého resp. jak mění hodnoty svých vlastností v čase (běží, jde, jí) Každý objekt má svou identitu a je jedinečný (Jan Novák, toto auto, atd.) All objects are created unequal (Thomas Kühne) 2006 UOMO 33
Vlastnosti Charakteristika struktury (StructuralFeature) Pojmenovávají vztah objektu a hodnoty nebo objektu a kolekce hodnot Vlastnost je abstrakcí konkrétní podoby stavu nebo hodnoty, jejíž identita nás nezajímá konkrétní stav: 21 let - > abstrakce daného stavu tj. vlastnost: věk Vlastnost se podílí na identitě a jednoznačnosti objektu, se kterým je spojena 2006 UOMO 34
Operace Charakteristiky chování (BehavioralFeature) popisují určitý aspekt chování objektu Nenáhodná posloupnost změn stavu objektu vyvolaná na základě zaslané zprávy resp. požadavku Operace deklarují na jaké požadavky umí objekt reagovat Metoda konkrétní způsob provedení operace; operace deklaruje co se bude dít (analytický koncept); metoda specifikuje jak se to bude dít (návrhový koncept) 2006 UOMO 35
Základní objektové koncepty Abstrakce Zapouzdření Dědičnost Polymorfizmus Komunikace (zasílání zpráv) Asociace Agregace (a kompozice) 2006 UOMO 36
Abstrakce = Separování důležitých rysů entity od těch nedůležitých v závislosti na kontextu modelování Příklad: Kalkulačka z hlediska studenta Významné rysy: Rozsah a přesnost čísel Počet a typ operací Zda se dá maskovat při písemce Nevýznamné: Počet součástek na systémové desce Typ procesoru kalkulačky Algoritmy početních operací 2006 UOMO 37
Zapouzdření (Encapsulation) = data a operace objektu tvoří nedělitelný celek. Data (vlastnosti, stav) objektu a operace se přímo ovlivňují a jsou na sobě závislé. Řada rysů objektu je před okolím ukrytá (skrývání informací) vede ke zjednodušení z pohledu okolních objektů Zajišťuje konsistenci objektů objekty se nedostávají do stavů, které neodpovídají realitě 2006 UOMO 38
Skrývání informací Každý objekt může mít privátní elementy, které nelze pozorovat či přímo ovlivňovat z okolí objektu (Information hiding). Tyto elementy jsou ukryty za tzv. veřejným rozhraním objektu, kterým mohou být nepřímo zprostředkovány okolnímu světu. Dle objektového paradigmatu by měly být atributy privátní (zapouzdřené a z okolí nepřístupné). 2006 UOMO 39
Identifikace objektů Přemýšlíme o zkoumané oblasti Zapisujeme si důležité poznatky a postupy. Podstatná jména pak mohou představovat objekty, které se v problému vyskytují Slovesa označují operace (chování) každého takového objektu Objekty, které nemají z hlediska řešení problematiky zásadní význam, vyřadíme. Identifikovaným objektům přiřadíme atributy definující jejich stav (jméno, rodné číslo, atd.) 2006 UOMO 40
Třída = množina objektů, které mají stejnou strukturu a chování Abstraktní datový typ popisuje interní strukturu skupiny objektů z určitého úhlu pohledu Šablona pro objekty Obsahuje deklarace atributů a operací Každý objekt z dané třídy má uvedené operace a atributy 2006 UOMO 41
Objekt vs Třída Třída popis (deklarace) Konkrétní objekt seznam atributů jméno výška váha barva konkrétní hodnoty Alík 1 m 40 kg černobílá 2006 UOMO 42
UML Unified Modeling Language Grafický jazyk pro modelování Značky pro třídu a objekt Třída Objekt Auto Auto Barva Kubatura Startuj() Rozsviť() atributy (data) metody (operace) MojeAuto:Auto 2006 UOMO 43
Vztahy mezi objekty Dědičnost vztah vycházející z různých úrovní abstrakce použitých na objekty stejného typu Asociace jednoduché spojení dvou objektů Agregace - vztah vycházející z různých úrovní abstrakce použitých na celek resp. jeho části Kompozice speciální typ agregace 2006 UOMO 44
Dědičnost (gen/spec) = vztah, kdy jedna třída sdílí část struktury a chování deklarované v jiné třídě a má zároveň část struktury a nebo chování, která se liší Umožňuje definovat nové objekty pomocí již definovaných objektů Umožňuje sdružovat objekty podle své příslušnosti do vyšších celků (předků) tj. generalizovat Potomek dědí všechny vlastnosti a operace z předka a doplňuje je o speciální vlastnosti a operace Umožňuje znovupoužití (reuse) v modelování a programování Přehlednost není nutné opakovat co již bylo deklarováno Jednoduché změny změny v nadtřídě se projeví do všech podtříd 2006 UOMO 45
Dědičnost (notace) Předek (nadtřída) Vozidlo specializace generalizace Autobus Potomek (podtřída) 2006 UOMO 46
Asociace = fyzické nebo logické spojení mezi dvěma objekty vymezuje účastníky určitého vztahu umožňuje spolupráci objektů pomocí asociace jeden objekt může využívat služeb jiného objektu charakteristiky vztahu: multiplicita říká kolik objektů jedné třídy může komunikovat s kolika objekty druhé třídy 1:1 1:N N:N role v jaké objekt v daném vztahu vystupuje 2006 UOMO 47
Agregace & Kompozice = vztah, který spojuje objekt představující celek s objektem části vzniká použitím různých úrovní abstrakce resp. detailnosti pohledu silná agregace (kompozice) celek má exklusivní vztah s objekty reprezentující části vztah kompozice je použit u třídy a jejích atributů rozlišení agregace kompozice má dopad v programování (při vytváření nebo destrukci objektu, při využívání služeb částí objektu) 2006 UOMO 48
Agregace vs. Kompozice Aspekt další označení vztah k celku Agregace silná asociace, slabá agregace, sdílená agregace sdílený Kompozice silná agregace, composite aggregation exkluzivní (vlastnění) přítomnost části pro fungování celku životnost části zodpovědnost za tvorbu a destrukci části delegování zpráv příklad žádoucí / volitelná nezávisí (vyskytuje se i nezávisle) není řečeno část přijímá zprávy Firma - Osoby (Zaměstnanci) nutná / nezbytná závisí (samostatně nemůže existovat) celek zprávy přijímá celek a deleguje části Člověk - Orgány 2006 UOMO 49
Zasílání zpráv Objekty spolu komunikují pomocí mechanismu zasílání zpráv Pro zaslání zprávy musí být objekty v určitém vztahu tj. musí existovat spojení nebo závislost (dependency) Zaslání zprávy iniciuje u přijímacího (cílového) objektu určitou operaci Mechanismu zasílání zpráv se v programování říká volání metod 2006 UOMO 50
Polymorfismus = (více) mnohotvarost Reakce na stejnou zprávu se u různých objektů liší. Ten kdo zprávu zasílá neví, jak bude provedena -> odstínění od vlastní implementace dané zprávy. 2006 UOMO 51
Postupy dekompozice Směry abstrakce: objekty <-> třída klasifikace/instanciace celek <-> části agregace/dekompozice specifický <-> obecný generalizace/specializace jedinec <-> skupina seskupování/individualizace 2006 UOMO 52