UML diagram tříd - hledání analytických tříd, relací, atributů. Martin Komárek

Podobné dokumenty
Principy UML. Clear View Training 2005 v2.2 1

OOT Objektově orientované technologie

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

7.5 Diagram tříd pokročilé techniky

Tvorba informačních systémů

7.5 Diagram tříd pokročilé techniky

1. Dědičnost a polymorfismus

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

Tvorba informačních systémů

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.3 Diagramy tříd - základy

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.

Třída. Atributy. Operace

7.3 Diagramy tříd - základy

Diagramy tříd - základy

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

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

PV167 Projekt z obj. návrhu IS. 26. března 2008

3 druhy UML diagramů

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

Objektově orientované technologie. Daniela Szturcová

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

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

Ú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

Objekty, třídy, vazby 2006 UOMO 30

typová konverze typová inference

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

Výčtový typ strana 67

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

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

7 Jazyk UML (Unified Modeling Language)

20. Projekt Domácí mediotéka

Jazyk C# (seminář 3)

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

Seminář Java IV p.1/38

7 Jazyk UML (Unified Modeling Language)

Úvod do principů objektově orientovaného programování

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

Programování v Javě I. Leden 2008

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

Analýza. Pracovní postup Analýza

Generické programování

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

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

UML. Unified Modeling Language. Součásti UML

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

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

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

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

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.

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

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

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

Databázové systémy. Vztahy a relace. 3.přednáška

PŘETĚŽOVÁNÍ OPERÁTORŮ

ADT/ADS = abstraktní datové typy / struktury

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

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

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

Unifikovaný modelovací jazyk UML

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

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

Abstraktní datové typy: zásobník

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

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

8 Třídy, objekty, metody, předávání argumentů metod

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

Teoretické minimum z PJV

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

PREPROCESOR POKRAČOVÁNÍ

Analýza problémové domény

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

SEMESTRÁLNÍ PRÁCE. z předmětu KIV/DB1

DBS Konceptuální modelování

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

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

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

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

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

Dědění, polymorfismus

UJO Framework. revoluční architektura beans. verze

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

1. Programování proti rozhraní

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

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

Seminář Java II p.1/43

Kapitola 2: Entitně-vztahový model (Entity-Relationship model) Množiny entit (entitní množiny) Atributy

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

Diagram tříd (class diagram)

Úvod do databázových systémů

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

Stručný obsah. Část I Úvod do jazyka UML a metodiky Unified Process 25. Část II Požadavky 71. Část III Analýza 135.

RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D. Katedra softwarového inženýrství Matematicko-Fyzikální fakulta Univerzita Karlova v Praze

Kapitola 1. Administrativa & Jemný úvod do OOP 1.1. Organizační informace

EXTRAKT z mezinárodní normy

Základy objektové orientace I. Únor 2010

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

OOT Objektově orientované technologie

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Transkript:

UML diagram tříd - hledání analytických tříd, relací, atributů Martin Komárek

Třídy a Objekty Account třída accountnumber : String owner : String balance : double «instantiate» «instantiate» «instantiate» jimsaccount:account accountnumber : "801" owner : "Jim" balance : 300.00 fabsaccount:account accountnumber : "802" owner : "Fab" balance : 1000.00 ilasaccount:account accountnumber : "803" owner : "Ila" balance : 310.00 objekty Úvod do UML 2

Co jsou to třídy a objekty? Každý objekt je instancí třídy Třídy umožňují modelovat množinu objektů se stejnými vlastnostmi Třída představuje šablonu na objekty: Třída určuje strukturu objektu (množinu jeho vlastností) Všechny objekty mají stejné atributy stejnou množinu operací obecně různé hodnoty atributů Představujte si třídy jako: Razítka Formičky na cukroví třída objekt Úvod do UML 3

Zobecnění Klasifikátor a instance Klasifikátor je abstrakce, instance je konkrétní projev této abstrakce Nejběžnější forma třída/objekt Obecně instance mají stejnou notaci jako třídy, ale jméno podtrženo BankAccount balance getbalance() «instantiate» myaccount:bankaccount balance = 100.0 Úvod do UML 4

Cvičení najděte třídy? Úvod do UML 5

Proč vůbec v analýze modelovat třídy/entity? Evidence business entit Definice entit se kterými řešení bude pracovat. Definice atributů entit. Evidence vztahů business entit

UML notace třídy Název třídy atribut1: typ atributu atribut2: typ atributu atribut3: typ atributu atribut4: typ atributu Osoba jméno: text příjmení: text datum narození : datum věk: číslo email: email Pojmenovávejte podstatnými jmény Nepoužívejte zkratky

