Diagramy Klas i Obiektów

background image

Diagramy klas i
obiektów

GRUPA ZIN I

Modelowanie aplikacji

w UML 2.0

Mateusz Drzymała
Marcin Opszalski
Mateusz Pisarek

background image

Modelowanie Klas

• Na etapie zbierania wymagań oraz analizy systemu, przy pomocy
klas tworzy się słownik pojęć dziedzinowych, które powinny
odzwierciedlać byty występujące w dziedzinie problemu postrzegania
z punktu widzenia przyszłych jego użytkowników.

• Precyzja nazewnictwa, na tym etapie, pozwala na precyzyjne opisanie
dziedziny problemu, zapobiegając późniejszym, fundamentalnym
zmianom wynikającym z nieporozumień na linii specjalista
dziedzinowy – analityk.

„Gdy ja używam jakiegoś słowa, oznacza ono dokładnie to, co mu każę
oznaczać… ni mniej, ni więcej.”
Humpty Dumpty

background image

Klas
a

Pracownik

imię
nazwisko
stanowisko
data zatrudnienia

zatrudnij
zwolnij
oblicz
wynagrodzenie

Nazwa

Atrybuty

Cechy

Operacje

Klasa – jest opisem obiektów, posiadających takie same atrybuty, operacje,
związki oraz semantykę

Klasę oznacza się przy pomocy prostokąta podzielonego na trzy podstawowe
części. W części górnej należy podać nazwę klasy oraz można podać
dodatkowe informacje, takie jak stereotyp oraz dodatkowe właściwości.
część środkowa służy do definiowania atrybutów klasy. W części dolnej podaje
się operacje zdefiniowane dla klasy.

background image

Klas
a

Klasa – może zawierać dodatkowe części, zdefiniowane przez osobę
modelującą. W takim przypadku, każda część symbolu klasy powinna
być zapoczątkowana nazwą (słowem kluczowym). Typowym przykładem
dodatkowych części są:

• lista sygnałów, na które reaguje obiekt,

• lista odpowiedzi klasy.

background image

Atrybut
y

Pracownik

imię
nazwisko
stanowisko
data zatrudnienia

zatrudnij
zwolnij
oblicz
wynagrodzenie

Określają właściwości pojęcia
Reprezentowanego przez klasę

Wyznaczają zawartość
Informacyjną klasy,
Specyfikują dane
Związane z klasą i jej
obiektami

background image

Typ i liczność
atrybutów

Pracownik

imię: string
nazwisko: string
stanowisko: stanowisko
data zatrudnienia: date
umiejętności[1…*]: Umiejętność

zatrudnij
zwolnij
oblicz
wynagrodzenie

Pełna składnia deklaracji atrybutu:
<widoczność> <nazwa> [<liczność>] ‘:’ <typ> [ ‘=‘ <wartość początkowa> ][<modyfikatory>]

• <widoczność> -> ‘-’ | ‘#’ | ‘+’ | ‘~’

• <liczność> -> ‘[‘ <minimalna ilość> ‘..’ <maksymalna ilość> ‘]’

• <modyfikatory> -> { <modyfikator> (‘,’ modyfikator)*}

• <modyfikator> -> ‘readOnly’ | ‘union’ | ‘subsets’ <nazwa atrybutu> | ‘redefines’
<nazwa atrybutu> | ‘ordered’ | ‘unique’ | <ograniczenie>

background image

Typ i liczność
atrybutów

Typ atrybutu określa dopuszczalny rodzaj / zbiór wartości jakie mogą
przyjmować atrybuty. Typ atrybutu określa się przy pomocy nazwy
umieszczonej po nazwie atrybutu i znaku rozdzielającym ‘:’.

UML – owe typy danych:

• typy proste (typy prymitywne / predefiniowane : Boolean, Integer,
String, UnlimitedNatural, typ wyliczeniowy),

• typy złożone – klasy.

Liczność atrybutów - jest określana przez umieszczenie w nawiasach
kwadratowych dopuszczalnego zakresu możliwej liczby wartości do
przyjęcia przez atrybut. Jeżeli ta jest równa jeden, wówczas
wskaźnik liczności jest pomijany.

background image

Widoczność i zakres
atrybutów

Pracownik

id {private}
zmodyfikowany {protected}
imię {public}
nazwisko {public}
stanowisko {public}
data zatrudnienia {public}
odczytanie z bazy danych {package}

zatrudnij
zwolnij
oblicz
wynagrodzenie

