资源预览内容
第1页 / 共64页
第2页 / 共64页
第3页 / 共64页
第4页 / 共64页
第5页 / 共64页
第6页 / 共64页
第7页 / 共64页
第8页 / 共64页
第9页 / 共64页
第10页 / 共64页
亲,该文档总共64页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
面向对象程序设计过程考核题目过程考核内容:考核内容涉及面向对象编程的抽象与封装、继承、多态、STL程序库应用等方面。考核目的:加强对本课程基本概念的理解,切实应用面向对象程序思维解决现实问题,提高面对象程序设计和编程实践能力。成绩计算:占本课程总成绩20%。题目选择:从下面的六道题目中任意选作一题,各题目的难度略有区别,在题目分数上略有反映。第1-5题主要学习应用面向对象编程技术抽象与解决现实问题的方法,掌握复杂类或重复继承问题的类设计方法,切实掌握类设计时应当掌握的关键技术和实现内容。在理解题目要解的问题基础上,学习别人是如何应用C+对现实问题进抽象与类设计,并最终编写出相应的程序。第6题需要综合应用本课程所学知识,进行类、继承、多态、STL应用的编程实践。提交方式:在VC+编程环境中输入所选题目源码(或自己编写的第6题程序代码),进行适当修改,调测运行成功后,提交程序源文件和设计报告(报告格式另行指定)。提交时期:截止第16周末题目一:交叉类的设计与实现(选此题:最高16分)本题目探索如何设计具有复杂成员关系的类设计问题,重点解决类之间的整体与部分关系。当两类具有整体与部分关系,且两者生命期独立存在时就称为聚合关系,用空心菱形表示。实心菱形表示部分的生存期依附于整体,当整体不存在时,部分就随之结束生存期。本题目要进行Employee类的设计,该类与Date,Dog,Cat,Auto类具有交叉关系。具体描述为:某宠物狗销售公司有的雇员有生日,可能会养有一只宠物猫,具有许多雇员朋友,拥有多部分小汽车,每个雇员要为自己销售的若干宠物狗承担售后服务。各类的关系如下图所示:设计Employee类,能够完成下述类型雇员对象的创建,并能够直接输出其成员信息。(1) 能够创建全部数据成员初始化为0的雇员对象;(2) 能够创建只知道第一、第二姓名雇员对象(3) 能够创建只知道第一、第二姓名和生日的雇员对象(4) 能够创建只知道第一、第二姓名、生日和宠物猫的雇员对象(5) 能够创建只知道第一、第二姓名和所销售宠物狗的雇员对象(6) 能够创建只知道第一、第二姓名和他的电话通信录列表的雇员对象(7) 能够创建只知道第一、第二姓名、生日、以及朋友列表的雇员对象(8) 能够创始知道第一、第二姓名、生日、朋友、自己的小汽车,宠物猫的雇员对象。本题目的主要目的:(1) 学习掌握将现实问题转换为相关类的方法和技术,特别是如何在类设计时实现现实对象间的相互关系。(2) 掌握类构造函数实现方法。(3) 掌握重载类成员输出方法。(4) 掌握类复制运算符(operator=)和复制构造函数的实现方法。题目二:继承层次设计(选此题:最高18分)在题目一已完成的基础上,扩展类的功能,实现以下继承层次结构:(1)宠物狗销售只有吉娃娃(Chihuahua)和卷毛(Poodle),它们从Dog类派生,它们具有的数据成员包括主人、体重、和高度。(2)雇员有四种类型:雇员(Employee)、管理人员(Manager),销售人员(SalesPerson)、销售管理(SalesManger),其中: Employee可以销售任何Dog(包括吉娃娃和卷毛),但后三类人员只能够销售吉娃娃和卷毛。Manager需要维护他管理的员工数组(workerSupervised)和员工人数(numWorksSupervised),SalesManger需要维护管理的销售人员链表(listOfSalesPersons)。本题目的主要目的:1 理解与使用继承进行软件设计和功能扩展;2 掌握复制构造函数、复制赋值运算符函数(operator=)、析构函数、输出运算符重载函数(operator)的实现技术和方法;3 学会应用STL的链表和向量进行数据存取管理;4 学会应用类的函数算子(operator()操作STL的排序函数sort。题目三:使用虚基类解决重复继承问题(选此题:最高16分)设计一个企业管理人员晋升的继承体系,公司雇员设计有经理(Manager)、销售人员(SalesPerson)、执行经理(ExecutiveManager)、销售经理(SalesPerson)等类别。他们的关系如图16.13所示。各类人员的晋升条件如下文件描述,设计实现此继承体系中的各类,使之实现相应人员的晋升管理功能。 本题目的主要目的:(1) 掌握继承体系的设计与实现方法;(2) 掌握多重派生类具有共同间接基类时处理重复功能的方法虚基类和虚拟继承的设计与实现方法;(3) 掌握虚函数实现多态的技术方法;(4) 掌握STL中vector和对应迭代器的使用方法。(5) 掌握应用简单辅助类提高程序可读性和清晰性的软件开发方法。题目四:使用混合类解决重复继承问题(选此题:最高18分)本题是题目三的另一种解决方法,通过辅助基类的增加,避免使用虚拟继承来解决重复继承实现与题目三相同的功能,使类设计和对象构造的复杂度得到适当的简化。本题目的主要目的:(1) 了解掌握软件开发并非一层不变,并非像某些数学题一样具有唯一标准答案,而是具有一定的灵活性,同一问题可以有多种不同的软件解决方案。(2) 学习应用辅助基类实现而非虚拟继承解决多重继承引发的成员重复问题。(3) 掌握类继承体系的设计与实现方法。(4) 掌握应用STL的vector和迭代器存取自定义类对象的方法。题目五:使用角色扮演类解决重复继承(选此题:最高19分)本题目实现题目三、四相同的功能,在题目四的继承体系中增设了一个角色扮演类Role,以一种更加灵活的方式实现了完全相同的功能。本题目的主要目的:(1) 结合题目三、四、五,它们实现了完全相同的功能。以此学习理解软件开发的灵活性。(2) 学习用角度扮演类设计继承体系,实现多层继承体系的设计方法。(3) 掌握通过高层角色扮演类访问下层派生类对象的多态程序实现技术。(4) 掌握应用STL vector和迭代器存取自定义对象,实现多态的方法。题目六:编程实现扩展后的第5章第9题(选此题:最高20分)原题目为:一个教学系统至少有学生和教师两种类型的人员,假设教师的数据有教师编号、姓名、年龄、性别、职称和系别,学生的数据有学号、姓名、年龄、性别、班级和语文、数学、英语三门课程的成绩。编程完成学生和教师档案数据的输入和显示。要求如下:设计三个类Person、Teacher、Student,Person是Teacher和Student的基类,具有此二类共有的数据成员姓名、年龄、性别,并具有输入和显示这些数据的成员函数;Teacher类继承了Person类的功能,并增加对教师编号、职称和系别等数据成员进行输入和显示的成员函数。按同样的方法完善Student类的设计。对本题目进行以下扩展:(1) 教师分为普通教师(Teacher)、院长(Chancellor)和系主任(Dean)三类。所有教师都有基本工资(salary),普通教师的总收入income由基本工资和课时费构成。一个教师要管理若干学生,而一个学生只有一位教师作导师;(2) 院长和系主任都从普通教师中产生,院长的总收入由年薪和基本工资构成,系主任的总收入由基本工资和每有绩效构成。他们每年须完成指定课时的教学任务,但不计课时报酬。(3) 上述各类人员的基本关系如下图所示。设计并编程实现各类。设计要求:(a)各类中的inputData、outData、getSalarysetSalary、getIncome为虚函数,要求能够以Person为接口访问各类的inputDataoutData虚函数,实现多态。(b) 用STL中的vector或list管理Person对象指针或引用,管理继承体系中的对象,实现体现多态编程特征。同类对象可以按年龄排序。 (c)友元重载各类对象的输出运算符(operator),能够通过cout直接输出各对象的相应信息,输出信息与各类的outData成员函数的输出相同。本题目的主要目的:(1) 学习掌握应用面向对象的思维方法分析现实问题,能够将现实问题抽象成面向对象的计算机描述方法。(2) 掌握继承体结构的抽象和设计方法。(3) 理解多态技术解决现实问题的超强能力,掌握多态编程技术。(4) 掌握对象之间不同关系的程序解决方法。(5) 掌握应用STL的vector和迭代器存取自定义类对象的方法。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号