====== N-AP04 ====== ====== Zadání ====== Objektově-orientovaná analýza požadavků, vlastnosti objektů, principy abstrakce a dekompozice. Vývoj OO metod, historie a kritika. ====== Vypracování ====== ===== Objektově-orientovaná analýza požadavků ===== http://labe.felk.cvut.cz/vyuka/X33PTE/PTE-10.pdf **Objekty a třídy** Analýza je založena na principech objektového programování. Jak už název napovídá vystupují v něm objekty, což jsou instance tříd objektů. Např. já jsem instancí třídy osoba. Třídy jsou obecnou kategorií objektů, které mají stejné vlastnosti a mohou provádět stejné operace. Objekty mají strukturu, která se skládá z: * Vlastností (atributů) – (váha osoby, výška osoby) * Chování – operací, metod, které objekt může provádět (osoba může jíst, číst, psát, ...) **Asociace tříd** Asociace označuje stav, kdy nějaká třída má vztah s jinou třídou. **Asociace - Agregace** * Speciální případ pro vztah celek-část. * Součásti agregace mohou fungovat nezávisle na sobě. * Symbol prázdného diamantu * Tranzitivní - pokud je pist součástí motoru a motor součástí auta, pak je i pist součástí auta * Asymetrická - pokud je motor součástí auta, pak auto není součástí motoru * Sémantika: totéž co asociace, pouze zdůrazňuje vztah celek-část, součásti mohou existovat nezávisle na celku, součást může být sdílena více celky **Asociace - Kompozice** * Silnější forma agregace. * Opět je tranzitivní a asymetrická. * Části nemají mimo celek smysl. * symbol plného diamantu * Sémantika: na úrovni instancí (objektů) části neexistují vně celku. Každá část patří pouze do jednoho celku, části nelze sdílet. Je-li celek zničen, musí zničit i svoje součásti. Z objektového programování se přenáší následující principy: **Abstrakce** * Znamená filtrování reálných objektů tak, že zbudou jen ty vlastnosti z reálného světa, které jsou pro budování informačního systému potřeba. **Dědičnost** * Objekty dědí atributy a operace po své třídě nebo třída dědí po jiné třídě. **Polymorfismus** * Operace může mít v různých třídách objektů stejné jméno, ale každá třída objektů bude operaci provádět jinak. **Zapouzdření** * Objekty skrývají provádění svých operací před ostatními objekty a před okolním světem. Objekt má pro komunikaci s okolním světem rozhraní, pomocí kterého je okolní svět může přimět k vyvolání nějaké činnosti a zbytek operací ukrývá. **Komunikace mezi objekty (předávání zpráv)** * Objekty mezi sebou komunikují – zasílají si zprávy. Zasílání zpráv je v podstatě vždy žádost o provedení operací. ===== Vlastnosti objektů ===== Objekty kombinují data a funkce do podoby uzavřené, soudržné jednotky. Objekty ukrývají data za vrstvou funkcí (operací) - data jsou přístupná pouze skrze operace. Každý objekt má: * **Jednoznačnou identitu** - odlišení objektů od ostatních (stejných) objektů. Každý objekt má unikátní výskyt v prostoru a v čase. Každý objekt je jednoznačně identifikovatelný. Identita je určena: hodnotami atributů, adresou v paměti, ... * **Stav** - hodnoty atributů uchovávají data objektů. Data objektů definují jeho stav. Stav je určen hodnotami atributů a vazbami/vztahy na ostatní objekty v daném časovém okamžiku. * **Chování** - operace, které je možné s objektem provádět. Operace často mění stav a často závisí na aktuálním stavu (na aktuálních datech). Chování vyjadřuje jak objekt koná a reaguje. Chování je specifikováno operacemi. Každá operace tedy definuje část chování objektu. Chování se může měnit v závislosti na stavu (např chováni tiskárny při stavu DošlaNáplň). Vyvolání operace může vést ke změně stavu. Implementace operace se nazývá metoda. ====== Principy abstrakce a dekompozice ====== ===== Dekompozice ===== * Dekompozice pomáhá systémovému analytikovi a dalším členům řešitelského týmu rozložit systém na menší, lépe zvládnutelné a srozumitelnější subsystémy. * Zajišťuje soustředění pozornosti na jednu oblast (subsystém) v daném čase bez interference od ostatních částí. * Umožňuje, aby se pozornost soustředila na tu část systému, která je zajímavá pro určité publikum, aniž by byli posluchači mateni pro ně nepodstatnými detaily. * Umožňuje postavit různé části systému v nezávislých časech a různými lidmi. ===== Abstrakce ===== Abstrakce spočívá v zjednodušení objektu z reálného světa tak, aby vyhovoval potřebám modelu informačního systému. Během procesu abstarkce se objektu ponechají pouze ty metody a atributy, které jsou pro informační systém podstatné. ====== Vývoj OO metod, historie a kritika ====== * UML patří mezi modelovací techniky, která se snaží kombinovat různé přístupy z různých oblastí např. ERD ze strukturované analýzy, toky práce z procesního řízení atd. UML poskytuje sadu nástrojů pro vytváření modelů, ale nedefinuje jak tyto modely použít (metodika např. RUP – Rational Unified Process). * UML se vyvíjí od druhé poloviny 90. let (Booch, Jacobson, Rumbaugh, Gamma) hlavně z use-case, ale také nejrůznějších dalších technik. * UML je pro začátečníka příliš komplexní a rozsáhlý, pokud se snaží používat všechny diagramy. * UML také neřeší mapování objektového modelu na relační. * UML také nemá syntax pro návrhové vzory.