Pracownik

- id
# zmodyfikowany
+ imię
+ nazwisko
+ stanowisko
+ data zatrudnienia
~ odczytanie z bazy danych

zatrudnij
zwolnij
oblicz
wynagrodzenie

Atrybuty określają zawartość informacyjną, jaką klasa niesie w systemie.

background image

Widoczność i zakres
atrybutów

Przynależność atrybutów:

Atrybuty klasy (class scope attribute) Atrybuty klasy przyjmują swoją
wartość jeden raz dla całej klasy.

Atrybuty obiektu (instance scope attribute) Atrybuty obiektu przyjmują
swoją wartość dla każdego obiektu z osobna.

Atrybuty klasy są oznaczone przez podkreślenie nazwy jedną linią
(na przykład : domyślny kształt).
Nazwę atrybutu podaje się w normalny sposób (na przykład: imię).

Widoczność atrybutów:

• prywatne – oznaczone przez „-” lub słowem kluczowym private,

chronione – oznaczone przez „#” lub słowem kluczowym protected,

• publiczne – oznaczone przez „+” lub słowem kluczowym public,

• pakietowe – oznaczone przez „~” lub słowem kluczowym package.

background image

Modyfikatory
atrybutów

data zatrudnienia: DateTime {readOnly}
umiejętności[1…*]: Umiejętność {ordered, unique}
obowiązki[1…*]: Umiejętność {subsets umiejętności}
/dni kalendarzowe[1…*]: Date {union}
dni powszednie[1…*]: Date {subset dni kalendarzowe}
dni weekendowe[1…*]: Date {subset dni kalendarzowe}
święta[1…*]: Date {subset dni kalendarzowe}
/staż pracy: Integer
stanowisko: String = „Projektant”
wynagrodzenie: Real {wynagrodzenie > 0.00}

Znaczenie poszczególnych metek:
{readOnly}: atrybut nie może być modyfikowany,
{unique}: zbiór wartości atrybutu wielowartościowego nie zawiera powtórzeń,
{ordered}: zbiór wartości atrybutu wielowartościowego jest uporządkowany,
{subsets atrybut}: zbiór wartości atrybutu wielowartościowego jest podzbiorem
zbioru wartości innego atrybutu,
{union}: zbiór wartości atrybutu jest sumą mnogościową zbiorów wartości
atrybutów, które zadeklarowano jako podzbiory tego atrybutu.

background image

Obiekty

Pracownik

imię
nazwisko
stanowisko
data zatrudnienia

zatrudnij
zwolnij
oblicz
wynagrodzenie

andrzej: Pracownik

Imię = „Andrzej”
Nazwisko = „Wtorkowski”
Stanowisko = „Projektant”
data zatrudnienia = 10/12/2002

krzysztof: Pracownik

Imię = „Krzysztof”
Nazwisko = „Ćwikłowski”
Stanowisko = „Programista”
data zatrudnienia = 15/09/2005

grażyna: Pracownik

Imię = „Grażyna”
Nazwisko = „Wójcik”
Stanowisko = „Analityk”
data zatrudnienia = 01/07/2006

staszek: Pracownik

Imię = „Stanisław”
Nazwisko = „Rybak”
Stanowisko = „Tester”
data zatrudnienia = 10/05/1996

background image

Obiekty

Obiekt można zdefiniować jako element o dobrze zdefiniowanych granicach oraz
tożsamości, która hermetyzuje w sobie określone zachowanie oraz stan.
Obiekt jest reprezentantem klasy.

Stan, w tym przypadku, należy rozumieć jako kolekcję wartości atrybutów oraz
powiązań, w jakich obiekt w danym momencie występuje.
W tym miejscu warto także wspomnieć o tożsamości obiektów. Każdy obiekt
powoływany do życia automatycznie posiada swoją własną tożsamość.
Oznacza to, iż nie jest konieczne modelowanie cech w klasie, przy pomocy
których będzie zapewniana unikalność każdego z tworzonych obiektów.

Obiekt przedstawia się na diagramach podobnie jak klasę.
Podanie nazwy obiektu, przed nazwą klasy, umożliwia dokładne wskazanie
konkretnego obiektu (w danym kontekście).
Obiekt znajdujący się w określonym stanie (zbiorze stanów) pokazuje się na
diagramach przez umieszczenie po nazwie klasy list stanów, w których obiekt
się znajduje.
<nazwa obiektu> ‘:’ <nazwa klasy> ‘[‘ <lista stanów> ‘]’
Na przykład:
Klient : Osoba [‘Uprzywilejowany’]

background image

Operacj
e

Pracownik

imię
nazwisko
stanowisko
data zatrudnienia

zatrudnij
zwolnij
oblicz
wynagrodzenie

Specyfikuje zbiór procedur,
Które można wywoływać
Na obiektach klasy,
Wyznaczają sposób dostępu
Do danych.

Opisują zachowania bytów
Reprezentowanych przez klasę

background image

Widoczność i zakres
operacji

Pracownik

imię
nazwisko
stanowisko
data zatrudnienia

zatrudnij {public}
zwolnij {public}
oblicz wynagrodzenie {public}
oblicz wartość premii
{private}
Oblicz płacę podstawową
{protected}
Znajdź wg nazwiska {public}

Pracownik

imię
nazwisko
stanowisko
data zatrudnienia

+zatrudnij
+zwolnij {public}
+oblicz wynagrodzenie
{public}
-oblicz wartość premii
{private}
#Oblicz płacę podstawową
{protected}
+Znajdź wg nazwiska {public}

Operację można zdefiniować jako usługę świadczoną przez klasę na

rzecz swojego otoczenia

background image

Widoczność i zakres
operacji

Operacje klasy (class scope operation) mogą być wywoływane dla klasy, a więc
nie wymagają istnienia żadnego obiektu tej klasy, i nie mogą się odwoływać do
atrybutów obiektu. Operacje klasy są oznaczane przez podkreślenie nazwy jedną
linią (np.: utwórz).
Operacje obiektu (instance scope operation) Operacje obiektu są wywoływane
dla poszczególnych obiektów należących do danej klasy. Nazwę operacji obiektu
podaje się bez podkreślenia (na przykład: oblicz wiek).

Widoczność operacji

• prywatne – oznaczone przez „-” lub słowo kluczowym private,

chronione – oznaczone przez „#” lub słowo kluczowym protected,

• publiczne – oznaczone przez „+” lub słowo kluczowym public,

• pakietowe – oznaczone przez „~” lub słowo kluczowym package.

Użytkownik może definiować własne rodzaje określeń widoczności operacji.
Określone w ten sposób typy przedstawiane są w modelu w postaci własności
(ang. property) na końcu definicji operacji.

background image

Parametry, wartość
zwracana

+ zatrudnij(od dnia:Date)

- oblicz wartość premii():Real
+ oblicz wynagrodzenie(na dzien:Date):Real
+ posortuj wg stażu(lista: Pracownik[*]): Pracownik[*]

- pobierz miesiąc i rok(in data:Date, out miesiąc: Integer, out
rok:Integer)
+ posortuj wg nazwiska(inout lista:Pracownik[*])
+ wyszukaj binarnie(lista:Pracownik[*] {ordered}, nazwisko:
String) Pracownik
+ zatrudnij(od dnia:Date = DateTime.Today)

Pełna składnia deklaracji operacji:

< wodoczność <nazwa> [‘(‘<lista parametrów> ‘)’] ‘:’ <typ zwracanej wartości> [<modyfikatory
operacji>]
<widoczność> -> ‘-’ | ‘#’ | ‘+’ | ‘~’

• <liczność> -> ‘[‘ <minimalna ilość> ‘..’ <maksymalna ilość> ‘]’

• <modyfikatory operacji> -> { <modyfikator operacji> [ (‘,’ modyfikator
operacji)]*}

• <modyfikator operacji> -> ‘redefines’ <nazwa operacji> | query | ordered | unique |
ograniczenie>

• <lista parametrów> -> <parametr> [ ‘,’ <parametr> ]*

• <parametr> -> [<kierunek>] <nazwa> ‘:’ <typ> [<liczność>] [‘=‘ <wartość domyślna> ]
[<modyfikatory parametru>]

• <kierunek> -> ‘in’ | ‘out’ | ‘inout’

• <modyfikatory parametru> -> {<modyfikator parametru> [ ‘,’ <modyfikator parametru>]*}

• <modyfikator parametry> -> ‘ordered’ | ‘unique’ | <ograniczenie>

background image

Parametry, wartość
zwracana

Pracownik

imię
nazwisko
stanowisko
data zatrudnienia

zatrudnij(od dnia: Date)
zwolnij (z dniem: Date)
oblicz wynagrodzenie (na dzień:
Date): Real

Wyjątki:

i

RaisedException
Nie można zatrudnić

Wyjątki :
Metamodel UML uwzględnia możliwość specyfikowania wyjątków, zgłaszanych przez
operacje, ale nie ma to odzwierciedlenia w składni operacji. Zaleca się używania do
tego celu notatek.
U Uml 1.x wyjątki modelowano jako klasy ze stereotypem

<<

exceptuion

>>

, z punktu

widzenia UML 2.0 wyjątek jest daną dowolnego typu.

background image

Modyfikatory operacji i
parametrów

Oblicz wynagrodzenie(na dzień: Date): Real {query}
Pobierz dni urlopu(miesiąc: int, rok: int): Date[*]{unique}
Posortuj wg stażu(lista: Pracownik[*]): Pracownik [*]
{ordered}
Wyszukaj binarnie( lista: Pracownik[*]{ordered}, nazwisko:
string): Pracownik

Znaczenie poszczególnych metek:
{query}: operacja nie zmienia stanu obiektu, tzn. nie
modyfikuje wartości atrybutów.
{unique}: zbiór wartości zwróconych w wyniku nie zawiera
powtórzeń
{ordered}: zbiór wartości, zwróconych w wyniku jest
uporządkowany
{ordered}: dla parametru: zbiór wartości parametru
wielokrotnościowego jest uporządkowany.

background image

Zachowa
nie

Diagramy klas nie opisują sposobu realizacji

operacji.
Do tego celu wykorzystuje się diagramy
opisujące
dynamiczny aspekt systemu:

• Diagram maszyny stanów

• Diagram aktywności

• Diagram interakcji (sekwencji, komunikacji)

background image

Związki

Związek (and. Association)
Semantyczna zależność występuje między klasami, która ma bezpośrednie
odzwierciedlenie w powiązaniach(ang. link) występujących między konkretnymi
obiektami systemu.

Każdy związek posiada swoją nazwę, która powinna być unikalna w ramach zbioru
klas które są przez ten związek łączone. Doprecyzowanie funkcji jaką pełni dana
klasa w związku jest możliwe poprzez zastosowanie koncepcji roli (ang. role).

Powyższy rysunek prezentuje klasy Pracownik oraz Zakład połączone związkiem
o nazwie „zatrudnia”. Związek określa miejsce klasy w systemie w określonym
kontekście. Pracownik może interesować osobę modelującą w kontekście związku
z zakładem, jak i np.: jako „zasób ludzki” posiadający określone certyfikaty,
potwierdzające jego kompetencje.

Pracownik

Zakład

*
pracownik

zatrudnia *

pracodawca

Rola

Nazwa związku

Symbol związku

background image

Role

Role obiektów w związku są reprezentowane za pomocą specjalnych atrybutów.
Atrybut, reprezentujący rolę należy do klasy po przeciwnej stronie związku, niż klasa
występująca w tej roli. Jego typ jest zgodny z klasą występującą w roli a liczność
odpowiada liczności klasy w związku.

Pracownik

Zakład

*
pracownik

zatrudnia

*
pracodawca

imię: string
nazwisko : string
stanowisko: string
/pracodawca[*]: Zakład

nazwa: string
adres : string
NIP: string
REGON: string
/pracownik[*]:
Pracownik

background image

Liczności
związku

Liczność związku jest górnym i dolnym ograniczeniem liczności zbioru obiektów, z którymi może być powiązany
dany obiekt w danej roli.
Liczność związku określa się dla każdej z ról osobno. Liczność związku specyfikuje się poprzez podanie przedziału
liczb naturalnych, domkniętego obustronnie:
<granica dolna> … < granica górna>

• Jeżeli granica górna jest nieograniczona, wówczas należy użyć symbolu „*”.

• Jeżeli liczność związku jest precyzyjnie określona, wówczas należy podać tylko jedną liczbę, na przykład „4”

• Jeżeli liczność związku nie może być w żaden sposób oszacowana i może przyjąć wartości od 0 do ∞,
wówczas należy podać jedynie symbol „*”.

Samochód

Koło

1

4

Wielokąt

Wierzchołek

1

1..
*

Towarzystwo
ubezpieczeniowe

Polisa

1

*

Pracownik

Zakład

*

*

Butelka

Korek

0..1

0..
1

background image

Związki
rekurencyjne

Związek może dotyczyć tej samej klasy. W takim przypadku, w systemie,
dwa obiekty tej samej klasy są ze sobą powiązane. W celu rozróżnienia
powiązanych obiektów, konieczne jest określenie ról na obydwu końcach
związku.

Pracownik

0..1
szef

*
podwładny

zarządza

background image

Nawigacja

Jeżeli z punktu widzenia systemu, istotny jest jeden aspekt związku, wówczas
należy wskazać, jaka informacja jest wymagana. Kierunek przeglądania związku
jest oznaczony grotem umieszczonym na końcu symbolu związku. Na powyższym
przykładzie, obiekty klasy Kolekcja będą miały powiązania z obiektami klasy
Element. Obiekty klasy Element nie będą miały powiązań z obiektami klasy
Kolekcja.

Kolekcja

Element

*

zawiera

*

background image

Uporządkowanie
związku

Uporządkowanie związku

Jeżeli liczność związku jest większa niż 1, wówczas może zajść konieczność
pokazania, iż elementy znajdujące się po stronie „wiele” mają być uporządkowane
według jakiegoś porządku. Sytuację taką oznacza się na diagramie własnością
{ordered}. Jeżeli elementy nie są uporządkowane, wówczas nie należy tej sytuacji
osobno specyfikować, gdyż jest ona przyjmowana jako domyślna.

Harmonogram

Zadanie

1

grupuje

*

{ordered}

background image

Ogranicze
nia

Ograniczenia (ang. Constraint)

Czasami w trakcie tworzenia modelu występuje sytuacja, w której należy wyraźnie
zaznaczyć, iż tylko jedno z potencjalnie wielu powiązań może być utworzone dla
danego obiektu.

Sytuację taką zaznacza się poprzez nałożenie ograniczeń {xor} na związki określone
na modelu klas.

Osoba

Firma

0..
1

*

{xor}

Konto

*

1..
*

background image

Klasa
związku

Jeżeli wraz z wystąpieniem powiązania między obiektami pojawiają się dodatkowe
informacje, związek na
modelu klas należy wzbogacić o klasę związku (ang. Association Class).
Klasa związku jest reprezentowana na diagramie w taki sam sposób jak normalna
klasa. Różni się od niej
tym, iż semantycznie jest ona integralną częścią związku, i samodzielnie na diagramie
nie występuje.

Klasa związku jest przykładem czysto analitycznej konstrukcji, nie posiadającej
swojego odpowiednika w
językach programowania. Z punktu widzenia metamodelu UML, klasa związku jest
zarówno klasą, jak i
związkiem. Z punktu widzenia modelu, klasę związku należy rozumieć jako zestaw
danych oraz usług, które
zaistnieją tylko wówczas, gdy pomiędzy obiektami reprezentującymi klasy znajdujące
się po dwóch
stronach związku zaistnieje powiązanie.

Pracownik

Zakład


*

pracodawc
a

*
pracown
ik

Umowa

zatrudnia

rodzaj
wynagrodzenie

background image

Klasa
związku

Należy pamiętać, iż domyślnie nie dopuszcza się, aby w
systemie wystąpiły dwa powiązania o tym samym
identyfikatorze (na który składają się identyfikatory
powiązanych obiektów). Oznacza to, że nie może zaistnieć
w systemie więcej niż jedno powiązanie (pracownik1,
pracodawca1), gdzie pracownik1, pracodawca1 są
obiektami znajdującymi się na końcach powiązania
utworzonego na podstawie związku „zatrudnienia” – nie
mogą istnieć w systemie 2 pary tych samych obiektów
powiązanych różnymi obiektami klasy związku. W
podanym przykładzie przekłada się to na brak możliwości
zatrudnienia konkretnego pracownika w konkretnym
zakładzie pracy na podstawie więcej niż jednej umowy.

background image

Kolekcje z
powtórzeniami

Pracownik

Zakład


*

pracodawc
a

*
pracown
ik

Umowa

zatrudnia

rodzaj
Wynagrodzenie
Data podpisania

{bag}

Kolekcje, reprezentujące role klas w związkach mogą zawierać powtórzenia.
Oznacza to, że dwa obiekty mogą być ze sobą powiązane więcej niż raz w tym
samym związku. Zgodnie z diagramem na slajdzie pracownik może być
wielokrotnie zatrudniony w tym samym zakładzie (np.: w wyniku zmiany
warunków umowy, albo zwolnienia i ponownego zatrudnienia po pewnym
czasie).

background image

Kwalifikat
or

Kwalifikator jest atrybutem lub zbiorem atrybutów powiązania
umożliwiającym podział obiektów powiązanych z danym obiektem
kwalifikowanym
(obiektem klasy do której jest przyłączony kwalifikator)
na zbiory według określonego atrybutami kryterium.

Liczność związku określa się dla ustalonego obiektu i kwalifikatora. W
przypadku gdy liczność jest określona jako „0..1” lub „1”, kwalifikacja
ma zarówno znaczenie semantyczne jak i implementacyjne. W
przypadku liczności „0..*” kwalifikator może mieć
jedynie znaczenie implementacyjne, sugerując w ten sposób
konieczność uwzględnienia szybkiego dostępu do zbioru obiektów.
Wartym odnotowania jest fakt, iż w przypadku rozważania powiązania
kwalifikowanego bez ustalonej wartości kwalifikatora, przyjmuje się
liczność „0..*”.

Pracownik

Zakład

0..1

*

imię
nazwisko
Stanowisko
Data zatrudnienia

nazwa
adres
NIP
REGON

nazwisko
imię

background image

Agregacja i
kompozycja

Agregacja jest szczególnym rodzajem związku, implikującym pewną
zależność między obiektem – agregatem a obiektami – składowymi.
Agregacja jest zawsze związkiem binarnym i jest relacją przechodnią i
asymetryczną. Agregacja nie niesie ze sobą żadnych implikacji
projektowych i implementacyjnych.

Szczególnym rodzajem agregacji jest kompozycja (ang. Composition). W
przypadku takiego związku, składowe mogą w danym momencie
należeć tylko do jednego agregatu (aczkolwiek agregat może się
zmieniać). Ponadto agregat jest odpowiedzialny za usunięcie
składowych, gdy sam jest usuwany.

Zespół

Zawodnik

*

1..
*

Wydział

Instytut

*

składa się z

składa się z

background image

Podzbiory ról

Za pomocą własności subsets można wyrazić fakt, że elementy jednej
kolekcji są podzbiorem elementów innej kolekcji. Własność union
oznacza, że zawartość kolekcji jest sumą wszystkich podzbiorów, które
zostały na niej zadeklarowane, a zatem sumą zawartości wszystkich
kolekcji, dla których użyto własności subsets z nazwą tej kolekcji.

Członek

stowarzyszenia

Oddział

stowarzyszenia

1

*

imię
nazwisko
Data wstąpienia

nazwa
Adres
REGON

należy do

Jest w zarządzie

Jest członkiem
zwyczajnym

*

5..7

0..1

0..1

członek
zwyczajny
{subsets
członek}

/członek {union}

background image

Widoczność roli

Widoczność roli:

Określenie widoczności roli umożliwia późniejszą kontrolę dostępu do
obiektów. Widoczność roli określa się w podobny sposób jak widoczność
atrybutów i operacji.

Rola „rozdział w związku łączącym książkę z rozdziałem została
określona jako prywatna dla klasy Książka. Podobnie, rola „akapit”
została ustalona jako prywatna dla klasy rozdział. Taka definicja
widoczności ról skutkuje tym, iż niemożliwe jest bezpośrednie odwołanie
się od obiektu klasy Książka do obiektu klasy akapit. Informacja taka
może zostać uzyskana jedynie poprzez wywołanie ewentualnej operacji
zdefiniowanej w klasie Rozdział.

Książka

Rozdział

1..*

1

Książka.Rozdział

1..*

Akapit

{private
}

{private
}

1

background image

Związki
wielokrotne

Związki wielokrotne, podobnie jak klasy związków, są konstrukcjami
analitycznymi. Przechodząc do etapu projektowania, należy zmienić
związki wielokrotne na odpowiednie związki binarne.

Liczność związku dla danej roli odczytuje się przy ustalonych obiektach
występujących w pozostałych rolach.

Dziecko

Klasa

0..1

*

0..n

Ro

k

background image

Koniec


Document Outline


Wyszukiwarka

Podobne podstrony:
Diagram klas i obiektow ZIN 3 i Nieznany
8(45) Diagramy klas cz2
Serwis sprzetu domowego z diagramem klas
Diagram Klas
Diagram klas
Diagram Klas
Diagramy klas
7(45) Diagramy klas wprowadzenie
diagram klas 2
diagram klas 2
Diagram klas UŚ
analiza systemow informatycznych, Egzamin z PSI, Egzamin składa się z 30 pytań i modelu UML do zapro
diagram klas do dziekanatu
Diagram klas
5 Diagram klas
Diagramy klas
Diagram klas projekt

więcej podobnych podstron