Hi,
Ich habs jetzt mal in C++ umgesetzt.
Geht das so ohne weiteres, dass die eine Kind-Klasse andere Attribute und Methoden hat als die andere? Muss ich dann noch was in der Eltern-Klasse ergaenzen?
Natürlich geht das. In allem, was nicht aus der Elternklasse kommt, können sich die abgeleiteten Klassen beliebig unterscheiden.
Hab da noch ein Problem.
Hier sind paar Codeausschnitte:
class AbstractDisplay
{
public:
virtual void anzeigen(float){};
virtual void setColor(string){};
};
class SimpleDisplay : public AbstractDisplay
{
public:
void anzeigen(float zahl)
{
cout << COLOR_BLUE << "\n\nErgebnis: " << zahl << COLOR_OFF << "\n\n";
}
};
class TextDisplay : public AbstractDisplay
{
private:
string color;
public:
TextDisplay() // Konstruktor
{
setColor("\033[39;31;1m"); // default-farbe: rot
}
void anzeigen(float zahl)
{
cout << color << "\n\nErgebnis: " << zahl << COLOR_OFF << "\n\n";
}
void setColor(string farbe)
{
color = farbe;
}
};
in main():
AbstractDisplay* display;
display = new TextDisplay;
display->setColor("\033[39;34;1m"); // Farbe auf blau setzen
Wenn ich die Zeile "virtual void setColor(string){};" weglasse kommt vom Compiler eine Fehlermeldung:
line 154: no matching function for call to `AbstractDisplay::setColor (const char[11])'
Das ist die Zeile mit "display->setColor()".
Ist es also doch zwingend noetig, dass ich fuer jede Methode, die ich in einer Unterklasse verwende oben eine mit virtual (steht fuer abstrakt?) davor mache?
Oder habe ich die Elternklasse nicht richtig als abstrakt festgelegt?
Ansonsten funktioniert jetzt alles so weit ... dank eurer Hilfe :-)
Aber ich brauch wohl noch einige Uebung.
... Und im Zweifelsfall merkst du es spätestens beim Implementieren, wenn ein Entwurf nicht funktioniert ;-)
Hatte doch was uebersehen, und zwar die setOpart-Methode. Aber habs ziemlich bald gemerkt.
mfG,
steckl