7.5 Diagram tříd pokročilé techniky

Podobné dokumenty
7.5 Diagram tříd pokročilé techniky

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy

Diagramy tříd - základy

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

7.6 Další diagramy UML

7 Jazyk UML (Unified Modeling Language)

7.6 Další diagramy UML

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

7 Jazyk UML (Unified Modeling Language)

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

1. Dědičnost a polymorfismus

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Základy objektové orientace I. Únor 2010

Třída. Atributy. Operace

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

Unifikovaný modelovací jazyk UML

UML. Unified Modeling Language. Součásti UML

Tvorba informačních systémů

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

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

typová konverze typová inference

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Principy UML. Clear View Training 2005 v2.2 1

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

Objekty, třídy, vazby 2006 UOMO 30

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

3 druhy UML diagramů

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

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

OOT Objektově orientované technologie

KTE / ZPE Informační technologie

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

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

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

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics

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

1. Programování proti rozhraní

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

DBS Konceptuální modelování

Úvod do programovacích jazyků (Java)

Ruční návrh Připravíme si odpovědi na základní otázky Co chceme řešit (projektovat) a proč Komu to bude sloužit Jaký užitek z toho bude mít uživatel I

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

Dědění, polymorfismus

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

DATOVÉ MODELOVÁNÍ ER MODEL

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

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

Programování v Javě I. Leden 2008

Objektově orientovaný přístup

Výčtový typ strana 67

7.4 Diagramy interakce (základy)

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

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

State. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu

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í.

Programování v Javě I. Únor 2009

7.4 Diagramy interakce (základy)

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

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

Tvorba informačních systémů

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

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Programování v C++ 2, 4. cvičení

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

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

11 Návrh programového vybavení

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

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

Vytváření a použití knihoven tříd

UML: Unified Modeling Language

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

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

Modelem řízený vývoj. SWI 1 Jan Kryštof

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

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

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

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

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

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

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

Unifikovaný modelovací jazyk UML 1

Programování II. Návrh programu I 2018/19

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

Alena Malovaná, MAL305

ADT/ADS = abstraktní datové typy / struktury

Abstraktní datové typy: zásobník

IRAE 07/08 Přednáška č. 1

Jakub Čermák Microsoft Student Partner

Objektově orientované technologie. Daniela Szturcová

specifikuje vytvářené objekty pomocí prototypické instance nový objekt vytváří kopírováním prototypu

Transkript:

7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem rozhraní (interface) specifikuje pouze externě viditelné (veřejné) operace třídy nebo komponenty bez vlastní implementace, typicky specifikuje pouze omezenou část chování třídy nebo komponenty (např. Java, COM, CORBA) speciální druh třídy v UML <<Interface>> IUnknown ISpeling spellingwizard.dll IUnk nown J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) uživatelem definovaný stereotyp pro výjimku EventQueue <<exception>> Overflow add() remove() flush() - lze definovat vlastní symbol (ikonu) EventQueue add() rem ove() flush() Overflow - lze vytvářet stereotypy řady prvků diagramů, u diagramu tříd stereotypy třídy, asociace, generalizace, operace, - OMG využívá stereotypy k vytváření profilů (pro RT, CORBA IDL) J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 2

Objektový diagram - diagram tříd - schéma, vzor nebo šablona popisující obecně řadu možných objektů (instancí), představuje obecný případ - diagram instancí - popisuje konkrétní objekty a vztahy mezi nimi, představuje konkrétní příklad x : Přímka A : Průsečík Přímka 2.. 0.. prochází Průsečík y : Přímka B : Průsečík z : Přímka C : Průsečík Firma -adresa 0.. nadřízená Počítače : Organizace Hardware s.r.o : Organizace Software s.r.o : Organizace Organizace XSoft : NovákSW : fnový : Osob - lze uvádět jen jméno objektu nebo třídy - lze považovat za diagram spolupráce beze zpráv J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 3 Operace a atributy třídy (class scope) - statické členy v C++ a Java, proměnné a metody třídy ve Smalltalku Objednávka posledníčíslo číslo() dalšíčíslo() Objednávka $ posledníčíslo číslo() dalšíčíslo() Násobná a dynamická klasifikace jednoduchá (single) klasifikace násobná (multiple) Jednoduchá klasifikace objekt je jediného typu (s případnou generalizací) Násobná klasifikace objekt může být popsán několika typy, které nemusí být spojeny generalizací, tj. objekt může přímo patřit do více než jedné třídy J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 4

klasifikace statická (C++) dynamická (Smalltalk) Dynamická klasifikace v průběhu života může objekt měnit svůj typ v rámci struktury podtypů - užitečné při konceptuálním modelování, při specifikačním již nutno přihlížet k technice implementace Agregace a kompozice Agregace zvláštní druh asociace k modelování vztahu celek/část.. Fakulta Student Kompozice silnější varianta agregace, objekt část patří jen jednomu celku, typicky je rovněž existenční závislost. J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 5 Polygon {ordered} 3.. Bod Kruh Styl -barva -výplň -poloměr - implikuje rovněž, že objekt část je hodnotovým objektem - alternativní notace kompozice v UML viz další strana - vztah atribut - kompozice J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 6

