mas622-1

advertisement
Mapowanie dziedziczenia z
UML do Java
Piotr Kurek
Kuba Siatkowski
Kurek/Siatkowski
1
Poruszane problemy
Disjoint
 Overlapping
 Complete
 Incomplete
 Multi-Inheritance
 Multi-Aspect
 Dynamic

Kurek/Siatkowski
2
Disjoint a overlapping


Różnica polega na rozłączności
zbiorów
Overlapping


Zbiory nie są rozłączne
Disjoint

Przynależność do jednego zbioru
wyklucza przynależność do innego
Kurek/Siatkowski
3
Przykłady

Overlapping
Sportowiec
cz
ek
Sk
o
B
z
ac
g
ie
Kombinacja
norweska
Sportowiec
Biegacz
Kurek/Siatkowski
Skoczek
4
Przykłady

Disjoint
owiek
ł
z
C
Kobieta
Czlowiek
Mężczyzna
Kobieta
Kurek/Siatkowski
Mężczyzna
5
Complete a incomplete


Różnica polega na kompletności
odwzorowania obiektów klasy
nadrzędnej przez klasy podrzędne
Complete



Wszystkie obiekty są odwzorowane w
klasach podrzędnych
Klasa nadrzędna jest abstrakcyjna
Incomplete

Nie wszystkie obiekty są odwzorowane w
klasach podrzędnych
Kurek/Siatkowski
6
Prawdziwe życie

Complete
Przesy
łka
Niedostarczona
Przesyłka
Dostarczona
Dostarczona
Kurek/Siatkowski
Niedostarczona
7
Prawdziwe życie

Incomplete
Disco
Disko Italiano
Disco
Discopolo
Bounce
Discopolo
Kurek/Siatkowski
Disko Italiano
Bounce
8
Dziedziczenie
wieloaspektowe

Specjalizacja następuje po kilku
aspektach
Rower
materiał
zastosowanie
Górski
Szosowy
Aluminiowy
Kurek/Siatkowski
Carbonowy
9
Dziedziczenie
wielokrotne

Dziedziczenie z kilku klas
Jednoślad
jednocześnie
Motor
Jako takie w Java
nie istnieje !!! ;-p
Kurek/Siatkowski
Rower
Motorower
10
Dziedziczenie
dynamiczne

Student może zmieniać stan, co
może być modelowane przez
dziedziczenie dynamiczne
Student
<<dynamic>>
Trzeźwy
Pijany
Kurek/Siatkowski
Skacowany
11
Implementacje
Kurek/Siatkowski
12
Disjoint

Jest domyślnym sposobem
dziedziczenia w Java
Czlowiek
Kobieta
Kurek/Siatkowski
Mężczyzna
13
Overlapping

Wymaga wprowadzenia nowej
klasy mającej atrybuty klas, które
łączy.
Sportowiec
Sportowiec
{ overlapping }
Biegacz
Skoczek
Biegacz
Kurek/Siatkowski
Kombinator norweski
Skoczek
14
Overlapping
class Sportowiec{
}
class Biegacz extends Sportowiec{
}
class Skoczek extends Sportowiec{
}
class KombinatorNorweski extends
Sportowiec{
}
Kurek/Siatkowski
15
Complete

Klasa nadrzędna jest abstrakcyjna
abstract class Czlowiek{
}
class Kobieta extends Czlowiek{
}
class Mezczyzna extends Czlowiek{
}
Kurek/Siatkowski
16
Incomplete

Klasa generalizująca nie może być
abstrakcyjna
class
}
class
}
class
}
class
}
Drzewo{
Jablon extends Drzewo{
Grusza extends Drzewo{
Brzoza extends Drzewo{
Kurek/Siatkowski
17
Wielodziedziczenie


Poprzez przekształcenie w
dziedziczenia w kompozycje
Poprzez interfejsy
Kurek/Siatkowski
18
Wielodziedziczenie
poprzez kompozycje
Jednoślad
Jednoślad
0..1
Motor
Rower
Motorower
Motor
1
0..1
Rower
class Jednoslad{
Motor motor;
Rower rower;
}
class Motor{}
class Rower{}
Kurek/Siatkowski
19
Wielodziedziczenie
przez intefejsy
interface Palny {
int LATWOPALNY = 2;
int PALNY = 1;
int NIEPALNY = 0;
void zapal (int palnosc);
}
class Material implements Palny{
public void zapal (int palnosc){
if (palnosc == LATWOPLANY ||
palnosc == PALNY)
System.out.println(„splonal”);
else
System.out.println(„przetrwal”);
}
}
Kurek/Siatkowski
20
Dziedziczenie
wieloaspektowe
Kurek/Siatkowski
21
Dziedziczenie
dynamiczne


Trudne w implementacji
Jedną z metod jest kopiowanie
obiektów pomiędzy klasami,
usuwanie obiektów źródłowych i
zmiana (innej już) referencji
kopiowanie
Paleciak
Widlak
transporter
Kurek/Siatkowski
22
Download