Wann abgeleitete Klasse verwenden



  • Hallo, woher weiß ich, wann ich eine Klasse ableite bzw eine abgeleitete verwenden muss?
    Macht z.B. eine Hauptklasse Adresse Sinn, wenn ich davon dann Kunden und Lieferanten ableite?
    Und wie ist es bei Bestellungen? Gibt es da die Hauptklasse mit den grundsätzlichen Daten sowie eine abgeleitete mit den einzelnen Positionen?



  • Orientieren kannst du dich dabei am Liskovsches Substitutionsprinzip.
    Wende einfach den Satz "Ist die <abgeleitete Klasse> eine <Basisklasse>?" entsprechend darauf an.
    Und jetzt kannst du dir selbst die Frage stellen: "Ist ein Kunde/Lieferant eine Adresse?" 😉



  • Genau.

    Davon abgesehen ... auch bei abstrakteren Problemen, wo die "ist ein" vs. "hat ein" Frage oft nicht so eindeutig beantwortet werden kann (z.B. weil es Definitionssache ist, weil man selbst entscheidet was die eigenen Objekt alle "sind"), ist meist Komposition vorzuziehen. Vererbung sollte in klassischen imperativen objektorientierten Sprachen wie C++/C#/Java etc. nur sehr spärlich und gut überlegt eingesetzt werden.



  • Danke euch beiden. Wenn ich es nun richtig verstanden habe, ist Lieferant/Kunde nicht direkt eine Adresse, daher würde ich sagen - nein -.
    Und nachdem hustbaer noch erwähnt hat, dass man abgeleitete Klassen nur wohl überlegt und spärlich einsetzen soll, lass ich mal meine Finger davon.


Anmelden zum Antworten