Třída. Atributy. Operace

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

1. Dědičnost a polymorfismus

7.5 Diagram tříd pokročilé techniky

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

7.5 Diagram tříd pokročilé techniky

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

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy

Diagramy tříd - základy

UML. Unified Modeling Language. Součásti UML

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

Základy objektové orientace I. Únor 2010

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

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.

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

11. Dědičnost. Dědičnost strana 103

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

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

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

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

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

Tvorba informačních systémů

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

Tvorba informačních systémů

OOT Objektově orientované technologie

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

DBS Konceptuální modelování

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

Problém identity instancí asociačních tříd

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.

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

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

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

Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.

20. Projekt Domácí mediotéka

Teoretické minimum z PJV

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

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

24. listopadu 2013, Brno Připravil: David Procházka

Abstraktní třída a rozhraní

Objektově orientované programování

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

Objekty, třídy, vazby 2006 UOMO 30

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

3 druhy UML diagramů

UML - Unified Modeling Language

Objektově orientovaný přístup

Programování v Javě I. Leden 2008

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

Výčtový typ strana 67

KTE / ZPE Informační technologie

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

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

Objektově orientované technologie. Daniela Szturcová

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

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

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

Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března

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

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

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

Principy objektově orientovaného programování

PREPROCESOR POKRAČOVÁNÍ

Objektové programování

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

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

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

1. Programování proti rozhraní

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/

Úvod do programovacích jazyků (Java)

Dědění, polymorfismus

Unifikovaný modelovací jazyk UML

Dědičnost (inheritance)

NPRG031 Programování II 1 / :25:46

NMIN201 Objektově orientované programování 1 / :36:09

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

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

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

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

Kurz Postupy návrhu IS pomocí UML a OOP (5 dnů, in-house)

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

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

Databázové systémy trocha teorie

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

Diagram tříd (class diagram)

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

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

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

Objektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc.

typová konverze typová inference

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

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

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

Návrhové vzory OMO, LS 2014/2015

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

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

Jazyk C++ I. Polymorfismus

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

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

Transkript:

Class Diagrams

Třída Atributy Operace

Třída Třída je jakýsi prototyp objektů. Za třídou si můžeme představit množinu jejích instancí. Každý objekt dané třídy má stejnou množinu atributů (proměnných) a operací (metod). Tzv. abstraktní třída nedefinuje imlementaci (algoritmus) jedné nebo více metod. Je-li třída abstraktní, není možno vytvořit její instanci.

Dědičnost (Inheritance) 1 Abstraktní třída Abstraktní metoda

Dědičnost Třída B, která dědí od třídy A, má všechny atributy a operace jako třída A (a možná nějaké navíc). Třída B je specializací třídy A. Třída A je zobecněním třídy B. Pokud třída A definuje implementaci nějaké operace (metody) a, pak tato implementace operace a bude použita i pro třídu B, ledaže by třída B tuto operaci předefinovala (overriding).

Polymorfismus Dědí-li třída B od třídy A, pak všechny instance třídy B mohou vystupovat rovněž jako instance třídy A. Instance třídy B jsou tedy mnohotvaré (polymorfní), mají tvar definovaný třídou B i třídou A. Dědičnost je transitivní. Tedy, dědí-li C od B a B od A, dědí i C od A. V roli instanci třídy A může vystupovat každá instance tříd B nebo C

Atributy-operace třídy/instance Atributy/operace třídy mohou být použity, aniž by existovala jediná instance této třídy. Jsou to vlastnosti této třídy jako celku, nikoliv jednotlivých instancí. Atributy instance jsou vlastnostmi této instance a mohou mít instance od instance rozdílné hodnoty. Operace instance jsou prováděny pro danou instanci a proto tato instance musí v okamžiku vyvolání operace existovat.

Dědičnost (Inheritance) 2 Generalization Set Name

Multiplicita atributů Osoba jmeno: String [1] adresa: String [1.. * ] telefon: String [ 0.. * ] datumnarozeni: Date [0.. 1]

Dědičnost (Inheritance) 3 Generalization Set Constraint disjoint/overlapping complete/incomplete

Asociace 1 Asociace

Asociace 2 Multiplicita Multiplicita

Asociace 3 Asociace Class Diagram Link Object Diagram

Asociace 4

Asociace 5 Chybný model Správný model

Asociace 6

Asociace 7

Asociace 8

Navigovatelnost Banka 1 * Není specifikována BankovniUcet ani v jednom směru Banka 1 * Asociace je navigovatelná BankovniUcet v jednom směru, ve druhém není navigovatelnost specifikována Banka 1 * Asociace je navigovatelná BankovniUcet v jednom směru, ve druhém navigovatelná není. Banka BankovniUcet 1 * Asociace není navigovatelná v žádném směru.

Asociační třída 1

Asociační třída 2 Předchozí model je ekvivalentní tomuto modelu:

Kvalifikovaná asociace 1 Banka cislouctu 1 0..1 BankovniUcet

Kvalifikovaná asociace 2 Banka cislouctu 1 0..1 BankovniUcet Lze přepsat bez použití kvalifikovaé asociace takto: Banka 1 * BankovniUcet cislouctu

Co je toto?...

... Objektový diagram reprezentující čtverec

... Objektový diagram reprezentující čtverec Instance Link (nikoliv asociace)

Umíte nakreslit diagram tříd (class diagram) k tomuto diagramu objektů (object diagram)?

Umíte nakreslit diagram tříd (class diagram) k tomuto diagramu objektů (object diagram)?

Agregace 1 Agregace je zvláštním případem asociace, kdy jedna třída má ve vztahu výsadnější postavení než druhá třída. Typickým příkladem jsou asociace typu celek-součást. Součást Celek Class diagram na předchozím obrázku by byl teady asi lépe vyjádřen takto:

Agregace 2 Agregace je zvláštním případem asociace, kdy jedna třída má ve vztahu výsadnější postavení než druhá třída. Typickým příkladem jsou asociace typu celek-součást. Class diagram na předchozím obrázku by byl teady asi lépe vyjádřen takto: Agregace

Agregace 3 Agregace je relace: transitivní: Je-li B součástí celku A a C součástí celku B, pak C je součástí celku A. antisymetrická: Je-li B součástí A, pak A není součástí B.

Agregace 4 Kdy asociaci modelovat jako agregaci? Je třeba zodpovědět násůledující otázky: 1. Vystihuje podstatu asociace fráze je částí celku? 2. Jsou některé operace celku aplikovatelné na jeho součásti? 3. Propagují se hodnoty některých atributů z celku na všechny nebo aspoň některéčásti? 4. Je asociace asymetrická (popř. transitivní)?

Agregace 5 Důležité pravidlo: Nejste-li si jisti, zda je daná asociace agregací, modelujte ji raději pouze jako prostou asociaci (nic zásadního se nepokazí).

Kompozice 1

Kompozice 2 Kompozice je forma agregace s dvěma dodatečnými omezeními: 1. Součást může patřit maximálně do jednoho celku (oddělení nemůže být sdíleno více divizemi) 2. Jakmile je součást zařazena do celku, je její životní cyklus určen životním cyklem celku (zanikne-li společnost, zaniknou i všechny její divize).

Kompozice 3 Důležité pravidlo: Modelujeme-li agregaci jako prostou asociaci, nic podstatného se nestane. Namodelujeme-li kompozici jako prostou asociaci nebo jako agregaci, ztrácíme důležitou informaci o dvou omezeních (i) nesdílení součásti mezi celky a (ii) determinace životního cyklu součásti životním cyklem celku.

Definice omezení pro asociace Multiplicita (kardinalita množiny) Kvalifikovaná asociace Uspořádanost instancí na * konci ( {ordered}, {sequence}, {bag} ) Explicitně vyjádřené omezeni clen Osoba * 1 {subset} predseda * 1 Výbor

Definice omezení pro objekty 1 Zamestnanec vedouci 0..1 hrubamzda {hrubamzda < vedouci.hrubamzda} *

Definice omezení pro objekty 2 delka sirka Okno { 0.8 delke/sirka 1.5 }

Definice omezení pro objekty 3 Osoba vek: int {vek je neklesajici }

Viditelnost Osoba + vek: int - vyska: float # vaha: float ~ povolani: String +.. public -.. private #.. protected ~.. package Aplikovtelné na: atributy operace asociace

Scope (vlastnosti instancí nebo tříd) zpravanazaznamníku maximalnidelkazpravy maximalnidobauchovani datumnahrani casnahrani priorita zprava

Sudoku