Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Modelowanie oprogramowania w języku UML
Wykład 2
1
Modelowanie oprogramowania w języku UML, Michał Śmiałek
Podstawy modelowania obiektowego
� Jak modelować świat obiektowo?
� Obiekty
� Klasy
� Diagramy języka UML
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Obiekty jako wspólny język w projekcie
Modelowanie obiektowe polega na:
� znajdowaniu obiektów w naszym otoczeniu,
� opisywaniu struktury i dynamiki działania obiektów,
� klasyfikacji obiektów,
� opisywaniu struktury powiązań klas obiektów, oraz
� opisywaniu dynamiki współpracy obiektów podczas realizacji funkcjonalności systemu
zamawiający
„modelarz”
programista
Modelowanie oprogramowania w języku UML
Wykład 2
2
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Obiekty: tożsamość, stan, zachowanie
włącz silnik!
Kolor=
brązow
y
nr nadw
ozia=AB
C-3597
564
stan s
ilnika =
wyłącz
ony
sąsiada
mój
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Notacja obiektów
mój_samochódsamochód_kolegi
mój_samochód
silniknumer nadwozia="ABC-3597564"
kolor=brąz
kierunek_skrętu=30
silnik
numer="HH22123"
pojemność=1200
status=wyłączony
Modelowanie oprogramowania w języku UML
Wykład 2
3
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Rozróżnianie tożsamości obiektów
Stan obiektu to zbiór wartości (cech charakterystycznych) wszystkich jego właściwości. Stan obiektu zmienia się w czasie.
Tożsamość obiektu wyróżnia obiekt wśród innych obiektów jako osobną jednostkę. Tożsamość jest wyróżnioną cechą obiektu, która pozostaje niezmienna przez cały czas życia tego obiektu.
mój_samochód samochód_kolegi
numer_nadwozia="ABC-3597564"
kolor=brąz
kierunek_skrętu=30
numer_nadwozia="ABC-3597564"
kolor=brąz
kierunek_skrętu=30
<<identity>> num=sX000001 <<identity>> num=sX000002
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Zachowanie obiektów
Zachowanie obiektu to zbiór usług, które obiekt potrafi wykonywać na rzecz innych obiektów.
Obiekty mogą prosić inne obiekty o wykonanie odpowiednich usług. Obiekt reaguje na taką prośbę, jeżeli usługa jest w zbiorze obsługiwanych przez niego usług. Prośby obiektów o wykonanie usług będziemy nazywali komunikatami.
Po wykonaniu usługi może nastąpić:
� Zmiana stanu obiektu
� Dostarczenie wynikuprzetwarzania
Modelowanie oprogramowania w języku UML
Wykład 2
4
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagramy sekwencji
mój_samochód silnikja
stan_oleju=0%
stan_paliwa=53%
uruchom_się(kod_klucza)
[kod klucza O.K.]: włącz_się
"zepsuty"
"zepsuty silnik"
linia życiakomunikat
warunekwykonanie usługi
notatka
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Klasa podobnych obiektów
SamochódOsobowy
Modelowanie oprogramowania w języku UML
Wykład 2
5
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Klasa jako typ dla obiektów
Klasa jest opisem grupy obiektów o jednakowym zestawie właściwości i sposobie zachowania. Opis klasy stanowi pewnego rodzaju wzornik dla tworzenia obiektów tej klasy (tzw. instancji klasy). Ten wzornik zawiera:
� nazwę klasy,
� zestaw właściwości jednakowych dla wszystkich obiektów klasy,
� zestaw usług obsługiwanych przez wszystkie obiekty klasy.
Samochód
mój_samochód :Samochód
samochód_kolegi :Samochód
«instance»
«instance»
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Klasa jako „fabryka” obiektów
SamochódOsobowy
1: poproszę dwa samochody
2: oto one
3: jedź!
Modelowanie oprogramowania w języku UML
Wykład 2
6
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Różne postacie klasy w języku UML
Samochód
+ uruchom_się(kod_klucza : )+ wyłącz_się()+ skęć(kąt : )+ zahamuj()
Samochód
- stan_paliwa: - numer_nadwozia: - kierunek_skrętu: - kolor:
+ uruchom_się()+ wyłącz_się()+ skęć()+ zahamuj()
Samochód
- stan_paliwa: - numer_nadwozia: - kierunek_skrętu: - kolor:
+ uruchom_się()+ wyłącz_się()+ skęć()+ zahamuj()
tagsodpowiedzialny = Robert
Samochód
- stan_paliwa: - numer_nadwozia: - kierunek_skrętu: - kolor:
Samochód
a)
b)c)
d)
e)
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Klasa – główny element modelowania i programowania
zamawiającyprogramista
Samochód
Samochód
- stan_paliwa: - numer_nadwozia: - kierunek_skrętu: - kolor:
+ uruchom_się()+ wyłącz_się()+ skęć()+ zahamuj() class Samochód
{
int stan_paliwa;
String numer_nadwozia;
bool uruchom_sie();
}
mój:Samochódkolegi:Samochód
Modelowanie oprogramowania w języku UML
Wykład 2
7
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Klasy i obiekty w działającym systemie
Samochód
- stan_paliwa: - numer_nadwozia: - kierunek_skrętu: - kolor:
+ uruchom_się( )+ wyłącz_się()+ skęć( )+ zahamuj()
mój_samochód :Samochód
samochód_kolegi :Samochód
«instance»
«instance»uruchom_się()
\\kod
wyłącz_się()
\\kod
skręć()
\\kod
zahamuj()
\\kod
stan_paliw
a=53
num
er_nadwozia
=„AB235”
kierunek_skrętu
=35
kolor=zielony
stan_pa
liwa=
91nu
mer_nad
wozia
=„AD412”
kierunek_skrętu
=75
kolor=zielony
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Ćwiczenie
Proszę narysować diagram klas oraz diagramy sekwencji (funkcje „main” i „on_click” dla poniższego kodu.
class wnd : event {
cntrl c;
wnd(cntrl cn) {
c = cn;
}
void on_click(){
c.run();
}
void show(int n){
printf(n);
}
}
class cntrl {
wnd w; dom d;
cntrl(dom dm) {
d = dm;
d.init();
}
void set_wnd(wnd wn){
w = wn;
}
void run(){
num = d.get_next();
w.show(num);
}
void show(int n){
printf(n);
}
}
class dom {
int number;
voin init() {
number = 0;
}
int get_next(){
number = number +1;
return number;
}
main() {
dom d = new dom();
cntrl c = new cntrl(d);
wnd w = new wnd(c);
UI.set_event(wnd);
}
Modelowanie oprogramowania w języku UML
Wykład 2
8
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagramy modelowania struktury
DiagramOpisuStruktury
DiagramStruktury
DiagramKlas DiagramObiektów DiagramPakietów
DiagramSkładowych
DiagramKomponentów
DiagramWdrożenia
cd Diagram klas
Samochód
Właściciel
Dowód rejestracyjny
udokumentowanie
przynależność
własność
id Diagram komponentów
AplikacjaRejestracj i
DaneOsoboweIOsoby
DaneRej estracji
IRejestracja IStatystyki
UtrwalanieDanychIDane
cd Diagram obiektów
drugi :Samochód
pierwszy :Samochód
osoba :Właściciel
dok :Dowód rejestracyjny
status=niezarejestrowany
małżonek :Właściciel
cd Diagram pakietów
PojazdyOsoby
RejestracjaPojazdów
dd Diagram wdrożenia
stacja_pc
«jar»
Rejestracja.jar
serwer_aplikacyjny
serwer_bazy_danych
«SQL db»
DBAccess.db
«jar»
Wydzial.jar
«jar»
Statystyki.jar
cd Diagram składowych
Samochód
k : Koło [4]
p : Podwozie [1]
s : Silnik [0..1]
z : Koło [0..1]
<<instance>><<instance>><<instance>>
<<instance>>
<<instance>>
<<instance>>
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram klas
cd Diagram klas
Samochód
Właściciel
Dowód Rejestracyjny
współwłasność
udokumentowanie
przynależność
własność
Modelowanie oprogramowania w języku UML
Wykład 2
9
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram pakietów
cd Diagram pakietów
PojazdyOsoby
RejestracjaPojazdów
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram komponentów
id Diagram komponentów
AplikacjaRejestracji
DaneOsoboweIOsoby
DaneRejestracj i
IRejestracja IStatystyki
UtrwalanieDanychIDane
Modelowanie oprogramowania w języku UML
Wykład 2
10
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram obiektów
cd Diagram obiektów
drugi :Samochód
pierwszy :Samochód
osoba :Właściciel
dok :Dowód Rejestracyjny
status=niezarejestrowany
małżonek :Właściciel
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram składowych
cd Diagram składowych
Samochód
k : Koło [4]
p : Podwozie [1]
s : Silnik [0..1]
z : Koło [0..1]
Modelowanie oprogramowania w języku UML
Wykład 2
11
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram wdrożenia
dd Diagram wdrożenia
stacja_pc
«jar»
Rejestracja.jar
serwer_aplikacyjny
serwer_bazy_danych
«SQL db»
DBAccess.db
«jar»
Wydzial.jar
«jar»
Statystyki.jar
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagramy opisu dynamiki
DiagramOpisuDynamiki
DiagramInterakcji DiagramCzynności DiagramMaszynyStanówDiagramPrzypadkówUżycia
DiagramSekwencji DiagramKomunikacji DiagramNastępstwaDiagramOpisuInterakcji
ad Diagram czynności
Ro zpoczęcie rejestracji
Zako ńcze nie rejestracji
Rej estrator podaj e nazwisko do re jestracj i.
System wyszukuje w łaściciela o podanym nazw isku.
czy zna lezniono?
System rej estruj e samochód znalezionego właściciela .
System powia damia rej estra tora o za rej estrowaniu samochodu.
System powiadamia rej estratora o nieznalezi eniu właścicie la.
[nie]
[tak]
sm Diagram maszyny stanów
Początek
Koniec
Wyprodukowany
Zakupiony
Zarej estrowany
Wyrej estrowany
Zarej estrowany tymczasowo
Wycofany
sd Diagram opisu interakcj i
Rozpoczęcie
Zakończenie
sd interakcj a1
:Właściciel
:GUI :Właścic iel
zarejestruj_samochód(n)
porównaj_dane(n)
porównaj_dane=true
sd interakcj a2
:GUI znal :Właściciel s :Samochód
zaznacz_rejestrację()
rejestruj()
komunikat(O.K.)
sd interakcja3
:GUI
komunikat(nie zn aleziono)
td Diagram następstwa
s :Samochód
Wyprodukowany
Zakupiony
w :Właściciel
Zdecydowany
0 10 20 30 40 50 60 70 80 90 100
cd Diagram komunikacji
:Właściciel znaleziony :Właściciel
s :Samochódapl :GUI
:Rej estrator
sd Diagram sekwencj i
:Rejestrator
:Właściciel s :Samochódapl :GUI znaleziony:Właściciel
loop znajdź
[porównaj_dane=false]
zarejestruj_samochód(nazwi sko)
boolean:=porównaj_dane(nazwi sko)
zaznacz_rej estrację()
rejestruj()
ud Diagram przypadków użycia
System ,, Przyjazny Wydzia ł Komunikacji "
Rej estra tor
Właścicie l
Zarejestrowanie wydania dowodu rejestracyj nego
Zgłoszenie chęci re jestrac ji samochodu
Zgłoszenie zapotrzebowania na dowód rej estracyj ny
Sprawdzenie stanu rej estracj i
<<instance>><<instance>><<instance>><<instance>>
<<instance>>
<<instance>><<instance>>
Modelowanie oprogramowania w języku UML
Wykład 2
12
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram przypadków użycia
ud Diagram przypadków użycia
System ,, Przyjazny Wydział Komunikacji "
Rejestrator
Właściciel
Zarejestrowanie wydania dowodu rejestracyjnego
Zgłoszenie chęci rejestracji samochodu
Zgłoszenie zapotrzebowania na dowód rejestracyjny
Sprawdzenie stanu rejestracji
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram czynności
ad Diagram czynności
Rozpoczęcie rejestracji
Zakończenie rejestracji
Rejestrator podaje nazwisko do rejestracji.
System wyszukuje właściciela o podanym nazwisku.
czy znalezniono?
System rejestruje samochód znalezionego właściciela.
System powiadamia rejestratora o zarejestrowaniu samochodu.
System powiadamia rejestratora o nieznalezieniu właściciela.
[nie]
[tak]
Modelowanie oprogramowania w języku UML
Wykład 2
13
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram sekwencji
sd Diagram sekwencji
:Rejestrator
:Właściciel s :Samochódapl :GUI znaleziony:Właściciel
loop znajdź
[porównaj_dane=false]
zarejestruj_samochód(nazwisko)
boolean:=porównaj_dane(nazwisko)
zaznacz_rejestrację()
rejestruj()
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram komunikacji
cd Diagram komunikacji
:Właściciel znaleziony :Właściciel
s :Samochódapl :GUI
:Rejestrator1: zarejestruj_samochód()
2: porównaj_dane()
3: zaznacz_rejestrację()
3a: rejestruj()
Modelowanie oprogramowania w języku UML
Wykład 2
14
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram opisu interakcjisd Diagram opisu interakcj i
Rozpoczęcie
Zakończenie
sd interakcja1
:Właściciel
:GUI :Właściciel
zarejestruj_samochód(n)
porównaj_dane(n)
porównaj_dane=true
sd interakcja2
:GUI znal :Właściciel s :Samochód
zaznacz_rejestrację()
rejestruj()
komunikat(O.K.)
sd interakcja3
:GUI
komunikat(nie znaleziono)
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram następstwa
td Diagram następstwa
s :Samochód
Wyprodukowany
Zakupiony
w :Właściciel
Zdecydowany
0 10 20 30 40 50 60 70 80 90 100
Modelowanie oprogramowania w języku UML
Wykład 2
15
Modelowanie oprogramowania w języku UML
Michał Śmiałek
Diagram maszyny stanów
sm Diagram maszyny stanów
Początek
Koniec
Wyprodukowany
Zakupiony
Zarejestrowany
Wyrejestrowany
Zarejestrowany tymczasowo
Wycofany