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