type
TSquare = class
private
FSide: Double;
function GetArea: Double;
procedure SetArea(const Value: Double);
public
property Side: Double
read FSide write FSide;
//computed property: getter and setter
property Area: Double
read GetArea write SetArea;
end;
function TSquare.GetArea: Double;
begin
Result := FSide * FSide;
end;
procedure TSquare.SetArea(const Value: Double);
begin
FSide := Sqrt(Value);
end;
var
Square: TSquare;
begin
Square := TSquare.Create;
Square.Side := 2;
//square.Area is 4
WriteLn('area is ', Square.Area:0:0);
Square.Area := 9;
//square.Side is 3
WriteLn('side is ', Square.Side:0:0);
end.