Mapowanie dziedziczenia z UML do Java

1 Mapowanie dziedziczenia z UML do JavaPiotr Kurek Kuba S...
Author: Gabrjel Dziechciarz
0 downloads 2 Views

1 Mapowanie dziedziczenia z UML do JavaPiotr Kurek Kuba Siatkowski Kurek/Siatkowski

2 Poruszane problemy Disjoint Overlapping Complete IncompleteMulti-Inheritance Multi-Aspect Dynamic Kurek/Siatkowski

3 Disjoint a overlappingRóż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

4 Przykłady Overlapping Kurek/Siatkowski

5 Przykłady Disjoint Kurek/Siatkowski

6 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

7 Prawdziwe życie Complete Kurek/Siatkowski

8 Prawdziwe życie Incomplete Kurek/Siatkowski

9 Dziedziczenie wieloaspektoweSpecjalizacja następuje po kilku aspektach Kurek/Siatkowski

10 Dziedziczenie wielokrotneDziedziczenie z kilku klas jednocześnie Jako takie w Java nie istnieje !!! ;-p Kurek/Siatkowski

11 Dziedziczenie dynamiczneStudent może zmieniać stan, co może być modelowane przez dziedziczenie dynamiczne Kurek/Siatkowski

12 Implementacje Kurek/Siatkowski

13 Disjoint Jest domyślnym sposobem dziedziczenia w Java Kurek/Siatkowski

14 Overlapping Wymaga wprowadzenia nowej klasy mającej atrybuty klas, które łączy. { overlapping } Kurek/Siatkowski

15 Overlapping class Sportowiec{ } class Biegacz extends Sportowiec{class Skoczek extends Sportowiec{ class KombinatorNorweski extends Sportowiec{ Kurek/Siatkowski

16 Complete Klasa nadrzędna jest abstrakcyjna abstract class Czlowiek{ }class Kobieta extends Czlowiek{ class Mezczyzna extends Czlowiek{ Kurek/Siatkowski

17 Incomplete Klasa generalizująca nie może być abstrakcyjnaclass Drzewo{ } class Jablon extends Drzewo{ class Grusza extends Drzewo{ class Brzoza extends Drzewo{ Kurek/Siatkowski

18 Wielodziedziczenie Poprzez przekształcenie w dziedziczenia w kompozycje Poprzez interfejsy Kurek/Siatkowski

19 Wielodziedziczenie poprzez kompozycjeclass Jednoslad{ Motor motor; Rower rower; } class Motor{} class Rower{} Kurek/Siatkowski

20 Wielodziedziczenie przez intefejsyinterface 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

21 Dziedziczenie wieloaspektoweKurek/Siatkowski

22 Dziedziczenie dynamiczneTrudne 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