6 Objektově-orientovaný vývoj programového vybavení

Podobné dokumenty
8 Přehled OO metodik (metod, metodologií)

8 Přehled OO metodik (metod, metodologií)

7.5 Diagram tříd pokročilé techniky

Objekty, třídy, vazby 2006 UOMO 30

7.5 Diagram tříd pokročilé techniky

7 Jazyk UML (Unified Modeling Language)

7 Jazyk UML (Unified Modeling Language)

7.3 Diagramy tříd - základy

UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

Základy objektové orientace I. Únor 2010

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

Principy UML. Clear View Training 2005 v2.2 1

Objektově orientovaný přístup

Modelování řízené případy užití

Tvorba informačních systémů

7.3 Diagramy tříd - základy

1. Dědičnost a polymorfismus

Diagramy tříd - základy

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Klasické metodiky softwarového inženýrství I N G M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

PB161 Programování v jazyce C++ Přednáška 7

Objektově orientované databáze. Miroslav Beneš

PB161 Programování v jazyce C++ Přednáška 7

Návrh IS - UML. Jaroslav Žáček

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

UML. Unified Modeling Language. Součásti UML

Návrh IS - UML. Jaroslav Žáček

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

Vyřešené teoretické otázky do OOP ( )

Analýza a modelování dat. Helena Palovská

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Modelování IS Strukturovaný a objektově orientovaný přístup (UML)

Jazyk UML - přehled. diagram hierarchie procesů. IS firmy. podpora řízení. evidence zaměstnanců. pokladny. výroba. diagram procesních vláken

Analýza a modelování dat. Přednáška 4

Tvorba informačních systémů

Communist Party of Nepal (Unified Marxist-Leninist) Unified Modeling Language University of Massachusetts Lowell User-mode Linux.

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika

Objektově orientované technologie Logická struktura systému Objektový diagram. Pavel Děrgel, Daniela Szturcová

11 Návrh programového vybavení

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

10 Balíčky, grafické znázornění tříd, základy zapozdření

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

7.6 Další diagramy UML

Konceptuální datové modely používané při analýze

TÉMATICKÝ OKRUH Softwarové inženýrství

UML - Unified Modeling Language

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19

Metody popisu systému, základy UML

7.6 Další diagramy UML

Unifikovaný modelovací jazyk UML

Softwarové komponenty a Internet

Modelování procesů s využitím MS Visio.

DBS Konceptuální modelování

Objektové programování

UML úvod. Zdroje: Kanisová Hana, Müller Miroslav: UML srozumitelně, Computer Press 2007

7.2 Model použití (jednání) (Use Case)

10 Metody a metodologie strukturované analýzy

Objektově orientované technologie Diagram komponent Implementační náhled (Diagram rozmístění) Pavel Děrgel, Daniela Szturcová

Úvod do softwarového inženýrství IUS 2009/2010 p.1/42

Programovací techniky

Univerzita Pardubice Fakulta ekonomicko-správní Ústav systémového inženýrství a informatiky

OOT Objektově orientované technologie

Návrhové vzory OMO, LS 2014/2015

Nepravidlové a hybridní znalostní systémy

Návrh softwarových systémů - architektura softwarových systémů

2 Životní cyklus programového díla

Usage of modular scissors in the implementation of FEM

TÉMATICKÝ OKRUH Softwarové inženýrství

ZÁSADY KONCEPTUÁLNÍHO TOTÁLNĚ OBJEKTOVĚ ORIENTOVANÉHO MODELOVÁNÍ

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

7.4 Diagramy interakce (základy)

7.4 Diagramy interakce (základy)

Smysl metodiky IS/IT. Koncentrovaná zkušenost Checklist na nic nezapomeneme

5 Požadavky a jejich specifikace

Dolování v objektových datech. Ivana Rudolfová

Diagram nebo text? Miroslav Benešovský, BenSoft s.r.o

Diagram tříd (class diagram)

2. přednáška z předmětu GIS1 Data a datové modely

Geografické informační systémy p. 1

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Programování v C++ 1, 6. cvičení

2 Konceptuální modelování a návrh databáze

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Analytická specifikace a její zpracování

Obsah. Zpracoval:

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

TÉMATICKÝ OKRUH Softwarové inženýrství

Programování II. Polymorfismus

Analýza a Návrh. Analýza

Architektury Informačních systémů. Jaroslav Žáček

OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů Standardně zavedené proudy

EXTRAKT z mezinárodní normy

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

Objektově orientované technologie. Daniela Szturcová

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Databázové patterny. RNDr. Ondřej Zýka

Obsah. October 2, Polymorfizmus. Typologie testování. Problém polymorfizmu. Vady/Anomálie. Vazební sekvence ČVUT FEL, K13132

7.2 Model použití (jednání) (Use Case)

POPIS STANDARDU CEN TC278/WG 02

Transkript:

6 Objektově-orientovaný vývoj programového vybavení 6.1 Co značí objektově-orientovaný - organizace SW jako kolekce diskrétních objektů, které zahrnují jak data tak chování objekt: OMG: Objekt je věc (thing). Je vytvořen jako instance objektového typu. Každý objekt má jednoznačnou identitu, která je odlišná a nezávislá na jiných jeho vlastnostech. Každý objekt nabízí jednu nebo více operací. Firesmith: Objekt je definován jako SW abstrakce, která modeluje všechny relevantní aspekty skutečné nebo konceptuální entity nebo věci z aplikační domény nebo prostoru řešení. Objekt je jedna z hlavních SW entit v OO aplikaci, typicky odpovídá SW modulu, obsahuje množinu typů atributů, atributů, zpráv, výjimek, operací a nepovinných vložených objektů. J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 1 Code/Yourdon: Objekt je abstrakce něčeho v doméně problému, odrážející schopnosti systému uchovávat informaci o něm, interagovat s ním nebo obojí, zapouzdření hodnot atributů a výlučných služeb. Martin/Odell: Objekt je libovolná věc, reálná nebo abstraktní, o níž ukládáme data a metody, které s nimi manipulují. Jacobson: Objekt je charakterizován řadou operací a stavem, který pamatuje efekt těchto operací. Rumbaugh: Koncept, abstrakce nebo věc s jasným rozhraním a významem pro daný problém. - společné rysy: reálná věc (koncový uživatel) nebo abstrakce (reprezentace - programátor) objekt reálného světa může být konkrétní nebo abstraktní (konceptuální) každý objekt je jednoznačně identifikovatelný zahrnuje data a operace s nimi J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 2

6.2 Základní vlastnosti objektové orientace abstrakce - zaměření se na podstatné rysy, klasifikace objektů do tříd (objektových typů). Třída - abstrakce popisující vlastnosti důležité pro aplikaci a ignorující zbytek. Objekt je instance třídy. Př) Osoba, Okno, Grafi zapouzdření (encapsulation)- ukrývání informace (information hiding), oddělení externích aspektů od interních detailů (implementace). Praktický důsledek: data objektu a funkce, které s nimi operují, tvoří celek s dobře definovaným rozhraním. Vlastnosti třídy: atributy, operace (implementace se nazývá metoda). - chceme-li objekt použít, musíme pouze znát jeho rozhraní - třídu lze chápat jako šablonu pro tvorbu objektů daného typu (objekty téže třídy mají stejnou strukturu a definici operací) - atributy objektů, vlastní atributy třídy (jako celku) - operace objektů, vlastní operace třídy (jako celku) J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 3 W2 Okno jméno umístění velikost textu pozadí elementy vytvoř() zruš() nový prvek() pozadi?() text?() :Okno 150, 50 500, 300 ČERNÁ BÍLÁ P1, P3 W2:Okno W2 150, 350 480, 280 MODRÁ BÍLÁ P2, P4 P1: Geometri 120, 120 ČERNÁ P2: Geometri 250, 500 ZELENÁ P3: Geometri 130, 140 ŽLUTÁ P4: Geometri Geometrický element umístění vytvoř() zruš()?() 600, 120 ČERNÁ - struktura objektu je dána třídou, stav provedenými operacemi J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 4

- mezi objekty tříd existují vztahy: a) statické (asociace, generalizace/specializace, agregace) Student kredity () * navštěvuje * Předmět registruj (S) b) dynamické (zprávy) P1. P1 dědičnost - sdílení atributů (definic ne hodnot) a operací třídami J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 5 Grafický element Bod Úsečka Polygon značka konc.bod počet vrcholů vrcholy Bod značka Úsečka konc.bod Grafi Polygon počet vrcholů vrcholy Bod Úsečka Polygon J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 6

