用c++设计设计一个建筑物类 Building,由它派生出教学楼 TeachBuilding 和宿舍楼类 DormBuilding. 前者包括教学楼缱号、层数、教空数、总面租等基本信息,后者包括宿舍楼编号、层数、宿舍数总面积和容纳学生总人数等基本信息。
时间: 2023-09-25 13:06:19 浏览: 89
### 回答1:
#include <iostream>
using namespace std;
class Building {
protected:
int id; //建筑物编号
int floors; //层数
int area; //总面积
public:
Building(int i, int f, int a) {
id = i;
floors = f;
area = a;
}
void show() {
cout << "建筑物编号:" << id << endl;
cout << "层数:" << floors << endl;
cout << "总面积:" << area << endl;
}
};
class TeachBuilding : public Building {
private:
int rooms; //教室数
public:
TeachBuilding(int i, int f, int a, int r) : Building(i, f, a) {
rooms = r;
}
void show() {
Building::show();
cout << "教室数:" << rooms << endl;
}
};
class DormBuilding : public Building {
private:
int dorms; //宿舍数
int capacity; //容纳学生总人数
public:
DormBuilding(int i, int f, int a, int d, int c) : Building(i, f, a) {
dorms = d;
capacity = c;
}
void show() {
Building::show();
cout << "宿舍数:" << dorms << endl;
cout << "容纳学生总人数:" << capacity << endl;
}
};
int main() {
TeachBuilding tb(1, 5, 1000, 20);
DormBuilding db(2, 10, 2000, 50, 200);
tb.show();
db.show();
return 0;
}
### 回答2:
在C语言中设计一个建筑物类Building,可以使用结构体来实现。结构体包含教学楼编号(teach_num)、层数(layer_num)、教室数(classroom_num)、总面积(total_area)等基本信息。代码如下:
```c
// 建筑物类
struct Building {
int teach_num; // 教学楼编号
int layer_num; // 层数
int classroom_num; // 教室数
float total_area; // 总面积
};
// 教学楼类,继承自建筑物类
struct TeachBuilding : Building {
// 可以根据需要添加教学楼特有的属性和方法
};
// 宿舍楼类,继承自建筑物类
struct DormBuilding : Building {
int dorm_num; // 宿舍数
int total_students; // 容纳学生总人数
};
int main() {
struct DormBuilding dorm;
dorm.teach_num = 1001;
dorm.layer_num = 5;
dorm.classroom_num = 10;
dorm.total_area = 5000;
dorm.dorm_num = 20;
dorm.total_students = 100;
// 可根据需要进行其他操作
return 0;
}
```
上述代码中,通过使用结构体来定义建筑物类(Building),并在教学楼类(TeachBuilding)和宿舍楼类(DormBuilding)中继承基本的属性和方法。对于宿舍楼类而言,还额外添加了宿舍数(dorm_num)和容纳学生总人数(total_students)等属性。
在主函数中,可以创建DormBuilding结构体对象dorm,然后对其属性进行赋值。可以根据需要拓展其他功能和操作。
### 回答3:
建筑物类 Building 可以设计为包含以下基本信息的类:
1. 建筑物编号(buildingID):用于唯一标识建筑物。
2. 层数(floor):记录建筑物的层数。
3. 总面积(totalArea):记录建筑物的总面积。
教学楼类 TeachBuilding 可以派生自建筑物类 Building,同时包含以下额外信息:
1. 教学楼编号(teachBuildingID):用于唯一标识教学楼。
2. 教室数(classroomCount):记录教学楼内的教室数量。
宿舍楼类 DormBuilding 可以派生自建筑物类 Building,同时包含以下额外信息:
1. 宿舍楼编号(dormBuildingID):用于唯一标识宿舍楼。
2. 宿舍数(dormCount):记录宿舍楼内的宿舍数量。
3. 容纳学生总人数(totalStudentCount):记录宿舍楼内容纳的学生总人数。
通过以上设计,可以分别创建教学楼和宿舍楼的对象,并访问它们各自的属性。例如,可以通过教学楼对象的属性访问教学楼的编号、层数、教室数和总面积,也可以通过宿舍楼对象的属性访问宿舍楼的编号、层数、宿舍数和容纳学生总人数。
采用面向对象的设计可以更好地组织和管理建筑物类的各种属性信息,提供灵活性和可扩展性。可以在建筑物类中添加更多的功能和方法,比如计算教学楼或宿舍楼的平均面积、最大容纳人数等等。