Diagramy tříd - základy

Podobné dokumenty
7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy

7.5 Diagram tříd pokročilé techniky

7.5 Diagram tříd pokročilé techniky

OOT Objektově orientované technologie

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

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

Objektově orientované technologie. Daniela Szturcová

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

1. Dědičnost a polymorfismus

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

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

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

UML. Unified Modeling Language. Součásti UML

Třída. Atributy. Operace

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

3 druhy UML diagramů

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

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

Základy objektové orientace I. Únor 2010

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

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

DBS Konceptuální modelování

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

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

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

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.

7 Jazyk UML (Unified Modeling Language)

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

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

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

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

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/

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

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

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

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

Úvod do programovacích jazyků (Java)

7 Jazyk UML (Unified Modeling Language)

2. Konceptuální model dat, E-R konceptuální model

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

20. Projekt Domácí mediotéka

Úvod do programovacích jazyků (Java)

1. Programování proti rozhraní

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

Unifikovaný modelovací jazyk UML

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

Principy UML. Clear View Training 2005 v2.2 1

Výčtový typ strana 67

Dědění, polymorfismus

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

SW_02. Diagram případu užití Use Case Diagram

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

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

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

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

9 Strukturovaná analýza

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

DATOVÉ MODELOVÁNÍ ER MODEL

Funkční schéma Datové schéma Integrita modelu s realitou

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

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

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

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

7.4 Diagramy interakce (základy)

9 Strukturovaná analýza

7.4 Diagramy interakce (základy)

typová konverze typová inference

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

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

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

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

Tvorba informačních systémů

Objektově orientovaný přístup

Diagram výskytů a vztahů

Databázové systémy. Ing. Radek Holý

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.

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

Programování v Javě I. Leden 2008

Databázové modelování. Analýza Návrh konceptuálního schématu

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.

7.6 Další diagramy UML

Abstraktní datové typy: zásobník

Objektově orientované databáze. Miroslav Beneš

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

7.6 Další diagramy UML

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

Programovací techniky

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

zswi/p7-oo-analýza.d 31. března

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Databázové systémy. Přednáška 1

KTE / ZPE Informační technologie

PB161 Základy OOP. Tomáš Brukner

Objekty, třídy, vazby 2006 UOMO 30

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

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

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

Úvod do programování - Java. Cvičení č.4

Transkript:

Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka Zákazník -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý' then Objednávka.předplacena musí být 'true'} Generalizace Omezení -jméno -adresa +charakteristika(): String Agregace Atributy Operace Smluvní zákazník -jménokontaktu -charakteristika -limit +pošlinabídku() +pošliměsíčníúčet(integer) Individuální zákazník -číslokarty {charakteristika() vrací 'nejistý'} Jméno Položka objednávky -množství: Integer -cena: Money -uspokojena: Boolean Násobnost Asociace týká se Role objednané zboží 0.. prodejce Zaměstnanec Produkt Třída Tři pohledy na systém při použití diagramu tříd Konceptuální koncepty aplikační domény, bez vztahu k implementaci, jazykově nezávislá. Specifikační pohled na program, specifikace rozhraní bez specifikace implementace. Implementační je vidět implementace - hranice nejsou ostré, UML podporuje všechny tři pohledy Asociace - reprezentuje statické vztahy (spojení) mezi instancemi tříd Př) Položka objednávky - Produkt - Konceptuální pohled - reprezentuje konceptuální vztah mezi třídami - vlastnosti asociace stupeň asociace binární (včetně reflexivní), ternární, zakončení (role) - jméno role - násobnost (kardinalita) dolní a horní mez počtu objektů, které mohou být ve vztahu daného typu s jedním objektem protější

