1. 【说明】
已知对某载客车辆(Car)进行类建模,如图5-1所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。

【C++代码】
const int
=7; //定义最多载客数
const int MAX WHEELS=5; //定义最多轮胎数
class Body{ //此处代码省略 }; //车身类
class Passenger{ //此处代码省略 }; //乘客类
class Wheel{ //此处代码省略 }; //车轮类
class Driver{ //司机类
public:
string name;//表示第几路公交车司机
Driver(string driverName):name(
){}///构造函数
};
class Engine{//引擎类
public:
string engineNo;//引擎编号
Engine(string engineNo){
->engineNo=engineNo;}//构造函数
};
class Car{//汽车类
protected:
Engine * engine; Driver * driver; Body body;
Wheel * wheels [MAX_WHEELS];Passenger * passengers [MAX_PASSENGERS];
public:
Car(Driver *driver){ //构造函数
this->driver=driver;
engine=new Engine("TX6536型号引擎");
for (int index=0; index<MAX WHEELS;index++){
wheels[index]=new Wheel();
}
for(int index=0;index<MAX_PASSENGERS;index++){
passengers[index]=NULL;
}
}
virtual ~Car(){//析构函数
for( int index=0;index<MAX_WHEELS;index++)
delete wheels[index];
delete
;
}
int getPassengerNumber(){//获取车上乘客数量
//此处代码省略
}
void getOnPassenger(Passenger * aPassenger){//乘客上车
//此处代码省略
}
void run(){ //开车
if(driver==NULL){cout<<"司机尚未上车!"; return; }
//此处代码省略
}
};
void main(){
Driver driver("第五路公交车司机");
Car car(
);
Passenger passengers[MAX_PASSENGERS];
for(int index=0;index<MAX PASSENGERS;index ++) //乘客上车处理
car.getOnPassenger(&passengers [index]);
car.run();
}
(1)MAX_PASSENGERS
(2)driverName
(3)this
(4)engine
(5)&driver
[分析]
根据类图描述,分析可得:一辆汽车可以载0~7名乘客,一辆汽车可以被一个或者多个司机驾驶,并且一辆汽车有4~5个轮胎,一个引擎和一个车框架。程序代码中空(1)处表示一辆汽车最多载客数目, 从后面的程序代码[分析]可得, 应该填写 MAX PASSENGERS。空(2)处主要设置车的假设司机,由于参数的名称与成员变量的名称相同,因此需要加上this以示区别。空(3)处主要用于判断司机是否上车,因此,代码应该对汽车所维持的司机对象的引用是否为空进行判断。空(4)处用于产生一个汽车对象,所以,需要给汽车对象传递合适的参数,构造方法中需要传递一个司机对象,因此应该将driver对象传递到汽车对象中。空(5)处表示乘客上车,getOnPassenger要求传递的是乘客对象,因此空缺处应为构造乘客对象的代码。