Diagramy klas

background image

Diagramy klas i obiektów

zastosowanie do modelowania w języku UML

Agnieszka Niegowska

&

Grzegorz Widziszowski

background image

Klasy

Klasa jest miejscem przechowywania cech obiektów, które są
niezmienne (inwariantów). Klasa nie jest zbiorem obiektów i nie jest
definicją zbioru obiektów. Stosunek klasa/podklasa oznacza, że
obiekty podklasy posiadają wszystkie inwarianty nadklasy, plus swoje
inwarianty. Np. klasa Student ma wszystkie inwarianty klasy Osoba,
plus niektóre własne.

określająca, które atrybuty dostępne są
z zewnątrz

lista
eksportowa

którym msi podlegać każdy obiekt

Ograniczenia

...

mogące zajść w operacjach na obiekcie

zdarzenia
lub wyjątki

inne możliwe

operacje, które można wykonać na obiekcie

metody

czyli statyczna budowa obiektu (atrybuty)

typ

językowy identyfikator obiektu

nazwa

najważniejsze
inwarianty

background image

Diagramy

klas

są odmianą klasyczną diagramów encja-związek

(entity-relationship) rozbudowanymi o nowe elementy

dużo oznaczeń o charakterze pomocniczym

(np.: notatki i ograniczenia)

rodzajem diagramów klas są diagramy pakietów

(package diagrams)

Żadna klasa nie żyje w izolacji – działa w kooperacji z innymi,

aby zrealizować działanie niemożliwe do wykonania w pojedynkę

Diagram klas służy do zobrazowania współpracy klas.

background image

Zastosowanie

diagramów klas

reprezentują pojęcia w dziedzinie
zastosowań, które aktualnie
podlegają analizie – sformalizowana

wizja wyobrażeń powstających

podczas myślenia nad problemem

zapis modelu pojęciowego

sformalizowana specyfikacja

danych i metod

dotyczy opisu zewnętrznego
oprogramowania bez szczegółów
implementacyjnych

implementacja

może bezpośrednio służyć jako graficzny środek
pokazujący szczegóły implementacji

background image

Tworzenie

diagramu klas

¾

Identyfikacja klas i obiektów

¾

Identyfikacja związków pomiędzy klasami

¾

Identyfikacja i definiowanie pól (atrybutów)

¾

Identyfikacja i definiowanie metod i komunikatów

kolejność wykonywania nie jest ustalona

i zależy zarówno od stylu pracy,

jak i od konkretnego problemu.

Dobrze zbudowany diagram klas:
- uwypukla jeden statyczny aspekt perspektywy projektowej systemu
- obejmuje tylko byty niezbędne do zrozumienia tego aspektu
- zawiera szczegóły odpowiednie do przyjętego poziomu abstrakcji,

z dodatkami koniecznymi do zrozumienia tego, na czym zależy
projektantowi

- nie jest zbyt ogólny

background image

Reprezentacja

graficzna

Klasa obrazowana jest za pomocą podzielonego na części
prostokąta – każda część reprezentuje inwarianty o zbliżonym
przeznaczeniu

Nazwa_klasy

atrybut1 : typ = wart_pocz1
atrybut2 : typ = wart_pocz2
atrybut3 : typ = wart_pocz3

lista atrybutów

operacja1(lista arg) : typ
operacja2(lista arg) : typ
operacja3(lista arg) : typ

lista metod

+

publiczne (public)

+

+

-

prywatne (private)

-

-

#

chronione (protected)

#

#

Na diagramie klasy dodatkowo określa się widoczność atrybutów
i metod przez umieszczanie przed nimi odpowiedniego symbolu:

background image

Dziedziczenie

Obiekt pod-klasy automatycznie dziedziczy wszystkie atrybuty,
metody, asocjacje i agregacje z wszystkich jej nadklas.

strzałka z białym trójkątnym grotem
prowadzi od pod-klasy
do jej bezpośredniej nadklasy

SPECJALIZACJA
– budowa pojęć bardziej szczegółowych, gdy mamy bardziej ogólne

GENERALIZACJA
– budowa pojęć bardziej ogólnych, gdy mamy bardziej szczegółowe

background image

Dziedziczenie

wieloaspektowe

Stosuje się specjalne oznaczenia, gdy zakresy znaczeniowe klas
nie są rozłączne.

środek transportu

teren

teren

napęd

napęd

Można wtedy zadeklarować aspekt według

którego specjalizuje się dany obiekt

{overlapping}

{overlapping}

oraz oznaczyć ten fakt

overlapping

podział nierozłączny (przecięcie zakresów

znaczeniowych nie jest zbiorem pustym)

pojazd
lądowy

pojazd
wodny

ciężarówka

pojazd
wiatrowy

pojazd
silnikowy

amfibia

żaglówka

background image

Dziedziczenie

wieloaspektowe

Dodatkowo można również odnotować fakty, że:

dąb

sosna

brzoza

drzewo

• podklasy są rozłączne (disjoint)

{disjoint,

• nie pokrywają całego zakresu znaczeniowego ich nadklasy

(incomplete)

incomplete}

background image

Dziedziczenie

wielokrotne

gdy klasa wywodzi się
bezpośrednio od więcej niż 1 klasy

pojazd

ciężar

...

prędkość_ekspl()

pojazd_lądowy

ilość_kół

max_prędkość

...

pojazd_wodny

wyporność

max_prędkość

...

amfibia

Wielokrotnie dziedziczenie prowadzi do anomalii i wad
koncepcji. W większości anomalie są konsekwencją faktu,
że przy pomocy wielodziedziczenia próbuje się opanować
koncepcję dynamicznych ról obiektu.

background image

Ograniczenia

Na diagramie klas można zawrzeć ograniczenia
dotyczące klas oraz związków między nimi.

Osoba

Komitet

*

1

*

*

jest_członkiem

jest_przewodniczącym

{podzbiór}

Osoba

Firma

* Pracuje_dla

0..1

pracownik pracodawca

podwładny

*

0..1

szef

{Osoba.pracodawca=
Osoba.szef.pracodawca}

Ograniczenie

lub adnotacja

background image

Szablony klas

Niektóre języki obiektowe, wśród nich C++, wprowadzają
użyteczne pojęcie klasy parametryzowanej (zwane też
szablonem, template). UML wprowadza specjalne oznaczenie dla
klas parametryzowanych, które może być użyte w diagramie klas.

class Zbiór <T> {

void wstaw ( T nowyElement );

void usuń ( T pewienElement );

}

Zbiór

Wstaw(T)

Usuń(T)

T

Parametr (typ)

Klasa parametryzowana

background image

Asocjacje

czyli powiązania pomiędzy obiektami klas

firma

osoba

Poniżej widoczny jest przykład specyfikacji asocjacji

pomiędzy obiektami klasy Osoba i obiektami klasy Firma.

Czarny trójkącik określa kierunek wyznaczony przez nazwę
powiązania.

Pracuje_dla

Asocjacje mają nazwy, które wyznaczają znaczenie tej asocjacji
w modelu pojęciowym. Jeżeli to znaczenie jest oczywiste,
wówczas nazwę asocjacji można pominąć.

background image

Asocjacje - liczność

Asocjacje mogą być wyposażone w oznaczenia liczności:

B

1..*

A

A

B : min=1, max=1

B

A : min=1, max=N

B

B

B

A

A

A

A

A

B

A

0..*

1..*

A

B : min=1, max=N

B

A : min=0, max=N

B

B

B

A A

A

A

A

B

A

0..*

0..1

A

B : min=0, max=1

B

A : min=0, max=N

B

B

B

A

A

A

A

A

Liczność oznacza, ile obiektów innej klasy może być powiązane
z jednym obiektem danej klasy (para liczb oznaczająca ilość
minimalną i maksymalną)

background image

Przykład

background image

To już połowa

1

30

Tu jesteś

background image

Asocjacje

– nazwy ról

Asocjacje mogą być także wyposażone w dodatkowe nazwy ról

(przy odpowiednich końcach).

firma

*

Pracuje dla

1..*

osoba

pracodawca

pracownik

Asocjacje mogą posiadać atrybuty. W tym celu przewidziano

linię przerywaną łączącą daną asocjacją z klasą, określaną jako:
„klasa asocjacji”.

stanowisko

zarobek

podwładny *

szef

0..1

Kieruje

Wewnątrz klasy asocjacji można zdefiniować atrybuty,

operacje i inne cechy asocjacji. Klasa asocjacji może być uważana
za samodzielną klasę - w szczególności podlega związkom
dziedziczenia i asocjacji. Asocjacje mogą być również n-arne
(oznaczenie - pusty w środku romb).

background image

Asocjacje skierowane

Na diagramach UML można zaznaczyć kierunek nawigacji
wzdłuż danej asocjacji

* 1

* 1

1
*

Zamówienie

dataZłożenia

czyZapłacone

sumaDoZapłaty

Realizuj()

Zamknij()

Klient

nazwisko

adres

wiarygodność()

PozycjaZamówienia

ilość

cena

czyZrealizowana

produkt

W takim przypadku asocjacja jest
rysowana w postaci strzałki; nawigacja
jest możliwa zgodnie z jej kierunkiem,
ale nie odwrotnie.

background image

Agregacje

szczególny przypadek asocjacji
wyrażający zależność: część – całość.

Oznacza się je za pomocą pustego rombu.

Przykład 1

samochód jest agregatem swoich części

samochód

silnik

Przykład 2

Klasa emerytowanych pracowników dziedziczy zarówno od klasy Emeryt,

jak i od klasy Pracownik, wówczas obiekt emerytowanego pracownika zawiera jako
swoją „część” inny obiekt grupujący informację o cechach osoby jako emeryta.

Mówi się, że obiekty pracownika i emeryta pozostają w związku agregacji

(emeryt „jest częścią” pracownika).

background image

Kompozycja

bardziej restrykcyjna agregacja

dana część może należeć tylko do jednej całości

Co więcej, część nie może istnieć bez całości

– pojawia się i jest usuwana wraz z całością.

Zatem usunięcie całości powoduje automatyczne usunięcie
wszystkich części związanych z nią związkiem kompozycji.

zamówienie

pozycja zamówienia

Kompozycje oznacza się za pomocą wypełnionego rombu.

background image

Przykład

–agregacja i kompozycja

1

*

agregacja

1

kompozycja

3..*

kompozycja

Punkt

Okrąg

promień

Styl

kolor

czyWypełniony

Wielobok

1

*

Każde wystąpienie obiektu Punkt należy do obiektu Wielobok albo do obiektu
Okrąg - nie może należeć do dwóch obiektów naraz a usunięcie obiektu
Wielobok (Okrąg) powoduje kaskadowe usunięcie wszystkich związanych
z nim obiektów Punkt.

Wystąpienie obiektu Styl może być dzielone przez wiele obiektów Wielobok
i Okrąg, których usunięcie nie powoduje usunięcia związanego z nimi obiektu Styl.

agregacja

background image

Różna postać zapisu kompozycji

Okno
PasekPrzesuwny[2]:Suwak
Tytuł:Nagłówek
Ciało:Panel

Okno

PasekPrzesuwny:Suwak

Tytuł:Nagłówek

Ciało:Panel

2

1

1

Okno

suwak

nagłówek

panel

pasekPrzesuwny 2

tytuł 1

ciało 1

Okno

PasekPrzesuwny

Tytuł

Ciało

Suwak

Nagłówek

Panel

2

1

1

background image

Stereotypy

Idea : ustalenie meta-klasyfikacji obiektów

i wprowadzenie oznaczeń graficznych a nią zgodnych

Oznaczeniami są ciągi znaków wewnątrz nawiasów « »

(np. «control object»)

Mogą one występować w różnych kontekstach oraz mogą być zastąpione
przez specjalne ikony.(nie są określone - mogą być dowolnie wybrane)

Wewnątrz diagramów klas mogą występować stereotypy klas, asocjacji

i generalizacji, itd. Stereotypy są pewnymi wspólnymi nazwanymi
własnościami tych bytów, dzięki czemu ich definicja może ulec
uproszczeniu lub uszczegółowieniu.

To samo znaczenie

<<aktor>>

Klient

background image

Rodzaje stereotypów

PAKIETÓW

WĘZŁÓW

KLAS I OBIEKTÓW

zdarzenie
wyjątek
interfejs
metaklasa
udogodnienie

ZADAŃ

proces

wątek

TYPU OBIEKTÓW

obiekty rzeczywiste

obiekty sterujące
obiekty interfejsu

Przykład równoważnych oznaczeń:

<<sterowanie>>
Pióro świetlne

lokalizacja : Punkt

uruchom(tryb)

<<sterowanie>>
Pióro świetlne

lokalizacja : Punkt

uruchom(tryb)

Pióro świetlne

lokalizacja : Punkt

uruchom(tryb)

Pióro świetlne

background image

Diagramy obiektów

(Object diagram)

podobne do diagramu klas, przedstawiają jednak nie klasy,
tylko konkretne obiekty będące instancjami klas systemu.

Z punktu widzenia notacji diagramy obiektów używają
elementów zapożyczonych z diagramów klas, chociaż
często używają prostszej notacji.

Skupiają się na obiektach a nie na związkach pomiędzy
klasami. Większość z nich używa wyłącznie obiektów
i asocjacji.

Diagram jest więc wizualizacją hipotetycznego stanu
systemu podczas jego działania. Służy do tworzenia
przykładów pomagających zrozumieć diagram klas
a przede wszystkim powiązań w nim występujących.

background image

Obiekty i asocjacje

OBIEKTY są identyfikowane poprzez umieszczenie przykładowej nazwy

poprzedzonej dwukropkiem ‘:’ przed nazwą klasy, którą reprezentują

nazwa_obiektu : nazwa_klasy

nazwa_atrybutu1 = wartość_atrybutu1
nazwa_atrybutu2 = wartość_atrybutu2
...
nazwa_atrybutuN = wartość_atrubutuN

ASOCJACJE oznaczane są za pomocą odcinków łączących obiekty.
Na odcinkach tych dodatkowo umieszcza się nazwy asocjacji.

nazwa

Obiekt1

Obiekt2

background image

Przykład diagramu obiektów

Diagram reprezentuje Jasia Kowalskiego i jego ulubieńców.

Jaś : Osoba

Jaś ma 10 lat i mieszka we Wrocławiu.

Imie = Jaś
Nazwisko = Kowalski

Ile_Lat = 10
Miasto = Wrocław

Imie = Tweedy
Kolor = żółty

Tweedy : Kanarek

i kanarkiem-Tweedym

pod_opieką

Opiekuje się

dwoma zwierzakami: psem-Reksiem

Reksio : Pies

Imie = Reksio
Ile_Lat = 5

pod_opieką

background image

Diagramy pakietów

•Pakiety są zestawami elementów modelu wraz z
zachodzącymi pomiędzy nimi zależnościami.

•Diagramy pakietów mogą być istotne dla dużych projektów,
składających się z wielu modułów funkcjonalnych ze złożonymi
zależnościami pomiędzy modułami.

• Pakiety mogą być zagnieżdżane. Zależności pomiędzy
pakietami są przedstawiane w postaci strzałki z przerywaną
linią.

•Pakiety są traktowane jako obiekty należące do swoich klas,
które mogą podlegać związkom dziedziczenia.

background image

Diagramy pakietów

edytor

Pakiety są rysowane jako prostokąty
z etykietą na górze.

sterownik

elementy
diagramów
graficznych

elementy
dziedziny
zastosowań

rdzeń
grafiki

rdzeń grafiki Motif

rdzeń grafiki Windows

Motif

MS Windows

System
okienkowy

Jeżeli zawartość pakietu nie jest
pokazana to wówczas nazwa pakietu
jest wpisana do prostokąta.

background image

Koniec


Document Outline


Wyszukiwarka

Podobne podstrony:
8(45) Diagramy klas cz2
Serwis sprzetu domowego z diagramem klas
Diagram Klas
Diagram klas
Diagram Klas
7(45) Diagramy klas wprowadzenie
diagram klas 2
diagram klas 2
Diagram klas i obiektow ZIN 3 i Nieznany
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
DIAGRAM KLAS
Lab3 Diagram Klas
5 Diagram klas

więcej podobnych podstron