Nadtřída Podtřída dědí všechny vlastnosti nadtřídy. Podtřída - různé úrovně abstrakce hierarchie dědičnosti - třídy abstraktní a konkrétní - důvody použití dědičnosti: opakované použití (úspora, údržba, testování) a) vytváření abstraktních tříd AB ABC ABD C D b) využití knihoven tříd ABC AB AB C vytváření podtypů (specializace) X X a Y mají kompatibilní chování, lze-li použít všude Y místo X, tj. Y jen přidává vlastnosti. Y J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 7 zpřesnění Osoba věk: 0..150 Dospělá věk: 18..150 konceptuální ve fázi konceptuálního modelování během analýzy - vztahy generalizace/specializace (ISA) - vytvoření dobré hierarchie dědičnosti je jedním z klíčových problémů OO návrhu a) vytvoření třídy bez dědění A b) nalezení vhodného předchůdce ABF c) restrukturalizace hierarchie? BC d) redefinice vlastností D E - pojmy redefinice a přetěžování J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 8

- Která varianta nejlepší? další modifikace co chceme modelovat srozumitelnost, jasné pochopení cena restrukturalizace - dědičnost jednoduchá, vícenásobná A B AE? C - problémy: Př) ABC A E EFG BC FG AC? BC C++: obě vlastnosti J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 9 A redefinice A : : :? C++: vlastnost A dvakrát nebo použití tzv. virtuální bázové třídy polymorfismus - různé chování téže operace pro různé třídy (projev). Př) operace - jiný pohled (komunikace objektů): vysílající objekt nemusí znát třídu adresáta (podstata). P1. třída? P3. P1 Úsečka d P3 Polygon J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 10

- polymorfismus neomezený/omezený (hierarchií dědičnosti) - virtuální metody, pozdní (dynamická) vazba abstrakce + zapouzdření object-based (ADT), + dědičnost, polymorfismus object-oriented další důležité pojmy: - agregace - významný statický vztah mezi objekty (PART OF) - souběžnost (concurrency) - důležitým aspektem OO vývoje je určit, které objekty jsou/mají být současně aktivní. - perzistence - objekt může být přechodný nebo perzistentní - viditelnost - vlastnosti veřejné nebo privátní, důležitý aspekt návrhu a implementace. důvody použití OO technologie při vývoji programů: - růst produktivity - až 10x (aplikace s GUI), OO technologie dává předpoklady, nutnost připravenosti organizace - rychlejší vývoj aplikací - kvalita, udržovatelnost - jednotný konceptuální rámec (třídy, objekty, ), méně chyb díky opakovanému použití, zapouzdření, lepší podmínky pro údržbu J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 11 6.3 Objektově-orientované techniky modelování - představují reprezentaci určitého pohledu na systém a) model objektové struktury - zahrnuje zpravidla: třídy domény problému a třídy pro implementaci, atributy a operace tříd, statické vztahy mezi třídami a objekty, - základní model - používán ve fázi analýzy i návrhu - důvody pro používání dalších modelů: zjišťování a pochopení požadavků, včetně dynamického chování, dokumentace v podobě srozumitelné zákazníkovi, dostatečně podrobná informace pro návrháře a programátora, zvládnutí vývoje rozsáhlých systémů - rozdělení na menší jednotky. J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 12

c) modely chování systému - modely požadované funkčnosti a použití systému (Use Case) a toků aktivit, - modely stavů systému a přechodů mezi stavy, c) modely interakce objektů - s okolím systému, - vnitřních objektů d) modely stavů objektů a přechodů mezi stavy e) modely rozčlenění systému na podsystémy J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 13 6.4 Objektově orientované metody a metodologie a) metody navazující na techniky strukturované analýzy a návrhu (Rumbaugh - OMT, Coad/Yourdon - OOA/OOD, Martin/Odell - OOIE, Booch) b) metody založené na nových technikách modelování (Jacobson - OOSE (Use Case), Wirfs-Brock - RDD (Responsibility Driven Approach) ) c) metody druhé generace - využití perspektivních rysů obou předchozích ( Fusion, Mainstream Objects) d) metody třetí generace - snaha o standardizaci (modelovací jazyk UML (Unified Modeling Language) ) J. Zendulka: Projektování programových systémů - 6 Objektově-orientovaný vývoj programového vybavení 14