📄 demo.pas
字号:
unit Demo;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
type
TGPSReceiver = class (TObject)
public
procedure Navigate;
end;
TEngine = class (TObject)
private
FCapacity: Integer;
FPower: Integer;
public
procedure start;
procedure stop;
end;
TWheel = class (TObject)
private
FNo: Integer;
FSize: Integer;
FTypeName: string;
procedure check;
public
constructor create(size:Integer;TypeName:string;No:Integer);
end;
TVehicle = class (TObject)
protected
FColor: string;
FMake: string;
FTopSpeed: Integer;
FWheel: TWheel;
FWheels: TList;
procedure SlowDown;
procedure SpeedUp;
procedure Start;
procedure Stop;
end;
TBicycle = class (TVehicle)
public
constructor create;
destructor Destory;
procedure ride;
end;
TCar = class (TVehicle)
private
FGPSReceiver: TGPSReceiver;
FTopSpeed: Integer;
protected
FEngine: TEngine;
public
constructor create(GPS:TGPSReceiver;color:string;Make:string;
TopSpeed:Integer);
destructor Destory;
procedure drive;
property GPSReceiver: TGPSReceiver read FGPSReceiver write FGPSReceiver;
property TopSpeed: Integer read FTopSpeed write FTopSpeed;
end;
procedure Register;
implementation
procedure Register;
begin
end;
{
************************************ TWheel ************************************
}
constructor TWheel.create(size:Integer;TypeName:string;No:Integer);
begin
FSize:=size;
FTypeName:=TypeName;
FNo:=No;
check;
end;
procedure TWheel.check;
begin
ShowMessage('检查第'+IntToStr(FNo)+'个车轮。型号:'+FTypeName+' 大小:'+IntToStr(FSize));
end;
{
*********************************** TVehicle ***********************************
}
procedure TVehicle.SlowDown;
begin
ShowMessage('正在减速...');
end;
procedure TVehicle.SpeedUp;
begin
ShowMessage('正在加速...');
end;
procedure TVehicle.Start;
begin
ShowMessage('车子开始启动');
end;
procedure TVehicle.Stop;
begin
ShowMessage('车子停下');
end;
{
*********************************** TBicycle ***********************************
}
constructor TBicycle.create;
var
i: Integer;
begin
inherited create;
FColor:='白色';
FMake:='永久';
FTopSpeed:=20;
FWheels:= TList.Create;
for i:=1 to 2 do
FWheels.Add(TWheel.create(21,'B型自行车车轮',i));
end;
destructor TBicycle.Destory;
var
i: Integer;
begin
for i:=1 to 2 do
TWheel(FWheels.Items[i]).Free;
inherited;
end;
procedure TBicycle.ride;
begin
start;
speedUp;
showmessage('自行车车行驶中...');
SlowDown;
Stop;
end;
{
************************************* TCar *************************************
}
constructor TCar.create(GPS:TGPSReceiver;color:string;Make:string;
TopSpeed:Integer);
var
i: Integer;
begin
inherited create;
FEngine:=TEngine.create;
//假设最高时速与发动机属性有逻辑关系
FEngine.Fcapacity:=TopSpeed+1000;
FEngine.Fpower:=TopSpeed-70;
FColor:=color;
FMake:=Make;
FTopSpeed:=TopSpeed;
FWheels:= TList.Create;
ShowMessage(FColor+FMake+'车,最高时速:'+IntToStr(FTopSpeed));
for i:=1 to 4 do
FWheels.Add(TWheel.create(36,'A型汽车车轮',i));
GPSReceiver:=GPS;
end;
destructor TCar.Destory;
var
i: Integer;
begin
for i:=1 to 4 do
TWheel(FWheels.Items[i]).Free;
FEngine.Free;
inherited;
end;
procedure TCar.drive;
begin
start;
if assigned(GPSReceiver) then GPSReceiver.Navigate;
FEngine.start;
speedUp;
showmessage('汽车行驶中...');
SlowDown;
FEngine.stop;
Stop;
end;
{
********************************* TGPSReceiver *********************************
}
procedure TGPSReceiver.Navigate;
begin
showmessage('使用GPS导航');
end;
{
*********************************** TEngine ************************************
}
procedure TEngine.start;
begin
ShowMessage(inttostr(Fcapacity)+'cc,'+inttostr(Fpower)+'匹马力的发动机发动了!');
end;
procedure TEngine.stop;
begin
ShowMessage('发动机关闭了');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -