Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
Delphi 12 Athens
|
AW: Übung Polymorphie
20. Nov 2017, 10:47
Ich habe das Ganze mal umgeschrieben:
Delphi-Quellcode:
type
TFigur = class
private
FSeiteB: Double;
FSeiteA: Double;
protected
function GetFlaeche: double; virtual; abstract;
public
property SeiteA: Double read FSeiteA write FSeiteA;
property SeiteB: Double read FSeiteB write FSeiteB;
property Flaeche: double read GetFlaeche;
end;
TRechteck = class(TFigur)
protected
function GetFlaeche: double; override;
end;
TDreieck = class(TRechteck)
protected
function GetFlaeche: double; override;
end;
...
{ TRechteck }
function TRechteck.GetFlaeche: double;
begin
Result := SeiteA * SeiteB;
end;
{ TDreieck }
function TDreieck.GetFlaeche: double;
begin
Result := SeiteA * SeiteB / 2;
end;
Formular:
Delphi-Quellcode:
type
TForm6 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
procedure ShowFlaeche(Figur: TFigur);
public
{ Public-Deklarationen }
end;
...
procedure TForm6.Button1Click(Sender: TObject);
var
Figur: TFigur;
begin
Figur := TRechteck.Create;
try
Figur.SeiteA := 4;
Figur.SeiteB := 5;
ShowFlaeche(Figur);
finally
Figur.Free;
end;
end;
procedure TForm6.Button2Click(Sender: TObject);
var
Figur: TFigur;
begin
Figur := TDreieck.Create;
try
Figur.SeiteA := 4;
Figur.SeiteB := 5;
ShowFlaeche(Figur);
finally
Figur.Free;
end;
end;
procedure TForm6.ShowFlaeche(Figur: TFigur);
begin
ShowMessage(Format('Die Fläche beträgt %.2f', [Figur.Flaeche]));
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
Geändert von DeddyH (20. Nov 2017 um 10:54 Uhr)
|