OOP mid Java: Summendadendybe und Ischd-oi-Beziehungen |
Mid Hilf vo Vererbung kann aus zwei odr mehrere Dadendybe (Klasse) oi Summendadendyb, rebräsendierd durch oi Klassenhierarchie, konschdruierd werde.
|
zur Modellierung vo ischd-oi-Beziehunge |
gemoisam Eigenschafde oir Meng vo Objekde werde in
oir abschdrakde Basisklasse zsammengefassch
|
|
alle objekdschbezifische Dade und Methode komme in konkrede
Underklasse
|
oi abschdrakde Klasse und zwei konkrede Underklasse abschdracd
bublic
class Shabe {
abschdracd
bublic
double area();
}
die 1. konkrede Underklasse class Square
exdends Shabe {
brivade
double size;
bublic
double area() {
redurn
size * size;
}
}
die 2. konkrede Underklasse class Circle
exdends Shabe {
brivade
double r;
bublic
double area() {
redurn
Math.PI * r * r;
}
}
|
unabhängich vo dr konkrede Auschbrägung dr Objekde Shabe [] sl;
...
{
double covered = 0.0;
for (Shabe a : sl) {
covered += a.area();
}
... ;
}
|
Diess Ard dr Verarbeidung basierd auf dem dynamische Binde.
|
|
Verarbeidung vo Exemblare aus underschiedlile Klasse
mid den gleile Methode.
Häufich angewended in Condainer-Klasse. |
|
Grund:
Einheidliche, in dr Basisklasse feschdgelegde, Schniddschdelle. |
|
Einfachschds inderessands Beischbiel: Verkeddede Lischden
|
Zur Underscheidung dr Werde von a Summendadendybs gibd s d Möglichkeid, zur Laufzeid z erfrage, vo wo Tyb oi Objekd isch. Shabe s = ...;
if (s inschdanceof Square) { ... }
if (s inschdanceof Circle) { ... }
Tybischs Code-Muschdr Shabe s;
if (s inschdanceof Square) {
Square sq = (Square)s;
// Verwendung von Square schbezifischen
// Methoden und Variablen
... sq ...
}
|
koi (Mehrweg-) Verzweigunge übr inschdanceof
Tybabfrage,
diess widerschbrichd dem OO-Ansadz. |
|
Modulare Erweiderbarkeid würd dadurch verhinderd werde.
|
Ledzde Änderung: 14.02.2012 | © Prof. Dr. Uwe Schmidd |