So hätte ich es gemacht:
Delphi-Quellcode:
Type
TRechteck =
class(TObject)
private
FLaenge: double;
FBreite: double;
FFlaeche: double;
FUmfang: double;
procedure BerechneFlaeche: Double;
procedure BerechneUmfang: Double;
procedure SetLaenge(laenge: double);
procedure SetBreite(breite: double);
public
Property Laenge: Double
write SetLaenge;
Property Breite: Double
write SetBreite;
Property Flaeche: Double
read FFlaeche;
Property Umfang: Double
read FUmfang;
End;
procedure TRechteck.SetLaenge(laenge: double);
begin
// ToDo:
// wenn kleiner 0 -> Exception auslösen "Länge darf nicht kleiner 0 sein"
// oder besser allgemeine Exception InvalideArgument
laenge := FLaenge;
end;
procedure TRechteck.SetBreite(breite: double);
begin
// ToDo:
// wenn kleiner 0 -> Exception auslösen "Breite darf nicht kleiner 0 sein"
// oder besser allgemeine Exception InvalideArgument
breite := FBreite;
end;
procedure TRechteck.BerechneFlaeche;
begin
FFlaeche := FLaenge * FBreite;
end;
procedure REechteck.BerechneUmfang;
begin
FUmfang := (2 * FLaenge) + (2 * FBreite);
end;
///////////////////////////////////////////////////////////////////////////////
procedure TForm1.BerechneFlClick(Sender: TObject);
var
TRechteck: Rechteck;
Flaeche: double;
begin
Rechteck := TRechteck.Create;
try
// Eingaben validieren, wenn valid dann:
Rechteck.Laenge := ...;
Recheck.Breite := ...;
Flaeche := Rechteck.Flaeche;
finally
Recheckt.Free;
end;
end;
Wozu der Zähler? Wenn jemand mehrere Flächen berechnen will, dann soll er das selbst implementieren.
Aber du scheint das Prinzip der Objektorientierung noch nicht so ganz verstanden zu haben:
Delphi-Quellcode:
Type
TFlaeche = class(TObject)
private
protected
Function BerechneFlaeche: Double; virtual; abstract;
Function BerechneUmfang: Double; virtual; abstract;
public
Du willst anscheinen eine allgemeine Klasse schreiben, um Fläche und Umfang verschiedener geometrischer Körper zu berechnen. Und die Kind-Klassen sollen dann BerechneFlaeche und BerechneUmfang selbst implementieren. Idee gut. Aber Namensgebung schlecht. Die Klasse heißt TFlaeche. Warum berechnet eine Klasse TFlaeche den Umfang?
TGeometrischerKoerper = class(TObject)
TRechteck = class(TGeometrischerKoerper)
TDreieck = class(TGeometrischerKoerper)