Ну... примерно так:
Код:
type
TWaterTemp = (wtNone, wtCold, wtWarm, wtHot);
TSmesitel = class
private
FIsHotOpen : Boolean;
FIsColdOpen : Boolean;
FIsShower : Boolean;
function GetWaterTemp : TWaterTemp;
public
constructor Create;
destructor Destroy; override;
procedure OpenHot;
procedure OpenCold;
procedure CloseHot;
procedure CloseCold;
procedure TurnShower;
property IsColdOpen : Boolean read FIsColdopen;
property IsHotOpen : Boolean read FIsHotOpen;
property IsShower : Boolean read FIsShower;
property WaterTemp : TwaterTemp read GetWaterTemp;
end;
...
..
function TSmesitel.GetWaterTemp : TWaterTemp;
begin
If FIsColdOpen And FIsHotOpen
Then Result := wtWarm
Else
If FIsColdOpen And (Not FIsHotOpen)
Then Result := wtCold
Else
If (Not FIsColdOpen) And FIsHotOpen
Then Result := wtHot
Else Result := wtNone;
end;
ну а дальше - реализуй объявленные методы и доработай в соотв. со своей фантазией...