实验2类的继承与派生报告图形类设计与员工管理.docx
- 文档编号:3024105
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:21
- 大小:79.95KB
实验2类的继承与派生报告图形类设计与员工管理.docx
《实验2类的继承与派生报告图形类设计与员工管理.docx》由会员分享,可在线阅读,更多相关《实验2类的继承与派生报告图形类设计与员工管理.docx(21页珍藏版)》请在冰豆网上搜索。
实验2类的继承与派生报告图形类设计与员工管理
实验报告
艺术与设计学院数字媒体技术专业班成绩评定_______
学号姓名(合作者____学号__________)教师签名_______
预习情况
操作情况
考勤情况
数据处理情况
实验二题目类的继承与派生第11周星期2第34节
一、实验目的与要求
实验目的:
1、理解继承在面向对象程序设计中的重要作用;
2、理解继承和派生的概念;
3、掌握通过继承派生出一个新类的方法。
实验要求:
实验前应复习类的继承与派生的相关知识,在此基础上编写程序,运行程序并记录运行结果。
在程序调试中,要实现准备充分的测试用例;保存源程序、目标文件、可执行文件。
二、实验方案
1.图形类
设计一个图形基类:
Shape,在此基础上派生Rectangle、Circle、Triangle类。
要求:
(1)Cirlce类基本信息:
圆心坐标、半径;Rectangle类基本信息:
长、宽;Triangle类基本信息:
三个顶点坐标;其中:
成员变量为private属性,成员函数为public属性;
(2)每个图形类有多个构造函数:
缺省构造函数、带参数的构造函数;(3)每个图形类有计算图形的面积GetArea(),显示图形的基本信息函数Show(),修改基本信息的函数Set(形参)。
6[实验提示]
(1)在派生类的构造函数中,应注意对基类数据成员的初始化;
(2)各类图形面积的计算方法不同,因此不能在基类Shape中统一确定计算的方法。
在基类Shape中实现计算面积功能的函数体GetArea()应为空,在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能。
[测试数据]Circle:
圆心(30,45)半径:
35圆心(50,89)半径:
23Rectangle:
长:
30宽:
53长:
28宽:
24Triangle:
顶点:
(34,45)、(89,45)、(54,67)顶点:
(22,34)、(67,43)、(86,64)
2.员工管理
某小型公司有四类人员:
总经理、技术人员、销售经理、推销员。
设计一个基类employee,派生出manager(总经理)、technician(技术人员)、salesmanager(销售经理)、saleman(推销员)。
销售经理既是经理又是销售人员,兼具两类人员的特点,因此同时继承manager和salesman两个类。
(1)类定义1)employee类:
基本信息:
编号、姓名、性别、出生日期、职位、薪水等;出生日期使用自定义的Date(日期)类;其中:
基本信息为private属性,成员函数为public属性;多个构造函数:
缺省构造函数、带参数的构造函数、带默认参数的构造函数;72)Date类:
成员变量:
年、月、日成员函数:
SetYear(intyear)、SetMonth(intmonth)、SetDay(intday)GetYear()、GetMonth()、GetDay()3)派生类technician:
新增属性:
工作时间派生类saleman:
新增属性:
销售额、所属部门
(2)实现人员信息的录入,用成员函数display()显示员工信息;(3)计算并显示个人月薪,用成员函数pay()计算不同员工的薪水:
月薪计算办法:
总经理拿固定月薪8000元,技术人员按每小时25元领取月薪;推销员的月薪按当月销售额的4%提成;销售经理固定月薪5000元加所管辖部门当月销售总额的5‰。
[实验提示]
(1)在基类中,除了定义构造函数和析构函数,还应统一定义对各类人员信息应有的操作,规范类族中各派生类的基本行为,但是各类人员的月薪计算方法不同,不能在基类employee中统一确定计算方法。
各类人员信息的显示内容不同,同样不能在基类employee中统一确定显示方法。
在基类中实现上述功能的函数体应为空,在派生类中根据同名覆盖原则定义各自的同名函数实现具体功能。
2、将基类employee分成两个独立文档:
employee.h(类声明头文件)和employy.cpp(类实现文件)3、“职位”的类型设定为int;
三、实验结果和数据处理
1图形类设计
#include
#include
usingnamespacestd;
classShape
{
public:
virtualdoubleArea(){return0;}
virtualdoublePerim(){return0;}
virtualvoidShow(){}
};
classRectangle:
publicShape//矩形
{
private:
doublele;//长
doublew;//宽
public:
Rectangle(doublele=0,doublew=0)
{
this->le=le;
this->w=w;
}
~Rectangle()
{
}
doubleArea()const
{
returnle*w;
}
doublePerim()const
{
return2*(le+w);
}
voidShow()
{
cout<<"Areais:
"<
cout<<"Perimis:
"< } }; constdoublePI=3.1415926535; classCircle//圆形 { private: intx; inty; doubler;//半径 public: Circle(doubler=0) { this->r=r; } ~Circle() { } doubleArea()const { returnPI*r*r; } doublePerim()const { return2*PI*r; } voidShow() { cout<<"Areais: "< cout<<"Perimis: "< } }; classTriangle: publicShape//三角形 { private: inta,b,c,d,e,f; public: doublel,m,n; Triangle() { this->a=a; this->b=b; this->c=c; this->d=d; this->e=e; this->f=f; } ~Triangle() { } doubleArea()const { doubleS; S=(l+m+n)/2; returnsqrt(S*(S-l)*(S-m)*(S-n)); } doublePerim()const { return(l+m+n); } voidShow() { cout<<"Areais: "< cout<<"Perimis: "< } }; voidmain() { inta,b,c,d,e,f,x,y; doublele,w,r,l1,m1,n1; cout<<"Rectangle: "< inputa: cout<<"请输入矩形的长和宽: "< cin>>le>>w; if(le<=0||w<=0) { cout<<"输入的长宽不能构成矩形"< gotoinputa; } else { RectangleRect(le,w); Rect.Show(); cout<<"Circle: "< } inputb: cout<<"请输入圆的圆心坐标xy和半径r: "< cin>>x>>y>>r; if(r<=0) { cout<<"输入的半径不能构成圆"< gotoinputb; } else { CircleCir(r); Cir.Show(); cout<<"Triangle: "< } inputc: cout<<"请输入三角形的顶点坐标(六个数字): "< cin>>a>>b>>c>>d>>e>>f; l1=sqrt((a-c)*(a-c)+(b-d)*(b-d)); m1=sqrt((a-e)*(a-e)+(b-f)*(b-f)); n1=sqrt((e-c)*(e-c)+(f-d)*(f-d)); TriangleTri; Tri.l=l1; Tri.m=m1; Tri.n=n1; if(l1<=0||m1<=0||n1<0||(l1+m1)<=n1||(m1+n1)<=l1||(l1+n1)<=m1) { cout<<"输入的三个顶点不能构成三角形"< gotoinputc; } else { Tri.Show(); } system("pause"); } 2员工管理 头文件程序: #pragmaonce classemployee { private: intduty; charnum,name,sex,salary; public: employee(charnum=0,charname=0,charsex=0,intduty=0,charsalary=0) { this->num=num; this->duty=duty; this->sex=sex; this->salary=salary; this->name=name; } voidSetin(){} voidpay(){} voiddisplay(){} }; classDate { public: voidSetYear(intyear); voidSetMonth(intmonth); voidSetDay(intday); voidGetYear(intyear); voidGetMonth(intmonth); voidGetDay(intday); }; 源文件程序: #include"employee.h" #includ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 继承 派生 报告 图形 设计 员工 管理