Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf ·...

15
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

Transcript of Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf ·...

Page 1: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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

Page 2: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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

Page 3: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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

Page 4: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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

Page 5: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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ź!

Page 6: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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

Page 7: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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);

}

Page 8: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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ść

Page 9: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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

Page 10: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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]

Page 11: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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>>

Page 12: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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]

Page 13: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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()

Page 14: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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

Page 15: Podstawy modelowania obiektowegowikidyd.iem.pw.edu.pl/attachments/UML1/MODUML_Wyklad_02.pdf · 2015. 9. 23. · UML Wykład 2 1 Modelowanie oprogramowania w języku UML, Michał Śmiałek

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