Syntaxe asociace Asociace = vztah tříd. význam asociace Firma zaměstnává 1 násobnost 0..* Osoba Firma 1 zaměstnavatel role zaměstnanec 0..* Osoba

Násobnost = Multiplicita = Kardinalita vazby Firma může zaměstnávat mnoho osob, ale nemusí žádnou. Firma zaměstnavatel zaměstnanec 1 0..* Každá osoba pracuje právě v jedné firmě. Osoba Význam násobnosti: minimum..maximum 0..1 nula nebo 1 1 právě 1 0..* nula či více * nula či více 1..* 1 či více 1..6 1 až 6

Třídy pouze jako slovníček pojmů Parcela Objekt rozloha čísloparcely typobjektu Kolonie název čísloúčtu

Třídy doplněné o vazby Parcela rozloha čísloparcely 1 Může mít 0..1 Objekt typobjektu 0..* Se skládá z 1 Kolonie název čísloúčtu

Cvičení Co diagram zachycuje? Osoba majitel 1 1..* disponent 0..* 0..* Bankovní účet

Cvičení 1 Namodelujte filesystem. Zde jsou potřebné údaje: Základní stavební jednotka je file Files jsou v directories Directories mohou obsahovat další directories Úvod do UML 13

Cvičení 2 Namodelujte síť adresářů. Úvod do UML 14

Cvičení 3 Namodelujte síť měst spojených různě dlouhými cestami, které mohou být i jednosměrné. Úvod do UML 15

Cvičení 4 Namodelujte matriku. Konkrétně vztahy rodičů (otec a matka) a dětí. Úvod do UML 16

Cvičení Namodelujte vztahy vodoměrů a jejich odečtů Vodoměry jsou instalovány ve stromové struktuře, aby bylo možné zjistit případné úniky v jednotlivých větvích. Každý vodoměr tedy může mít několik podružných vodoměrů. A podružný vodoměr opět může mít několik podružných vodoměrů. Na každém vodoměru pravidelné probíhá odečet jeho stavu k určitému dni.

Detailní notace UML třídy jméno třídy tagged value oddíl jména oddíl atributů viditelnost oddíl operací Window {author = Jim, status = tested} +size : Area=(100,100) #visibility : Boolean = false +defaultsize: Rectangle #maximumsize : Rectangle -xptr : XWindow* +create() +hide() +display( location : Point ) -attachxwindow( xwin : XWindow*) počáteční hodnoty třídní (statické) operace Třídy pojmenované UpperCamelCase Pojmenovávejte jména podst. jmény Nepoužívejte zkratky Úvod do UML 18

Oddíl atributů +size : Area=(100,100) - address : String [3] visibility name : type multiplicity = initialvalue Vše kromě jména je volitelné initialvalue je hodnota, kterou atribut dostane při instanciaci Atributy pojmenované lowercamelcase pojmenovávejte atributy podstatnými jmény nepoužívejte zkratky Atribut může mít stereotyp Úvod do UML 19

Viditelnost Symbol Jméno Kdo má přístup + public Každý - private Pouze operace uvnitř třídy # protected Pouze operace uvnitř třídy nebo potomci třídy ~ package Každý ze stejného balíčku či podbalíčku uvnitř třídy Úvod do UML 20

Násobnost (Multiplicita) Umožňuje modelovat kolekce věcí PersonDetails -name : String [2..*] -address : String [3] -emailaddress : String [0..1] name se skládá z či více Stringů address skládá právě ze 3 Stringů emailaddress je 1 String nebo není nastavena( null) multiplicita Úvod do UML 21

Oddíl operací +display( location : Point ) visibility name( direction parametername: parametertype = default, ) : returntype seznam parametrů Operace pojmenovány lowercamelcase Nepoužívat zkratky a speciální symboly Operace pojmenovány slovesem či slov. frází Operace může mít více návratových typů může vracet více objektů Operace může mít: stereotyp jako prefix seznam tagged values jako postfix může být více tupů oddělených čárkou - r1, r2, rn Úvod do UML 22

Druhy parametrů druh parametru in out význam vstup do operace operace nemění jeho hodnotu je do něj uložen výstup operace inout return slouží jako vstup operace ho může změnit návratová hodnota operace maxmin( in a: int, in b:int, return maxvalue:int, return minvalue:int ) maxmin( in a: int, in b:int ):int,int Úvod do UML 23

Reflexivní asociace subdirectory 0..* Directory 1 0..* File 0..1 parent reflexivní asociace C autoexec config Windows My Documents Corel To John Command directories Úvod do UML files 24