Polygon Kruh {ordered} 3.. vrchol: Bod střed: Bod Styl Odvozené asociace a atributy - mohou být počítány z jiných asociací, resp. atributů - každý pohled přináší vlastní interpretaci odvozených vlastností - specifikační pohled: omezení mezi hodnotami, ne způsob výpočtu; neříká nic o implementaci J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 7 {stav = součet účetních položek} komponenty Účet /položky Účetní položka /stav: Money -částka: Money 0.. Sumární účet Detailní účet Interval začátek konec / trvání J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 8

Rozhraní a abstraktní třídy - možnost změny rozhraní tříd nezávislého na implementaci je jednou z předností OO vývoje Rozhraní pouze deklarace operací bez implementace (metod), implementaci poskytuje třída, která rozhraní zdědí. Klient třídy vidí pouze rozhraní. - programovací jazyky nabízí často jediný konstrukt třídu (rozhraní+implementace), děděním se dědí oboje; rozhraní se zde deklaruje pomocí abstraktních tříd Textový editor Závislost Okno +dopředu() +dozadu() Abstraktní třída Abstraktní operace Okno MS Windows +dopředu() +dozadu() Okno X +dozadu() +dopředu() Okno Mac +dopředu() +dozadu() J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 9 Notace pro abstraktní třídu: kurzíva nebo {abstract} - některé jazyky (např. Java) nabízí rozhraní jako konstrukt InputStream <<interface>> DataInput Vstup objednávky DataInputStream Realizace Závislost - jiná notace pro rozhraní a podtřídy abstraktních tříd: DataInput Vstup objednávky DataInputStream InputStream - rozdíl abstraktní třída x rozhraní J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 0

Referenční a hodnotové objekty - objekt má identitu Referenční objekty (reference objects) typicky jediný objekt v programu, reprezentující objekt reálného světa, odkaz prostřednictvím identity (Objednávka, Zákazník, ), porovnání pomocí identit. Hodnotové objekty (value objects) typicky řada objektů (kopií), reprezentujících tentýž objekt reálného světa (Integer, Datum, ), porovnání na základě hodnot. - v UML: atributy a kompozice pro hodnotové, asociace pro referenční (při konceptuálním modelování možno i pro hodnotové) Kvalifikovaná asociace Kvalifikátor atribut nebo seznam atributů asociace sloužící k rozčlenění množiny objektů spojených s daným objektem v rámci dané asociace. PoložkaObjednávky Objednávka řádek zboží : Zboží Kvalifikátor 0.. J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) - násobnost 0..,, Banka čísloúčtu : Integer vlastník.. 0.. Konceptuální pohled: ukazuje omezení. Specifikační pohled: rozhraní s vyhledáváním pomocí klíče. class Objednavka { public PolozkaObjednavky ctiradek(zbozi zbozipolozky); public void pridejradek(number pocet, Zbozi zbozipolozky); } Implementační pohled: použití asociativního pole, apod. class Objednavka { private Map polozkyobjednavky; } J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 2

Asociační třída - asociace s vlastnostmi třídy (atributy, operace, asociace, ) zaměstnavatel Firma 0.. Zaměstnání období - vyjádření pomocí plnohodnotné třídy: Asociační třída 0.. Zaměstnání -období Firma 0.. /zaměstnavatel - mezi dvěma participujícími objekty může být jen jedna asociační třída (stejně jako jedno spojení v rámci dané asociace) Firma s historií zaměstnání - často u historické informace J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 3 N nární asociace Zařízení Projekt Asociační třída Záznam -doba N-nární asociace - obecně nelze nahradit N-nární asociaci binárními beze ztráty informace Parametrizované třídy - podpora v některých jazycích (C++ - šablona (template)) - vhodné zejména pro práci s kolekcemi J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 4

class Mnozina <T> void vloz (T novyprvek); void odstran (T prvek); } Mnozina <> osoby; T Parametr Mnozina vloz(t) odstran(t) - použití šablony tzv. vázaný prvek (bound element) T Mnozina vloz(t) odstran(t) <<bind>> <> Osoby Hodnota parametru Množina <> J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 5 Viditelnost veřejná (+, public) - použitelná libovolnou jinou třídou vlastnost privátní (-, private) - použitelná jen vlastnickou třídou chráněná (#, protected) - použitelná třídou a následníky - rozdílný význam u různých jazyků: C++: public viditelná kdekoliv v programu private jen ve třídě, která vlastnost definuje protected - ve třídě, která vlastnost definuje, a následníky Zákazník <<instanceof>> Novák : Individuální zákazník Individuální zákazník Veselý : Individuální zákazník Smalltalk: všechny instanční proměnné (atributy) privátní (přístupné ale i následníkům) a operace veřejné Java: podobně jako C++ (přístup k členům jiných objektů téže třídy), navíc viditelnost package a význam protected rozšířen i na libovolné třídy téhož modulu (package) C++: navíc friend pro třídu nebo metodu J. Zendulka: Projektování programových systémů - 7 Jazyk UML (Unified Modeling Language) 6