Dziedziczenie całkowite (complete)
Dziedziczeniem całkowitym nazywamy sytuację kiedy zbiór podklas wyczerpuje wszystkie mozliwości z rozważanego problemu, lub kiedy projektant zablokuje możliwość rozszerzania zbioru o nowe klasy.
Przykład UML :
Kolor podstawowy
Czerony (Red) Niebieski (Blue) Zielony (Green)
{complete}
{abstract}
Dziedziczenie niecałkowite (incomplete)
Przykład UML :
Kolor
Czerony (Red) Niebieski (Blue) Zielony (Green)
{incomplete}
Dziedziczeniem niecałkowitym nazywamy sytuację kiedy zbiór podklas nie wyczerpuje wszystkich możliwości z rozważanego problemu, kiedy
projektant daje możliwość rozszerzania zbioru o nowe klasy, lub też po
prostu inne niektóre klasy np.: nieistotne dla rozważanego problemu zostały pominięte.
Dziedziczenie nie/całkowite (in/complete) JAVA
W Javie nie ma zaimplementowanej możliwości zaznaczenia czy dane dziedziczenie jest pełne czy nie. Nie ma możliwości takiej implementacji nadklasy aby wymusić określoną liczbę klas dziedziczących, stąd używamy tych pojęć tylko na etapie projektowania.
class kolorPodstawowy { }
class red extends kolorPodstawowy{
}
class green extends kolorPodstawowy{
}
class blue extends kolorPodstawowy{
}
class kolor{
}
class red extends kolor { }
class green extends kolor { }
class blue extends kolor { }
Kod napisany dla obu tych przypadków nie będzie się koncepcyjnie od siebie różnił:
Interfejs (1)
-Interfejs jest to klasa całkowicie abstrakcyjna zawierająca jedynie specyfikacje, nie zawiera implementacji.
-W UML i Javie interfejs nie zawiera atrybutów/pól, a wszystkie metody są publiczne.
Interfejs (2)
Przykład UML:
<interfejs>
Wampir + Zabij + Pij krew Straszydło
Miejsce Straszenia
Strasz
Książę Imię Zabij Pij krew
Realizacja
Interfejs (3)
Przykład Java:
interface wampir { void zabij();
void pijKrew();
}
class straszydlo {
String miejsceStraszenia;
void strasz(){}
}
class ksiaze
extends straszydlo implements wampir{
String imie;
void zabij(){}
void pijKrew(){}
}
Interfejs (4)
Przykład UML(2): <interfejs>
Wampir + Zabij + Pij krew
<interfejs>
Straszydło + Strasz
Książę Strasz
Zabij Pij krew
Realizacja
Osoba Imie Nazwisko
Nazwa zamku
W Javie poprzez interfejsy można zrealizować wielodziedziczenie
Interfejs (5)
Przykład Java(2):
interface wampir { void zabij();
void pijKrew();
}
interface straszydlo { void strasz();
}
class osoba {
String imie;
String nazwisko;
String nazwaZamku;
}
class ksiaze extends osoba
implements wampir, straszydlo { void strasz(){}
void zabij(){}
void pijKrew(){}
}