C++实验四继承多态
更新时间:2023-10-18 12:38:01 阅读量: 综合文库 文档下载
面向对象程序设计实验报告
实验四
继承
多态
面向对象程序设计实验报告
一、 实验目的
(1)了解继承在面向对象程序设计中的重要作用。 (2)进一步理解继承与派生。
(3)掌握通过继承派生出一个新的类的方法。 (4)了解虚基类的作用和用法。
二、 实验设计
1.
实验任务一
(1)将《C++面向对象程序设计》第五章例题5.1的程序片段补充和改写成一个完整的正确的程序,用公用继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。
2.
实验任务二
(2)将《C++面向对象程序设计》第五章例题5.3的程序修改,补充和改写成一个完整的正确的程序,用保护继承方式。在程序中应包括输入数据的函数。
3. 实验任务三
(3)修改第二题程序,改为公用继承方式。上机调试程序,使之能正确运行并得到正确结果。
4. 实验任务四
分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:
(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。
(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。
(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。
(4)在类体中声明成员函数,在类外定义成员函数。
(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。
5. 实验任务五
事先编写好程序,上机调试和运行程序,分析结果。
(1)声明Point(点)类,由Point类派生出Circle(圆)类,再由Circle类派生出Cylinder(圆柱体)类。将类的定义部分分别作为3个头文件,对
面向对象程序设计实验报告
它们的成员函数的声明部分分别作为3个源文件(.cpp文件),在主函数中用#include命令把它们包含进来,形成一个完整的程序,并上机运行; (2)该任务采用什么方案实现:如程序的结构,算法思想,需要的输入、期望的输出,等;
(3)完成该任务的需要的主要步骤;
6. 实验任务6
事先编写好程序,上机调试和运行程序,分析结果。
(1)在《C++面向对象程序设计》第6章例6.3的基础上作以下修改,并作必要的讨论。
①把构造函数修改为带参数的函数,在建立对象时初始化。
②先不将析构函数声明为virtual,在main函数中另设一个指向Circle类对象的指针变量,使它指向gradl。运行程序,分析结果。
③不作第②点的修改而将析构函数声明为virtual,运行程序,分析结果。 (2)该任务采用什么方案实现:如程序的结构,算法思想,需要的输入、期望的输出,等;
(3)完成该任务的需要的主要步骤;
7. 实验任务7
事先编写好程序,上机调试和运行程序,分析结果。 (1)声明抽象基类Shape,由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。
(2)该任务采用什么方案实现:如程序的结构,算法思想,需要的输入、期望的输出,等;
(3)完成该任务的需要的主要步骤;
三、 实验记录及结果
1.
实验任务一
#include
#include
void get_value()
{cin>>num>>name>>sex;} void display()
{cout<<\ cout<<\
面向对象程序设计实验报告
cout<<\private: int num; char name[10]; char sex; };
class Student1:public Student {public:
void get_value_1() {get_value(); cin>>age>>addr; }
void display_1()
{cout<<\ cout<<\ } private: int age; }; int main() {Student1 stud1; stud1.get_value_1(); stud1.display(); stud1.display_1(); return 0; }
char addr[30];
2. 实验任务二
#include
#include
void get_value()
{cin>>num>>name>>sex;} void display()
{cout<<\ cout<<\ cout<<\private: int num; char name[10];
面向对象程序设计实验报告
char sex; };
class Student1:private Student {public:
void get_value_1() {get_value(); cin>>age>>addr; }
void display_1()
{cout<<\ cout<<\ } private: int age; }; int main() {Student1 stud1; stud1.get_value_1(); stud1.display_1(); return 0; }
char addr[30];
3. 试验任务三
#include
void get_value(); void display(); protected: int num; char name[10]; char sex; };
void Student::get_value() {cin>>num>>name>>sex;} void Student::display() {cout<<\ cout<<\
面向对象程序设计实验报告
{
Point *p=new Circle(2.5,1.8,4.5); delete p; return 0; }
源程序②:
#include
public:
Point(float a,float b):x(a),y(b){} ~Point() {
cout<<\ }
private: float x; float y; };
class Circle:public Point {
public:
Circle(int a,int b,int r):Point(a,b),radius(r){} ~Circle() {
cout<<\ }
private: float radius; };
int main() {
Point *p=new Circle(2.5,1.8,4.5); Circle *pt=new Circle(2.5,1.8,4.5); delete pt; return 0; }
源程序③:
#include
面向对象程序设计实验报告
public:
Point(float a,float b):x(a),y(b){} virtual ~Point() {
cout<<\ }
private: float x; float y; };
class Circle:public Point {
public:
Circle(float a,float b,float r):Point(a,b),radius(r){} virtual ~Circle() {
cout<<\ }
private: float radius; };
int main() {
Point *p=new Circle(2.5,1.8,4.5); delete p; }
7. 实验任务七
#include
virtual double area() const =0; //纯虚函数 };
//定义Circle类
class Circle:public Shape {
public:
Circle(double r):radius(r){} //结构函数
面向对象程序设计实验报告
virtual double area() const
{return 3.14159*radius*radius;}; //定义虚函数 protected:
double radius; //半径 };
//定义Rectangle类
class Rectangle:public Shape {public:
Rectangle(double w,double h):width(w),height(h){} //结构函数 virtual double area() const {return width*height;} //定义虚函数 protected:
double width,height; //宽与高 };
class Triangle:public Shape {public:
Triangle(double w,double h):width(w),height(h){} //结构函数 virtual double area() const {return 0.5*width*height;} //定义虚函数 protected:
double width,height; //宽与高 };
//输出面积的函数
void printArea(const Shape &s)
{cout< int main() { Circle circle(12.6); //建立Circle类对象circle cout<<\ =\ printArea(circle); //输出circle的面积 Rectangle rectangle(4.5,8.4); //建立Rectangle类对象rectangle cout<<\ printArea(rectangle); //输出rectangle的面积 Triangle triangle(4.5,8.4); //建立Triangle类对象 cout<<\ =\ printArea(triangle); //输出triangle的面积 return 0; }
正在阅读:
C++实验四继承多态10-18
期货基础知识——盈利模式03-29
实施高中物理自主学习教学模式的体会08-09
浅谈城市集中供热优势及可行性分析07-01
PBEM-WC1使用说明书V2.2(118×158)04-22
学生考试质量分析09-06
某高速公路石方控制爆破施工方案06-30
青果教务管理系统在教务管理中的应用与思考06-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 多态
- 继承
- 实验