Diagramy klas i obiektów
zastosowanie do modelowania w języku UML
Agnieszka Niegowska
&
Grzegorz Widziszowski
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.
nazwa językowy identyfikator obiektu
najważniejsze
typ czyli statyczna budowa obiektu (atrybuty)
inwarianty
metody operacje, które można wykonać na obiekcie
inne możliwe zdarzenia mogące zajść w operacjach na obiekcie
lub wyjÄ…tki
lista określająca, które atrybuty dostępne są
eksportowa z zewnÄ…trz
Ograniczenia którym msi podlegać każdy obiekt
...
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.
Zastosowanie diagramów klas
zapis modelu pojęciowego
reprezentują pojęcia w dziedzinie
zastosowań, które aktualnie
sformalizowana specyfikacja
podlegajÄ… analizie sformalizowana
wizja wyobrażeń powstających
danych i metod
podczas myślenia nad problemem
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
Tworzenie diagramu klas
kolejność wykonywania nie jest ustalona
Identyfikacja klas i obiektów
i zależy zarówno od stylu pracy,
jak i od konkretnego problemu.
Identyfikacja związków pomiędzy klasami
Identyfikacja i definiowanie pól (atrybutów)
Identyfikacja i definiowanie metod i komunikatów
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
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
+
lista atrybutów
-atrybut2 : typ = wart_pocz2
#atrybut3 : typ = wart_pocz3
#operacja1(lista arg) : typ
-operacja2(lista arg) : typ lista metod
+operacja3(lista arg) : typ
Na diagramie klasy dodatkowo określa się widoczność atrybutów
i metod przez umieszczanie przed nimi odpowiedniego symbolu:
+ publiczne (public)
- prywatne (private)
# chronione (protected)
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
Dziedziczenie wieloaspektowe
Stosuje siÄ™ specjalne oznaczenia, gdy zakresy znaczeniowe klas
Można wtedy zadeklarować aspekt według
nie są rozłączne.
którego specjalizuje się dany obiekt
oraz oznaczyć ten fakt
środek transportu
teren teren napędnapęd
{overlapping} {overlapping}
pojazd pojazd pojazd pojazd
lÄ…dowy wodny wiatrowy silnikowy
ciężarówka amfibia żaglówka
overlapping podział nierozłączny (przecięcie zakresów
znaczeniowych nie jest zbiorem pustym)
Dziedziczenie wieloaspektowe
drzewo
{disjoint,incomplete}
dÄ…b sosna brzoza
Dodatkowo można również odnotować fakty, że:
" podklasy są rozłączne (disjoint)
" nie pokrywają całego zakresu znaczeniowego ich nadklasy
(incomplete)
Dziedziczenie wielokrotne
gdy klasa wywodzi siÄ™
pojazd
bezpośrednio od więcej niż 1 klasy
ciężar
...
prędkość_ekspl()
pojazd_lÄ…dowy pojazd_wodny
ilość_kół wyporność
max_prędkość 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.
Ograniczenia
Na diagramie klas można zawrzeć ograniczenia
dotyczące klas oraz związków między nimi.
* jest_członkiem
*
{podzbiór}
Osoba Komitet
1 jest_przewodniczÄ…cym
*
podwładny
*
* Pracuje_dla 0..1
Firma
Osoba pracownik pracodawca
0..1
szef
Ograniczenie
{Osoba.pracodawca=
lub adnotacja
Osoba.szef.pracodawca}
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
{
void wstaw ( T nowyElement );
void usuń ( T pewienElement );
}
T
Zbiór
Parametr (typ)
Klasa parametryzowana
Wstaw(T)
Usuń(T)
Asocjacje
czyli powiązania pomiędzy obiektami klas
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
firma osoba
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ąć.
Asocjacje - liczność
Asocjacje mogą być wyposażone w oznaczenia liczności:
A A A A A A A A A A A A A A A
B B B B B B B B B
AB : min=0, max=1
AB : min=1, max=1 AB : min=1, max=N
BA : min=0, max=N
BA : min=1, max=N BA : min=0, max=N
A A A
1..* 0..* 0..*
0..1
1..*
B B B
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Ä…)
Przykład
To już połowa
Tu jesteÅ›
30
1
Asocjacje nazwy ról
Asocjacje mogą być także wyposażone w dodatkowe nazwy ról
(przy odpowiednich końcach).
* Pracuje dla 1..*
firma osoba
pracodawca
pracownik
szef
stanowisko
0..1
zarobek
podwładny *
Kieruje
Asocjacje mogą posiadać atrybuty. W tym celu przewidziano
linię przerywaną łączącą daną asocjacją z klasą, określaną jako:
klasa asocjacji .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).
Asocjacje skierowane
Na diagramach UML można zaznaczyć kierunek nawigacji
wzdłuż danej asocjacji
Zamówienie Klient
* 1
dataZłożenia nazwisko
czyZapłacone adres
sumaDoZapłaty wiarygodność()
Realizuj()
Zamknij()
1
*
* 1
PozycjaZamówienia
produkt
ilość
cena
W takim przypadku asocjacja jest
czyZrealizowana
rysowana w postaci strzałki; nawigacja
jest możliwa zgodnie z jej kierunkiem,
ale nie odwrotnie.
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).
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.
Przykład agregacja i kompozycja
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.
Punkt
1
3..*
kompozycja
kompozycja
Wielobok OkrÄ…g
promień
*
*
Styl
agregacja
agregacja
kolor
czyWypełniony
1
1
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.
Różna postać zapisu kompozycji
Okno Okno
PasekPrzesuwny[2]:Suwak
Tytuł:Nagłówek
Ciało:Panel
pasekPrzesuwny 2 tytuł 1 ciało 1
suwak nagłówek panel
Okno
Okno
2
PasekPrzesuwny:Suwak
2
Suwak
PasekPrzesuwny
1
Tytuł:Nagłówek
1
Nagłówek
Tytuł
1
Ciało:Panel
1
Panel
Ciało
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
<>
Klient
Rodzaje stereotypów
ZADAC
" proces
" wÄ…tek
WZAÓW
PAKIETÓW
KLAS I OBIEKTÓW
" zdarzenie
TYPU OBIEKTÓW
" wyjÄ…tek
" interfejs
" obiekty rzeczywiste
" metaklasa
" obiekty sterujÄ…ce
" udogodnienie
" obiekty interfejsu
Przykład równoważnych oznaczeń:
<>
<>
Pióro świetlne
Pióro świetlne
Pióro świetlne
lokalizacja : Punkt
lokalizacja : Punkt lokalizacja : Punkt
Pióro świetlne
uruchom(tryb)
uruchom(tryb) uruchom(tryb)
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.
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
Przykład diagramu obiektów
Diagram reprezentuje Jasia Kowalskiego i jego ulubieńców.
Opiekuje siÄ™
Jaś ma 10 lat i mieszka we Wrocławiu.
dwoma zwierzakami: psem-Reksiem i kanarkiem-Tweedym
Tweedy : Kanarek
pod_opiekÄ…
Imie = Tweedy
JaÅ› : Osoba
Kolor = żółty
Imie = JaÅ›
Nazwisko = Kowalski
Ile_Lat = 10
pod_opiekÄ…
Reksio : Pies
Miasto = Wrocław
Imie = Reksio
Ile_Lat = 5
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.
Diagramy pakietów
Pakiety sÄ… rysowane jako prostokÄ…ty
edytor
z etykietą na górze.
Jeżeli zawartość pakietu nie jest
sterownik
pokazana to wówczas nazwa pakietu
jest wpisana do prostokÄ…ta.
elementy
diagramów
graficznych
elementy
rdzeń System
dziedziny
grafiki okienkowy
zastosowań
rdzeń grafiki Motif Motif
rdzeń grafiki Windows MS Windows
Koniec
Wyszukiwarka
Podobne podstrony:
Diagramy klas
Diagram klas
Diagram klas UÅš
diagram klas
Diagram klas projekt
5 Diagram klas
uml diagramy klas
07 Diagram sekwencji
Konkurs czytelniczy dla klas pierwszych
Phase Diagram of Ultrafine Carbon
Toyota Supra? Wiring Diagrams
Test1 dla klas 5 6 z poprawna polszczyzną na codzień(1)
więcej podobnych podstron