首页 理论教育C++程序设计基础教程应用实例及类层次图程序

C++程序设计基础教程应用实例及类层次图程序

【摘要】:图6.18类层次图程序如下:本程序的执行结果如下:圆桌属性数据:高度:0.6米桌面半径:0.5米面积:0.785平方米颜色:白色设计一个虚基类Person,包含姓名和年龄私有数据成员以及相关的成员函数,由它派生出领导类Leader,包含职务和部门私有数据成员以及相关的成员函数,再由Person派生出工程师类Engineer,包含职称和专业私有数据成员以及相关的成员函数,然后由Leader和Engineer类派生出主任工程师类Chairman。

【例6.16】设计一个大学生中学生和教师管理程序。教师包括编号、姓名、职称和教研室数据的输入/输出;大学生包括编号、姓名、性别、班号、英语、高等数学和数据结构三门课程成绩的输入/输出并计算平均分;中学生包括编号、姓名、性别、班号、英语、数学和语文三门课程成绩的输入/输出并计算平均分。

解:为此,设计一个Person类,它包括编号和姓名的输入/输出,从它派生一个Teacher类,用于满足教师数据的操作。再从它派生一个Student类,增加性别和班号的输入/输出,然后从Student类派生出大学生类unStudent和中学生类miStudent,分别实现大中学生数据的操作。这些类的继承关系即类层次如图6.17示。

图6.17 类层次图

程序如下:

本例程序的一次执行结果如下:

输入一个教师数据:

编号:01↙

姓名:王兰↙

职称:副教授↙

教研室:计算机软件↙

输入一个大学生数据:

编号:101↙

姓名:张红兵↙

性别:男↙

班号:2017101↙

英语:82↙

高等数学:90↙

数据结构:83↙

输入一个中学生数据:

编号:201↙

姓名:李英↙

性别:女↙

班号:高三(2)↙

英语:92↙

数学:88↙

语文:90↙

输出一个教师数据:

编号:01

姓名:王兰

职称:副教授

教研室:计算机软件

输出一个大学生数据:

编号:101

姓名:张红兵(www.chuimin.cn)

性别:男

班号:2017101

英语:82

高等数学:90

数据结构:83

平均分:85

输出一个中学生数据:

编号:201

姓名:李英

性别:女

班号:高三(2)

英语:92

数学:88

语文:90

平均分:90

【例6.17】设计一个圆类Circle和一个桌子类Table,另设计一个圆桌类RoundTable,它是从前两个类派生的,要求输出一个圆桌的高度、桌面半径、面积和颜色等数据。

解:Circle类包含私有数据成员radius,求半径的成员函数getradius()和求圆面积的成员函数getarea();Table类包含私有数据成员height和求高度的成员函数getheight();RoundTable类继承所有上述类的数据成员和成员函数,并增加了私有数据成员color和相应的成员函数,其类层次图如图6.18所示。

图6.18 类层次图

程序如下:

本程序的执行结果如下:

圆桌属性数据:

高度:0.6米

桌面半径:0.5米

面积:0.785平方米

颜色:白色

【例6.18】设计一个虚基类Person,包含姓名和年龄私有数据成员以及相关的成员函数,由它派生出领导类Leader,包含职务和部门私有数据成员以及相关的成员函数,再由Person派生出工程师类Engineer,包含职称和专业私有数据成员以及相关的成员函数,然后由Leader和Engineer类派生出主任工程师类Chairman。要求采用构造函数进行初始化工作,并用一些数据进行测试。

解:由于Chairman类从Leader类和Engineer类派生,而Leader类和Engineer类都是从Person派生的,所以为了使Person只存一个副本,必须采用虚拟派生的方法,类层次图如图6.19所示。

图6.19 类层次图

程序如下:

本程序的执行结果如下:

刘明,年龄35岁,担任设计处副处长

高级工程师,从事电气设计专业