《C++实验报告 继承与多态》由会员分享,可在线阅读,更多相关《C++实验报告 继承与多态(7页珍藏版)》请在金锄头文库上搜索。
1、专业课程实验报告课程名称: C+面向对象程序设计开课学期: 2015 至 2016 学年 第 1 学期专业:计算机科学与技术 年级班级: 2013 级学生姓名: 侯瑄 学号:222013321210092实验教师: 陈 睿计算机与信息科学学院 软件学院实验项目名称继承与多态实验时间2015/10/11实验类型验证性设计性 综合性一、实验目的(1) 掌握派生类的声明方法和派生类构造函数的定义方法。(2) 掌握不同继承方式下,基类成员在派生类中的访问属性。 (3) 掌握在继承方式下,构造函数与析构函数的执行顺序与构造规则。(4) 学习虚基类在解决二义性问题中的作用。(5) 深入理解 C+的继承与多
2、态。二、实验要求题目如下:某公司有老板 Boss、雇员 Employee、小时工 HourlyWorker 和营销人员 CommWorker,他们的薪金计算方法如下:老板实行年薪制,如一年 15 万;雇员按月计酬,方法是基本工资+奖金;小时工按 工作时间计算报酬,方法是工作小时*每小时单价;营销人员按月计酬,方法是基本工资+ 销售利润*5%。每类人员都有姓名、职工编号、年龄、性别、工资等数据。设计计算各类人员报酬 的程序,用虚函数 getPay()计算各类人员的应得报酬,用虚函数 print()打印输出各位工 作人员的基本数据。三、实验内容与设计(主要内容,操作步骤、算法描述或程序代码) 对于
3、此题目,我通过定义一个头文件和两个源文件来实现本题目要求满足的功能 代码如下:(本试验基于 vs2010 运行) (1) 头文件 worker.h/worker.h#ifndef WORKER_H#define WORKER_H#include using namespace std;class Person/定义person类public:string name, id, sex, salarySystem;int age;Person() Person(string pname, int page, string pid, string psex, string psalarySystem
4、 = “month“): name(pname), age(page), id(pid), sex(psex), salarySystem(psalarySystem)virtual double getPay() return 0.0; ;virtual void print() ;class Boss : public Person/从person类继承出来的boss类public:Boss(string name, int age, string id, string sex, string salarySystem = “year“): Person(name, age, id, se
5、x, salarySystem) virtual double getPay();virtual void print();class Employee : public Person/从person类继承出来派生类员工类public:double bonus, baseSalary;Employee() Employee(string name, int age, string id, string sex, double ebonus=3000, double ebaseSalary = 4500, string salarySystem = “month“) : Person(name,
6、 age, id, sex, salarySystem), bonus(ebonus), baseSalary(ebaseSalary) virtual double getPay();virtual void print();class HourlyWorker : public Person/从person类继承出来派生类HourlyWorker类public:int workHour;double pieceOfHour;HourlyWorker(string name, int age, string id, string sex, int hworkHour, double hpie
7、ceOfHour = 13, string salarySystem = “hour“): Person(name, age, id, sex, salarySystem), workHour(hworkHour), pieceOfHour(hpieceOfHour) virtual double getPay();virtual void print();class CommWorker : public Person/从person类继承出来派生类CommWorker类public:double baseSalary, salesProfit;CommWorker(string name,
8、 int age, string id, string sex, double csalesProfit, double cbaseSalary = 4500, string salarySystem = “month“): Person(name, age, id, sex, salarySystem) , baseSalary(cbaseSalary), salesProfit(csalesProfit) virtual double getPay();virtual void print();#endif(2) 源文件 worker.cpp/worker.cpp#include “Std
9、Afx.h“#include “worker.h“#include using namespace std;/定义虚函数double Boss:getPay() return 150000;void Boss:print() cout #include #include “worker.h“using namespace std;/用于输出的main函数int main()cout (istream &,自定 义类 &); ostream &operator (ostream &,自定义类 &); 6)用一个指针调用派生类的函数时,将指针定义为指向基类的指针,基类的函数要定义为 虚函数,将各个派生类的地址赋值给指针,通过指针调用函数,实现多态性。实验内容和设计(A-E):操作过程、算法或代码(A-E):实验结果(A-E):实验分析和总结(A-E):教师评阅实验成绩(A-E): 反馈评语: