7(45) Diagramy klas wprowadzenie

background image

1

1

UML - Diagramy klas

UML - Diagramy klas

wprowadzenie

wprowadzenie

background image

2

2

Plan wykładu

Plan wykładu

Klasy w UML

Klasy w UML

Atrybuty klasy

Atrybuty klasy

Operacje klasy

Operacje klasy

Widoczność atrybutów i operacji

Widoczność atrybutów i operacji

Zasięg atrybutów i operacji

Zasięg atrybutów i operacji

Dziedziczenie

Dziedziczenie

Klasy abstrakcyjne w UML

Klasy abstrakcyjne w UML

background image

3

3

Klasy w

Klasy w

UML

UML

background image

4

4

Klasyfikacja diagramów UML 2.0

Klasyfikacja diagramów UML 2.0

1. Diagramy struktury

1. Diagramy struktury

Diagram klas (class diagram)

Diagram klas (class diagram)

Diagram komponentów (component diagram)

Diagram komponentów (component diagram)

Diagram struktur złożonych, diagram składowych, (composite

Diagram struktur złożonych, diagram składowych, (composite

structure

structure

diagram)

diagram)

Diagram wdrożenia (deployment diagram)

Diagram wdrożenia (deployment diagram)

Diagram obiektów (object diagram)

Diagram obiektów (object diagram)

Diagram pakietów (package diagram)

Diagram pakietów (package diagram)

2. Diagramy zachowania

2. Diagramy zachowania

Diagram czynności (activity diagram)

Diagram czynności (activity diagram)

Diagram przypadków użycia (use case diagram)

Diagram przypadków użycia (use case diagram)

Diagram maszyny stanów (state machine diagram)

Diagram maszyny stanów (state machine diagram)

Diagram interakcji

Diagram interakcji

- Diagram sekwencji (sequence diagram

- Diagram sekwencji (sequence diagram

- Diagram komunikacji (communication diagram)

- Diagram komunikacji (communication diagram)

- Diagram przeglądu interakcji; diagram opisu interakcji

- Diagram przeglądu interakcji; diagram opisu interakcji

(interaction overview diagram)

(interaction overview diagram)

- Diagram czasowy,diagram następstwa (timing diagram)

- Diagram czasowy,diagram następstwa (timing diagram)

background image

5

5

Określenie klasy

Określenie klasy

Klasa definiuje

Klasa definiuje

wzorzec

wzorzec

według,

według,

którego tworzone są obiekty.

którego tworzone są obiekty.

Obiekty mają reprezentować

Obiekty mają reprezentować

koncepcje w programie, a nie

koncepcje w programie, a nie

program

program

background image

6

6

Co to jest diagram klas?

Co to jest diagram klas?

Diagram to

Diagram to

graficzne przedstawienie

graficzne przedstawienie

statycznych, deklaratywnych

statycznych, deklaratywnych

elementów dziedziny przedmiotowej

elementów dziedziny przedmiotowej

oraz

oraz

związków

związków

między nimi.

między nimi.

background image

7

7

Klasa

Klasa

Opis zbióru obiektów, które

Opis zbióru obiektów, które

mają takie same

mają takie same

Atrybuty

Atrybuty

– opisują stan

– opisują stan

Najczęściej typy proste lub biblioteczne

Najczęściej typy proste lub biblioteczne

Nie posiadają własnych reguł biznesowych

Nie posiadają własnych reguł biznesowych

Ich wartości są istotne dla obiektów klasy

Ich wartości są istotne dla obiektów klasy

Operacje

Operacje

– opisują zachowanie

– opisują zachowanie

Usługi oferowane przez każdy obiekt klasy

Usługi oferowane przez każdy obiekt klasy

Zwykle powodują zmianę stanu obiektu

Zwykle powodują zmianę stanu obiektu

Dzielą się na zapytania i polecenia

Dzielą się na zapytania i polecenia

Związki

Związki

– uogólnienia, realizacje, zależności, asocjacje,

– uogólnienia, realizacje, zależności, asocjacje,

Zachowanie klasy często zależy od zachowania innej

Zachowanie klasy często zależy od zachowania innej

klasy

klasy

Znaczenie

Znaczenie

background image

8

8

Zadania diagramu klas

Zadania diagramu klas

Modelowanie słownictwa systemu

Modelowanie słownictwa systemu

(podejmowanie decyzji, której

(podejmowanie decyzji, której

abstrakcje są częścią rozważanego

abstrakcje są częścią rozważanego

systemu i określenie ich zobowiązań)

systemu i określenie ich zobowiązań)

Modelowanie prostych koopercji

Modelowanie prostych koopercji

(określenie zbioru kooperujących klas i

(określenie zbioru kooperujących klas i

związków między nimi; realizują one

związków między nimi; realizują one

wspólnie zadania które są niemożliwe

wspólnie zadania które są niemożliwe

do wykonania w pojedynkę; pokazanie

do wykonania w pojedynkę; pokazanie

różnorakich sposobów współpracy

różnorakich sposobów współpracy

elementów ze słownika)

elementów ze słownika)

background image

9

9

Diagram klas

Diagram klas

Diagram klas wyróżnia się spośród

Diagram klas wyróżnia się spośród

diagramów

diagramów

specyfiką

specyfiką

swojej

swojej

zawartości

zawartości

.

.

Zawiera na ogół następujące

Zawiera na ogół następujące

schematy:

schematy:

klasy

klasy

    

    

  

  

interfejsy

interfejsy

kooperacje

kooperacje

zależności, uogólnienia i powiązania

zależności, uogólnienia i powiązania

background image

10

10

Opis Klasy w UML

Klasy definiuje się w diagramach klas.

Nazwa klasy

unikatowa w obrębie danego pakietu.

(sekcja nazwy klasy)

Atrybuty

właściwości klasy.

(sekcja atrybutów)

Operacje

usługi,

których wykonania

można zażądać od

każdego obiektu klasy.

(sekcja operacji)

Okno

położenie: int

rozmiar: int

otwórz() : void

zamknij() : void

Osoba

Imie: String

Nazwisko: String

Napis

pStr: vector

len: int

<<create>>() : void

<<destroy>>() : void

background image

11

11

Klasy w UML i w C++

Atrybut

y

Operacje

Punkt

- x: int

- y: int

+ przesun(xx: int, yy: int) :

void

+ ustaw(aa: int, bb: int) :

void

Nazwa klasy pisana dużą

literą

Argume

nty

Deklaracje

metod

{class Punkt

private:

int x;

int y;

public:

void przesun(int xx, int

yy);

void ustaw(int aa, int

bb);

};

Nazwa

klasy

UML

C++

background image

12

12

Nazwa klasy

Nazwa prosta

Klient

Okno

MojModel::Okno::Komun

ikat

Nazwa ścieżkowa

Klient

Błąd

MojModel::Figura

MojModel

Okno

Komunika

t

MojModel::Okno

Figura

Błąd

Nazwa

jest napisem.Wyróżnia klasę spośród innych klas.

background image

13

13

W klasach należy

:

precyzyjne wyspecyfikować atrybuty i
metody

podać typy atrybutów,

nazwy i typy parametrów operacji,

typy wyniku zwracanego przez operację

oraz reguły hermetyzacji

background image

14

14

Poziomy tworzenia klas:

Poziomy tworzenia klas:

Poziom konceptualny

Poziom konceptualny

- zawiera

- zawiera

wyłącznie podstawowe elementy

wyłącznie podstawowe elementy

cechujące się

cechujące się

przystępnością nazw

przystępnością nazw

klas, atrybutów i operacji

klas, atrybutów i operacji

Poziom implementacyjny

Poziom implementacyjny

- jest

- jest

stopniowo wzbogacany o

stopniowo wzbogacany o

typy,

typy,

widoczność, statyczność, klasy

widoczność, statyczność, klasy

asocjacyjne, kwalifikacje, uogólnienia,

asocjacyjne, kwalifikacje, uogólnienia,

zależności czy też realizacje

zależności czy też realizacje

background image

15

15

Przykłady specyfikacji klas

background image

Notacja na oznaczenie instancji klasy

background image

17

17

Atrybuty klasy

Atrybuty klasy

background image

18

18

Atrybuty i operacje

Nazwa atrybutu

Atrybut jest nazwaną właściwością klasy. Określa zbiór wartości

jakie można przypisać do poszczególnych egzemplarzy tej klasy.

Punkt

- x: int

- y: int

+ przesun(xx: int, yy: int) :

void

+ ustaw(aa: int, bb: int) :

void

Typ

Widoczność:

- private

# protected

+ public

Operacja jest implementacją usługi,

której wykonania moża zażądać od

każdego obiektu klasy.

Typ wyniku

Nazwa operacji

Parametry operacji

background image

19

19

Atrybuty klasy

[widoczność] nazwa [liczebność] [:typ]

[=wartość_początkowa][{określenie właściwości}]

Ogólna defnicja atrybutu:

położenie

+ położenie

położenie: Punkt

Oznaczenie: []-
opcjonalnie

background image

20

20

Widoczność atrybutów i

Widoczność atrybutów i

operacji

operacji

Public

Public

- nieograniczony dostęp do

- nieograniczony dostęp do

takiego składnika, oznaczane "

takiego składnika, oznaczane "

+

+

"

"

Protected

Protected

- tylko potomkowie mają

- tylko potomkowie mają

dostęp do takiego składnika,

dostęp do takiego składnika,

oznaczane "

oznaczane "

#

#

"

"

Private

Private

- dostęp ograniczny tylko do

- dostęp ograniczny tylko do

operacji składowych, oznaczane "

operacji składowych, oznaczane "

-

-

"

"

Zasięg klasyfikatorowy odpowiada
statycznym atrybutom i metodom
zdefiniowanym w języku C++

background image

21

21

Punkt

- x: int

- y: int

+ przesun(xx: int, yy: int) :

void

+ ustaw(aa: int, bb: int) :

void

class Punkt

{

private:

int x;

int y;

public:

void przesun(int xx,

int yy);

void ustaw(int aa, int

bb);

};

.....

Punkt p1;

int k;

p1.x =14;

k = p1.y;

UML

C++

[

widoczność

] nazwa [liczebność] [:typ]

[=wartość_początkowa][{określenie właściwości}]

Widoczność atrybutów

Widoczność atrybutów

background image

22

22

Atrybuty klasy

[widoczność] nazwa [

liczebność

] [:typ]

[

=wartość_początkowa

][{określenie właściwości}]

liczebność

Liczba określająca liczbę

egzemplarzy atrybutu.

wartość początkowa

Wartość nadawana

atrybutowi w momencie utworzenia obiektu.

background image

23

23

Atrybuty klasy

[widoczność] nazwa [

liczebność

] [:typ]

[

=wartość_początkowa

][{określenie właściwości}]

Lista[0..*] : Osoba

portKonsoli[2..*] : Port

pulpitSterujacy[1] : Pulpit

pojemność[0..5]: Jednostka

nazwisko : String = (“”)

ilość : long = (0)

tablicaInt[2]: Int = (2,4)

w UML

background image

24

24

Atrybuty klasy

[widoczność] nazwa [liczebność] [:typ]

[=wartość_początkowa][{

określenie właściwości

}]

changeable

Nie ma ograniczeń co do modyfikacji

wartości atrybutu.

addOnly

W wypadku atrybutów o liczebności

większej niż jeden można dodawać nowe wartości,

ale raz dodana wartość nie może być usunięta

lub zmieniona.

frozen

Wartość atrybutu nie może być zmieniona

po zainicjowaniu obiektu (= const w języku C/C++).

background image

25

25

class Tablica

{

private:

int wektor[20];

const long id;

public:

Tablica():id(2213L)

{}

};

.....

Tablica tab;

Atrybuty – określenie właściwości

Tablica

- wektor[0..19]: int

{addOnly}

- Id: long = 2213 {frozen}

UML

C++

W języku C++ nie ma odpowiednika określenia właściwości addOnly

[widoczność] nazwa [liczebność] [:typ]

[=wartość_początkowa][{

określenie właściwości

}]

background image

26

26

Operacje klasy

Operacje klasy

background image

27

27

Punkt

- x: int

- y: int

+ przesun(xx: int, yy: int) :

void

+ ustaw(aa: int, bb: int) :

void

class Punkt

{

private:

int x;

int y;

public:

void przesun(int xx, int

yy);

void ustaw(int aa, int

bb);

};

.....

Punkt p1;

int k = -5;

p1.przesun(12,4);

p1.ustaw(k,26);

UML

C++

Widoczność operacji

Widoczność operacji

Widoczność operacji
definiowana jest tak
samo jak widoczność
atrybutów.

background image

28

28

Parametry operacji klasy -

tryb

[widoczność] nazwa [(

lista-parametrów

)]

[:typ_wyniku] [{określenie właściwości}]

in

Parametr wejściowy; nie może być modyfikowany.

out

Parametr wyjściowy; może być modyfikowany

w celu przekazania informacji wywołującemu.

inout

Parametr wejściowy; może być modyfikowany.

return

Parametr zwracany przez operacje.

background image

29

29

Parametry operacji klasy

[widoczność] nazwa [(

lista-parametrów

)]

[:typ_wyniku] [{określenie właściwości}]

W sygnaturze operacji może być dowolna liczba parametrów

(odzielane są one wówczas przecinkiem), a może nie być

ich wcale.

Deklaracja każdego z parametrów ma postać:

[tryb] nazwa : typ [= wartość_domyślna]

default(n: Nazwa = ”no name”, s: String,

i int = 5)

next(out n: int, in p: parameter)

background image

30

30

Widoczność atrybutów i

Widoczność atrybutów i

operacji

operacji

background image

31

31

Widoczność atrybutów i operacji w

Widoczność atrybutów i operacji w

UML i w C++

UML i w C++

Punkt2D

# x: int

# y: int

+ wyswietl() : void

class Punkt2D

{

protected:

int x;

int y;

public:

void wyswietl()

{cout << x << ' ' << y; }

};

class Punkt3D: public Punkt2D

{

protected:

int z;

public:

void wyswietl()

{cout << x << ' ' << y << ' ' <<

z; }

};

.....

Punkt2D p2D;

p2D.x=5;

p2D.y=0;

UML

C++

Punkt3D

# z: int

+ wyswietl() : void

background image

32

32

Zasięg atrybutów i

Zasięg atrybutów i

operacji

operacji

background image

33

33

Zasięg atrybutów i operacji

Zasięg atrybutów i operacji

Instance

Instance

- każdy egzemplarz

- każdy egzemplarz

przechowuje oddzielną wartość tego

przechowuje oddzielną wartość tego

składnika, zasięg domyślny

składnika, zasięg domyślny

Classifier

Classifier

- jest tylko jedna wartość

- jest tylko jedna wartość

tego składnika wspólna dla

tego składnika wspólna dla

wszystkich egzemplarzy, oznaczane

wszystkich egzemplarzy, oznaczane

przez podkreślenie nazwy

przez podkreślenie nazwy

Liczebność

Liczebność

- służy do ograniczenia

- służy do ograniczenia

liczby egzemplarzy konkretnej klasy

liczby egzemplarzy konkretnej klasy

lub atrybutów

lub atrybutów

background image

34

34

Wielokrotności 

Wielokrotności 

  

  

0..1

0..1

  Brak instancji lub jedna instancja.

  Brak instancji lub jedna instancja.

Notacja

Notacja

n . . m

n . . m

oznacza od n do m

oznacza od n do m

instancji.  

instancji.  

0..*

0..*

lub

lub

*

*

  Bez ograniczenia liczby

  Bez ograniczenia liczby

instancji (łącznie z brakiem instancji).  

instancji (łącznie z brakiem instancji).  

1

1

  Dokładnie jedna instancja 

  Dokładnie jedna instancja 

 

 

1..*

1..*

 

 

 Przynajmniej jedna instancja

 Przynajmniej jedna instancja

background image

35

35

Wielokrotności

Wielokrotności

GrupaUżytkowni

ków

Hasło

*

*

Użytkowni

k

1

*

Punkt końcowy ma krotność (określa ile obiektów
może brać udział w danym związku).
Przykładowa liczebność: 1, 0..1, 0..n, 1..n, 5;

background image

Liczebność

Liczebność - służy do ograniczenia liczby

Liczebność - służy do ograniczenia liczby

egzemplarzy konkretnej klasy lub atrybutów

egzemplarzy konkretnej klasy lub atrybutów

background image

37

37

Dziedziczenie

Dziedziczenie

background image

38

38

Dziedziczenie

uogólnienie

związek między

elementem ogólnym (przodkiem) a

pewnym specyficznym jego rodzajem

(potomkiem).

Uogólnienie polega na tym, że potomek

może wystąpić wszędzie tam, gdzie jest

spodziewany jego przodek a nie na

odwrót.

Potomek dziedziczy wszystkie

właściwości przodka, w szczególności

atrybuty i operacje.

Uogólnienie może posiadać nazwę.

background image

39

39

Dziedziczenie

background image

40

40

Dodatkowe elementy specyfikacji dziedziczenia

Overlapping
- pola
(pamięci)
pokrywając
e się.

Disjoint –
rozłączny,
nie
posiadający
części
wspólnej.

background image

41

41

Dziedziczenie

Wydarzenie

{root}

WypadekDrogo

wy

Pożar

Powódź

{leaf}

KotNaDrze

wie

{leaf}

Katastrofa

TrzęsienieZie

mi

Wypadek

Prozaiczne

uogólnienie

przodek

(nadklasa)

potomek

(podklasa)

korzeń

liść

background image

42

42

Dziedziczenie C++

Wydarze

nie

WypadekDro

gowy

Pożar

Powód

ź

KotNaDrze

wie

Katastrof

a

Trzęsienie

Ziemi

Wypadek

Prozaiczn

e

class Wydarzenie

{

};

class Prozaiczne : public

Wydarzenie

{

};

class KotNaDrzewie : public

Prozaiczne

{

};

class Wydarzenie

{

};

class Wypadek : public Wydarzenie

{

};

class WypadekDrogowy : public

Wypadek

{

};

class Pożar : public Wypadek

{

};

background image

43

43

Dziedziczenie

root (korzeń)

klasa bez przodków z

conajmniej jednym potomkiem.

(leaf) liść

klasa bez potomków.

background image

44

44

Wielodziedziczenie

GłównySterownikProgram

u

Sterowni

k

ProgramWbudow

any

wielodziedziczenie – (dziedziczenie

wielobazowe) klasa ma wiele przodków.

class Sterownik

{

};

class ProgramWbudowany

{

};

class GłównySterownikProgramu:

public Sterownik, public

ProgramWbudowany

{

};

background image

45

45

Polimorfizm

Polimorfizm- dosłownie „

wiele

kształtów

”.

W technologii obiektowej nazywamy
tak możliwość wystosowania ogólnego
żądania (komunikatu) i

uzyskania

różnych efektów, w zależności od
rodzaju obiektu,

który realizuje żądanie.

Polimorfizm

Operacja potomka mająca tę

samą sygnaturę co operacja przodka jest
ważniejsza (ma pierszeństwo).

background image

46

46

Dziedziczenie, polimorfizm

// Dziedziczenie

class

Wydarzenie

{

};

class Wypadek : public

Wydarzenie

{

};

void funkcja(Wydarzenie

*pW);

int main(void)

{

Wypadek wyp;

funkcja(&wyp);

return 0;

}

// Polimorfizm

class Wydarzenie

{ public:

void

wyswietl

(){ cout << "operacja

wydarzenia"; }

};

class Wypadek : public Wydarzenie

{ public:

void

wyswietl

(){ cout << "operacja

wypadku"; }

};

int main(void)

{

Wypadek wyp;

wyp.

wyswietl

();

return 0;

}

background image

47

47

Klasy abstrakcyjne w

Klasy abstrakcyjne w

UML

UML

background image

48

48

Abstrakcyjność w UML

Abstrakcyjność klas

klasy, które

nie mogą

mieć bezpośrednich egzemplarzy

klasami abstrakcyjnymi. Klasy abstrakcyjne

oznaczane są nazwami pisanymi kursywą.

Abstrakcyjność operacji

operacja nie

posiadająca implementacji.

Jej

implementację muszą zapewnić

potomkowie

. Operacje abstrakcyjne

oznaczane są nazwami pisanymi kursywą.

Operacje abstrakcyjne odpowiadają

czystym

funkcjom wirtualnym w C++

Operacja liść

operacja

nie jest

polimorficzna

. Nie może być zastąpiona w

potomkach. Operacje liście oznaczane są

napisem

leaf

umieszczonym w jej metce.

background image

49

49

Funkcje wirtualne C++

class Wydarzenie

{

public:

void

virtual wyswietl

(){ cout << "operacja

wydarzenia"; }

};

class Wypadek : public Wydarzenie

{

public:

void

wyswietl

(){ cout << "operacja wypadku"; }

};

class Katastrofa : public Wydarzenie

{

public:

void

wyswietl

(){ cout << "operacja katastrofy"; }

};

int main(void)

{

Wypadek wyp;

Katastrofa kat;

Wydarzenie *pWyd = &kat;

Wydarzenie &refWyd = wyp;

pWyd->

wyswietl

();

refWyd.

wyswietl

();

return 0;

}

background image

50

50

Abstrakcyjność w UML i C++

class Ikona

{ public:

Punkt polozenie;

void

virtual wyświetl

()=0;

};

class IkonaProstokatna : public Ikona

{ public:

int wysokosc, szerokosc;

};

class Przycisk : public IkonaProstokatna

{ public:

void

wyświetl

(){cout<< “ikona

prostokatna” ;}

};

Ikona

{root}

położenie: Punkt

wyświetl

()

pobierzID(): integer

{leaf}

IkonaProstokątna

wysokość : integer

szerokość : integer

Przycisk

wyświetl

()

background image

51

51

Abstrakcyjność

Ikona

{root}

położenie: Punkt

IkonaDowolna

Brzeg: ZestawOdcinków

wyświetl()

pobierzID(): integer

{leaf}

leżyWewn(p : Punkt) :

Boolean

IkonaProstokątna

wysokość : integer

szerokość : integer

Przycisk

wyświetl()

PrzyciskOK {leaf}

wyświetl()

klasa konkretna

klasa liść

operacja polimorficzna

klasa abstrakcyjna

operacja abstrakcyjna

operacja konkretna

klasa abstrakcyjna

background image

52

52

Podsumowanie

Podsumowanie

Klasy w UML

Klasy w UML

Atrybuty klasy

Atrybuty klasy

Operacje klasy

Operacje klasy

Widoczność atrybutów i operacji

Widoczność atrybutów i operacji

Zasięg atrybutów i operacji

Zasięg atrybutów i operacji

Dziedziczenie

Dziedziczenie

Klasy abstrakcyjne w UML

Klasy abstrakcyjne w UML


Document Outline


Wyszukiwarka

Podobne podstrony:
8(45) Diagramy klas cz2
8(45) Diagramy klas cz2
Serwis sprzetu domowego z diagramem klas
Diagram Klas
Diagram klas
Diagram Klas
Diagramy klas
11(45) Diagram interakcji cz2id 12714 ppt
10(45) Diagramy interakcjiL cz1id 11241 ppt
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

więcej podobnych podstron