Novi: Abstrakte methoden praxistest

Beitrag lesen

Hallo,

Man könnte sehr wohl die Ellipse vom Kreis erben lassen, da sie sich nicht anders verhält. Sie hat schließlich nur zusätzliche Attribute und Methoden. Es geht allerdings keine Funktionalität verloren. Auffassen könnte man das dann als eine "Erweiterung" des Kreises.

Dann hast du eine Generalisierung und Vererbung dient der Spezialisierung. Dadurch verschlechterst du die Verständlichkeit der Vererbungshierarchie. Der Kreis ist eine Spezialform der Ellipse und des Wegen muss der Kreis von der Ellipse erben, welches zu Problemen führt.

Ja beide Vererbungsrichtungen haben ihre Nachteile. Aber auch keine Vererbung zu verwenden ist ungünstig, da man dann ja quasi die Implementierung eins zu eins kopieren müsste. Folglich sind wir bei meiner ursprünglichen Behauptung angelangt, dass es manchmal keine allgemein richtige Lösung gibt.

Ich habe die PDF nur mal kurz überflogen und gleich einen Fehler gefunden. Scheinbar ist dem Autor der Bergriff Polymorphie nicht ganz klar.

Hast du auch ein Bsp. für deine Behauptung?

Der Schein scheint zu trügen. Ich hätte den Text wohl doch zu Ende lesen und nicht nur überfliegen sollen.

Ich wollte auf das folgende Beispiel raus:

  
void Square::SetWidth(double w)  
{  
Rectangle::SetWidth(w);  
Rectangle::SetHeight(w);  
}  
void Square::SetHeight(double h)  
{  
Rectangle::SetHeight(h);  
Rectangle::SetWidth(h);  
}  
s.SetWidth(1); // Fortunately sets the height to 1 too.  
s,SetHeight(2); // sets width and heigt to 2, good thing.  
But consider the following function:  
void f(Rectangle& r)  
{  
r.SetWidth(32); // calls Rectangle::SetWidth  
}  

Da wurde zuerst behauptet, dass dies nicht ginge. Mit Polymorphie ist es aber natürlich möglich.

Viele Grüße Novi

--
"(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)