Průchodnost Průchodnost vyjadřuje jakým směrem lze posílat zprávy Jaký objekt má odkaz na který zdroj Objekt Order obsahuje seznam Products Průchodný Order * * Product cíl průchodnost Neprůchodný Objekt Product neobsahuje seznam Orders A A A A B B B B z A do B je průchodné z B do A je průchodné z A do B je průchodné z B do A je neprůchodné z A do B je průchodné z B do A je nedefinováno z A do B je nedefinováno z B do A je nedefinováno Úvod do UML 25

Průchodnost - zásady 3 možné způsoby: Znázorňuj průchodnost explicitně všude Neznázorňuj průchodnost nikde Neznázorňuj křížky obousměrné mají 2 šipky jednosměrné mají 1 šipku standard A B z A do B je průchodné z B do A je neprůchodné A B z A do B je průchodné z B do A je průchodné Úvod do UML 26

Asociace vs Atributy House address 1 1 Address = House address:address atribut Jednosměrná asociace s rolí může být nahrazena atributem, vyjadřuje to samé. Kdy použít asociaci: Cílová třída je důležitá pro model Cílová třída je nestandardní Kdy použít atribut: Cílová třída je standardní nebo primitivní typ Úvod do UML 27

Asociační třídy Company * employment * Person Každá osoba může pracovat pro více společností. Každá společnost může zaměstnávat více osob. Pokud je osoba zaměstnána společností, kam umístíme plat? Úvod do UML 28

Syntaxe asociační třídy Company * * Person asociační třída Contract salary:double Úvod do UML 29

Možnost alternativy Company * * Person Contract salary:double Company 1 Contract * * 1 salary:double Person Úvod do UML 30

Agregace a kompozice A B agregace kompozice A B A B asociaci možno ještě upřesnit nutno zvážit přínosy upřesnění v analýze doporučuji nepoužívat Úvod do UML 31

Agregace a kompozice Agregace Kompozice slabá vazba počítačová sestava a její části silná vazba strom a jeho listy Úvod do UML 32

Agregace typ vztahu celek-část Počítačová sestava celek 0..3 0..* agregace Komponenty část Celek a část nejsou na sobě existenčně závislé Části mohou být sdíleny více celky Úvod do UML 33

Kompozice Ruka složenina silnější forma agregace vždy 0..1 nebo 1 1 1..5 kompozice Prst část Části nejsou sdílené Celek je zodpovědný za konstrukci a destrukci částí V momentě zániku celku zanikají i jeho části Kaskádový DELETE v SQL Př.: Dům-Patra-Místnosti, Faktura-Položky faktury, Úvod do UML 34

<<enumeration>> Stereotyp pro výčtovou třídu.

UML Syntaxe Objektu object identifier (must be underlined) oddíl jména oddíl atributů jimsaccount : Account accountnumber : String = "1234567" owner : String = "Jim Arlow" balance : double = 300.00 jméno atributu jméno objektu typ atributu jméno třídy hodnota atributu jméno objektu a třídy pouze jméno objektu pouze jméno třídy varianty (neuvedeme oddíl atributů) jimsaccount : Account jimsaccount : Account anonymní objekt Všechny objekty dané třídy mají stejnou množinu operací nezobrazují se u objektů ale u tříd). Typy atributů pro přehlednost obvykle vynechány Konvence pojmenování: objekty a atributy lowercamelcase jméno třídy UpperCamelCase Úvod do UML 36

Spojení - Diagram objektů BookClub ila:person bookclub:club erica:person objekt spojení naomi:person Úvod do UML 37

specializace Generalizace třídy Vztah mezi obecným a více specifickým elementem více obecný element Shape rodič nadtřída předek generalizace je druhu Square Circle Triangle více specifické elementy potomek podtřída následník Hierarchie generalizace Úvod do UML 38

Dědění Podtřída dědí všechny vlastnosti nadtřídy: atributy operace vztahy (stereotypy, tagy, omezení) Podřída může přidávat nové vlastnosti (atributy, operace, ) Podtřída může změnit implementaci operací Úvod do UML 39

Překrývání Shape draw( g : Graphics ) getarea() : int getboundingarea() : int Square Circle draw( g : Graphics ) draw( g : Graphics ) width x height getarea() : int getarea() : int p x radius 2 Podtřída často potřebuje změnit chování definované v předkovi Úvod do UML 40

Abstraktní operace abstraktní prvky italikou abstraktní třída Shape draw( g : Graphics ) getarea() : int getboundingarea() : int abstraktní operace konkrétní operace konkrétní třída Square draw( g : Graphics ) getarea() : int Circle draw( g : Graphics ) getarea() : int Abstraktní operace signatura bez implementace Třída abstraktní pokud má nějaké abstraktní operace Od abstraktní třídy není možné vytvořit instanci Potomek abstraktní třídy také abstraktní pokud neimplementuje abstraktní operace Úvod do UML 41

Rozhraní (Interface) Speciální druh (abstraktní) třídy Specifikuje pojmenovanou množinu vlastností Účel oddělení specifikace funkčnosti od implementace Rozhraní definuje kontrakt, který musí implementující klasifikátory realizovat Úvod do UML 42

Rozhraní (Interface) cd «interface» Comparable + compareto(object) : int TimeStamp - minutes: int - hours: int + compareto(object) : int + gettimedif(object) : int «realize» «interface» WeightComparable + getweightdif(object) : int «interface» TimeComparable + gettimedif(object) : int BackUp + BackUp(TimeComparable) + run() : void Úvod do UML 43

Syntaxe poskytovaného rozh. Poskytované rozhraní klasifikátor ho implementuje «interface» Borrow borrow() return() isoverdue() rozhraní realizuje Borrow Book CD Book CD Class style notace Lollipop style notace Úvod do UML 44

Syntaxe požadovaného rozh. Požadované rozhraní klasifikátor používá metody předepsané rozhraním class style notace lollipop style notace Library Library Library «interface» Borrow Borrow Borrow požadované rozhraní Úvod do UML 45

Konektor sestavení Poskytované a požadované rozhraní je možné spojit konektorem sestavení. Library konektor sestavení Borrow Book CD Úvod do UML 46

Opakování - vztahy relationship UML syntaxe sémantika stručně závislost Zdrojový element závisí na cílovém. asociace Vazba mezi objekty. agregace Cílový element je částí zdrojového kompozice Silnější forma agregace. generalizace realizace Zdrojový element je specializací cílového. Zdrojový element zaručuje splnění kontraktu předepsaného cílovým element. Úvod do UML 47

Úvod do UML stavových diagramů Cactoo Software s.r.o. www.cactoosoftware.com

Stavové diagramy Slouží k modelování životního cyklu entit Základní artefakty digramu: Začátek Konec (nemusí mít vždy) Stavy Přechody Stav 1 Událost [Podmínka] / Akce Trigger [Guard] / Effect Stav 2 49

Jaký stav chybí? Jaký stav špatně pojmenován/znázorněn? stm Úřední stav y živ ota - nedokonalé narození Sv obodný svatba [věk>16] /výměna dokladů Ženatý smrt smrt rozvod svatba smrt Rozv edený Final 50

Lepší řešení stm Úřední stav y živ ota - lepší řešení narození Sv obodný svatba [věk>16] /výměna dokladů Ženatý smrt partnerky svatba smrt Vdov ec rozvod svatba smrt Zemřelý smrt Rozv edený 51

Je možné nějak zjednodušit? stm Úřední stav y živ ota - lepší řešení narození Sv obodný svatba [věk>16] /výměna dokladů Ženatý smrt partnerky svatba smrt Vdov ec rozvod svatba smrt Zemřelý smrt Rozv edený 52

Nadstav stm Úřední stav y živ ota - v yužití nadstav u narození Sv obodný Živ ý svatba [věk>16] /výměna dokladů Ženatý smrt partnerky rozvod svatba svatba Vdov ec Rozv edený smrt Zemřelý 53

Entry a Exit Pointy stm Úřední stav y živ ota - entry a exit pointy Živ ý narození Sv obodný Ženatý narození svatba [věk>16] /výměna dokladů imigrace smrt partnerky svatba svatba imigrace Vdov ec rozvod Rozv edený Entry point ExitPoint smrt Pouze jako ukázka Exit pointu - v digramu nemá význam Zemřelý 54

Příklad stavového diagramu Pro níže uvedený příklad namodelujte stavový diagram trezoru. V domě jsou uchovávány cennosti v trezoru schovaném za obrazem. Pro odkrytí trezoru je nutné stisknout skryté tlačítko. Obraz se odsune ale jen v případě, že je otevřené okno a zároveň zavřené dveře. Následně se trezor: a) otevře vložením (a pootočením) klíče, ale jen za podmínky, že bylo mezitím zavřeno okno. Otevřený trezor se automaticky zavře a skryje za obraz po vytažení klíče ze zámku. b) skryje zpět za obraz, pokud vložím klíč, ale okno zůstalo otevřeno. Současně se zablokují zámky místnosti a je spuštěn alarm 55