třídy nejčastější případy:, 0.., (0..nekonečno, M (many)), obecně seznam celých čísel a rozsahů Př) Student navštěvuje Předmět garantuje Ústav - Specifikační pohled - reprezentuje zodpovědnost (za dostupnost informace) Př) Co navštěvuje daný student, kdo navštěvuje daný předmět, kdo garantuje předmět - existují-li konvence pro pojmenování takových operací, lze usoudit, jak bude vypadat rozhraní Př) class Predmet { public Set getstudent(); public Ustav getustav(); - rovněž zodpovědnost za aktualizaci vztahu Př) Zápis studenta do předmětu, zrušení registrace - zodpovědnost neimplikuje datovou strukturu pro implementaci (jen rozhraní) Př) ukazatel, OID, množina ukazatelů, množina OID, dotazovací funkce, - Implementační pohled vidí implementaci Př) class Predmet { private Set Studenti; class Student { private Set Predmety; - asociace může být orientovaná - ukazuje navigovatelnost (jednosměrná/obousměrná asociace) Př) viz další strana - význam pro specifikační (zodpovědnost) a implementační diagramy - podle UML neorientovaná asociace znamená buď obousměrnou nebo nerozhodnutá potřeba dohodnout význam - omezení plynoucí z obousměrné asociace (dvě inverzní navigace) - pojmenování asociací: sloveso jméno role

- není nutné pojmenovávat vždy (srozumitelnost), zavedení konvencí (jméno role je jméno třídy) - asociace je statickým vztahem (existuje po celou dobu života objektů), zasílání zpráv a závislost se modelují jiným způsobem Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() Položka objednávky -množství: Integer -cena: Money -uspokojena: Boolean {if Objednávka.zákazník.charakteristika = 'nejistý' then Objednávka.předplacena musí být 'true'} -jméno -adresa Smluvní zákazník -jménokontaktu -charakteristika -limit +pošlinabídku() +pošliměsíčníúčet(integer) 0.. objednané zboží Zaměstnanec Produkt Zákazník +charakteristika(): String Individuální zákazník -číslokarty {charakteristika() vrací 'nejistý'} Atributy - vlastnost, jejíž hodnotu objekt nese Př) Student - jméno - Konceptuální pohled student má jméno - Specifikační pohled objekt třídy Student má přístupnou hodnotu jména - Implementační pohled každý objekt třídy student má pole (instanční proměnná, datový člen) pro uložení jména - syntax podle UML (v závislosti na míře detailů): viditelnost jméno: typ = implicitní_hodnota - rozdíl mezi asociací a atributem? - konceptuální různá notace pro totéž - specifikační a implementační atribut v sobě zahrnuje navigaci, kopie objektu hodnota, ne reference Operace - procesy, které umí třída provádět - syntax podle UML (v závislosti na míře detailů): viditelnost jméno (parametry): návrat_hodnoty - viditelnost: public (+), protected (#), private (-), případně další

- parametry: seznam směr jméno: typ = implicitní_hodnota - návrat_hodnoty: seznam návratových hodnot (zpravidla jedna) - Typy operací: - dotaz, zpřístupňující (getting) nemění stav - modifikátor, nastavující (setting) může měnit stav - vztah operace metoda (vlastní terminologie programovacích jazyků (C++: členská funkce) - operace a atributy třídy (class scope) - podtržené x : In te g e r y : In te g e r zn a cka : Iko n a Bod p o zi ce X () : In te g e r p o zi ce Y () : In te g e r p o su n (d x : In te g e r, d y : In te g e r) Generalizace - třídy s řadou společných vlastností a některými odlišnými zobecňující třída Př) Smluvní zákazník, Individuální zákazník Zákazník - Konceptuální pohled: všechny instance podtypu jsou také instancemi nadtypu (s danými atributy, operacemi, asociacemi). - Specifikační pohled: rozhraní podtypu musí zahrnovat všechny prvky rozhraní nadtypu. Princip nahraditelnosti (substituability): všude, kde se počítá s objektem nadtypu, lze použít objekt podtypu (není třeba si dělat starosti s rozdíly rozhraní je stejné). - Implementační pohled: souvisí s dědičností v programovacích jazycích - podtřída dědí všechny metody a pole atributů, metody může předefinovat. Omezení (constraint) - důležitá úloha diagramu - řada omezení vyjádřena prvky diagramu (asociace násobnost, atribut podtypu odlišnost) - notace pro obecná omezení v UML: {popis_omezení}

- slovní popis, formule, OCL, Kdy použít diagramy tříd? - základ většiny OO metod - problém bohatosti výrazových prostředků Tipy: - nesnažit se použít veškerou dostupnou notaci - přizpůsobit pohled etapě projektu: analýza: konceptuální pohled návrh: specifikační + implementační - koncentrovat se na klíčové oblasti, raději méně aktuálních diagramů - nezabřednout brzy do implementačních detailů