UE zu SW 2 Selbsttest Std 05 double gesamtWert (Wertsache[] erbschaft) { double gesamt = 0.0; for (int i = 0; i < erbschaft.length; i ++) { gesamt += erbschaft[i].berechneWert(); } return gesamt; } generische Methode gesamtWert() 1 UE zu SW 2 Selbsttest Std 05 Klasse GoldBarren: public double berechneWert () { return goldKurs.preisProEinheit() * gewicht; } public double berechneWert () { int jahrDiff = Datum.aktuellesJahr()–entstehungsJahr; double wert = 0.0; if (jahrDiff >= mindestAlter) wert += (jahrDiff-mindestAlter)*wertanstiegProJahr; return super.berechneWert() + wert; } Klasse Antiquitaet: public double berechneWert () { return einkaufspreis; } Klasse Sache: Erweiterung und Anpassung 2 UE zu SW 2 Wertsache 1 Selbsttest Std 05 int entstehungsjahr; ... double berechne(); Antiquitätsbewertung double preis Sache ... 1 Raritätsbewertung ... WertAenderung double berechne(); Austauschbares Verhalten Klassendiagramm 3 UE zu SW 2 Selbsttest Std 05 class WertAenderung { public double berechne() { return 0.0; // default: keine Aenderung } } } public double berechneWert() { return einkaufspreis + diffWert.berechne(); diffWert.berechne() } ... class Sache implements Wertsache { double einkaufspreis; WertAenderung diffWert; Austauschbares Verhalten 4 UE zu SW 2 } Selbsttest Std 05 public double berechne () { int jahrDiff = Datum.aktuellesJahr()–entstehungsJahr; if (jahrDiff >= mindestAlter) return (jahrDiff-mindestAlter)*wertanstiegProJahr; return 0.0; } class AntiquitaetsBewertung extends WertAenderung { int entstehungsJahr; double wertAnstiegProJahr; int mindestAlter; Austauschbares Verhalten 5