Hätte es auch zuerst so gemacht : Rechteck -> Quadrat. Hätte ich den Code allerdings geschrieben, dann wäre schon aufgefallen, dass das Institut Recht hat ! Ein Quadrat ist zwar schon ein spezielles Rechteck, aber das braucht (anders als das Rechteck) keine zwei Seitenlängenangaben, sondern nur eine !! Es ist also unnötig für das Quadrat eine geerbte überflüssige Seite mitzuschleppen.
Also so hätte ich das gemacht : TViereck -> TRechtwinkliges Viereck.
Das nächste wäre eine Verzweigung :
Delphi-Quellcode:
TRechteck = Class (TRechtwinkligesViereck)
SeitenlaengeA,
SeitelaengeB :...
TQuadrat = Class (TRechtwinkligesViereck)
SeiteLaenge,
Wenn man sich das nämlich mal weiter überlegt : beim Quadrat brauche ich für Fläche lediglich sqr. Beim Rechteck aber SeitenLaengeA * SeitenLaengeB. Umfang usw. geht in ähnliche Richtung. Das läuft also doch viel weiter auseinder, als man im ersten Moment denkt.