Dziedziczenie całkowite (complete)
description
Transcript of Dziedziczenie całkowite (complete)
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łoMiejsce
StraszeniaStrasz
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ążę
StraszZabij
Pij krew
Realizacja
OsobaImie
NazwiskoNazwa 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(){}
}