设计一个建筑物类Buliding,由他派生出教学楼类TeachBuliding和宿舍楼类DormBuliding,前者包括教学楼编号、层数、教室数、总面积等基本信息,后者包括宿舍楼编号、层数、宿舍数、总面积和容纳学生总人数等基本信息。
#include <iostream>
#include <string>
using namespace std;
class Building {
public:
Building(int num, int floors, int area) : number(num), floors(floors), area(area) {}
virtual void showInfo() = 0;
protected:
int number;
int floors;
int area;
};
class TeachBuilding : public Building {
public:
TeachBuilding(int num, int floors, int area, int rooms) : Building(num, floors, area), rooms(rooms) {}
virtual void showInfo() {
cout << "教学楼编号:" << number << endl;
cout << "层数:" << floors << endl;
cout << "教室数:" << rooms << endl;
cout << "总面积:" << area << endl;
}
private:
int rooms;
};
class DormBuilding : public Building {
public:
DormBuilding(int num, int floors, int area, int dorms, int capacity) : Building(num, floors, area), dorms(dorms), capacity(capacity) {}
virtual void showInfo() {
cout << "宿舍楼编号:" << number << endl;
cout << "层数:" << floors << endl;
cout << "宿舍数:" << dorms << endl;
cout << "总面积:" << area << endl;
cout << "容纳学生总人数:" << capacity << endl;
}
private:
int dorms;
int capacity;
};
int main() {
Building* building1 = new TeachBuilding(1001, 5, 500, 20);
building1->showInfo();
Building* building2 = new DormBuilding(2001, 10, 1000, 50, 200);
building2->showInfo();
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,建筑物类Building应该包括以下基本信息:
TeachBuilding类和DormBuilding类应该继承Building类的所有基本信息,因为教学楼和宿舍楼都是建筑物,它们应该有相同的基本信息。另外,TeachBuilding和DormBuilding应该各自拥有一些独特的属性和方法,例如:
TeachBuilding类:
DormBuilding类:
以下是使用Python语言实现的示例代码:
class Building:
def __init__(self, name, address, age, area):
self.name = name
self.address = address
self.age = age
self.area = area
class TeachBuilding(Building):
def __init__(self, name, address, age, area, classrooms, labs, lecture_halls):
super().__init__(name, address, age, area)
self.classrooms = classrooms
self.labs = labs
self.lecture_halls = lecture_halls
def arrange_schedule(self):
# 实现安排教室使用时间表等方法
pass
class DormBuilding(Building):
def __init__(self, name, address, age, area, dorms, single_rooms, double_rooms):
super().__init__(name, address, age, area)
self.dorms = dorms
self.single_rooms = single_rooms
self.double_rooms = double_rooms
def assign_dorm(self):
# 实现分配宿舍、管理学生宿舍等方法
pass
在这个示例代码中,Building类包括建筑物的基本信息,TeachBuilding类和DormBuilding类分别继承Building类,并且分别拥有教学楼和宿舍楼特有的属性和方法。例如,TeachBuilding类有classrooms、labs、lecture_halls属性和arrange_schedule()方法,DormBuilding类有dorms、single_rooms、double_rooms属性和assign_dorm()方法。这样,我们就可以更好地设计Buliding类,使其可以更好地派生出TeachBuliding和DormBuliding类。