《2022年面向对象程序设计实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计实验报告 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、0 / 9 综 合 实 验 报 告面向对象程序设计专业名称: 物联网工程 _ 班级:_2018级 2班_ 姓名:你哥哥学号:201802051928 信息科学与工程学院二零一三年七月精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 9 页第一题: 1 1.1题目概述 1 1.2设计思路 1 1.3设计说明与调试分析1 1.4编码实现 2 1.5程序运行结果 3 1.6设计心得 3 第二题: 4 2.1题目概述 4 2.2设计思路 4 2.3设计说明与调试分析4 2.4编码实现 4 2.5程序运行结果 6 2.6设计心得 7 精选学习资料
2、- - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 9 页1 / 9 第一题:1.1 题目概述用抽象类设计计算二维平面图形图形面积的程序,在基类TDshape 中设计纯虚函数area()和 printName(), area() 用于计算几何图形的面积,printName()用于打印输出几何图形的类名,如Triangle类的对象就打印输出“Triangle”。每个具体形状的类则从抽象类TDshape 派生,各自需要定义其他独有的数据成员和成员函数,并且定义area()和printName()的具体实现代码,如图所示。要求编写以TDshape为接口的函数,
3、借以访问具体类如Triangle和 Rectangle类的成员函数 area() , printName ()。1.2 设计思路由简到繁,逐步实现。1.3 设计说明与调试分析编写基类TDshape-编写虚函数- 编写继承类Triangle - 实例化TDshape和Triangle - 调 用 基 类 虚 函 数 实 现 调 用 继 承 类 相 应 函 数 - 同 样 的 方 式 处 理 继 承 类TDshape Virtual area() 0 Virtual printName() 0 Rectangle area() printName() getWitdth() setWidth()
4、Triangle area() printName() getWitdth() setWidth()_ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 9 页2 / 9 Rectangle. 1.4 编码实现#include using namespace std。class TDshape public: virtual void area()=0 。virtual void printName()=0 。class Triangle:public TDshape private: double width,height 。publi
5、c: void setwidth(double x)width=x。 void setheight(double x)height=x 。 double getwidth()return width。 double getheight()return height 。 void area()cout 面积: width*height*0.5endlendl。 void printName()cout图形: Triangle endl 。 。class Rectangle:public TDshape private: double width,height 。public: void setw
6、idth(double x)width=x。 void setheight(double x)height=x 。 double getwidth()return width。 double getheight()return height 。 void area()cout 面积: width*heightendlendl。 void printName()cout图形: Rectangle printName() 。p-area()。p=&r 。r.setwidth(120)。r.setheight(80)。p-printName() 。p-area()。 1.5 程序运行结果1.6 设计
7、心得1. 可以用引用和指针两种方式来通过访问基类虚函数实现访问相应类函数。2. 可以将main 函数中的相关类成员函数分离出去,方法是在类后面编写全局函数作为类和 main 函数的接口。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 9 页4 / 9 第二题:2.1 题目概述假设有一个工人类。形式如下:classWorker charname10 。intage 。doublesalary。public: Worker() Worker(.) voidSetData(char*Name,intAge,doublewage) voidDi
8、splay() 其中 name表示姓名, age 表示年龄, salary表示薪金,构造函数Worker() 实现个数据成员的初始化,SetData() 成员函数用于重置各数据成员的值,Display()用于显示输出个数据成员的值。完成该类的设计,并用STl 中的链表list管理该类的对象,要求至少建立两个链表,每个链表中至少存入Worker 类的三个对象,通过迭代器访问输出个节点对象的数据成员,并用链表的 merge 算法两表合并后输出链表节点的对象。2.2 设计思路由小到大,逐步实现。2.3 设计说明与调试分析设计类 - 引入链表以及迭代器- 重置成员值 - 压栈 - 迭代器访问并输出对象
9、- 链表合并- 迭代器访问并输出对象. 2.4 编码实现#include 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 9 页5 / 9 #include #include #defineN3/ 每个链表内类对象个数usingnamespacestd 。classWorker charname10。intage。doublesalary。public: Worker(char*Name=000,intAge=0,doublewage=0.0)strcpy(name,Name)。age=Age。salary=wage。 voidSetD
10、ata(char*Name,intAge,doublewage)strcpy(name,Name)。age=Age。salary=wage。 voidDisplay() cout 工人姓名: name 工人年龄: age 工人工资: salaryendl 。 。main() inti=0 。Workerobj1N 。Workerobj2N 。listL1,L2。list:iteratorpos 。/*-类对象赋值 -*/ for(i=0 。iN 。i+) obj1i.SetData(l1,10+i,1000.0+i)。 for(i=0 。iN 。i+) obj2i.SetData(l2,20+
11、i,2000.0+i)。 /*-列表赋值 -*/ for(i=0 。 iN 。 i+) L1.push_back(&obj1i)。/类对象压入栈L2.push_back(&obj2i)。 /*-输出合并前链表-*/ cout 合并前 L1 链表内对象:Display() 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 9 页6 / 9 cout 合并前 L2 链表内对象:Display() 。 /*-合并链表 L1,L2-*/ L1.merge(L2) 。/*-释放链表 L2-*/ while(!L2.empty() L2.pop_back() 。 /*-输出合并后链表-*/ coutnL1 与 L2 合并后链表内对象:Display() 。 return0。 2.5 程序运行结果精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 9 页7 / 9 2.6 设计心得1.LIST 链表内可以放类对象等变量. 2. 迭代器访问链表内类对象的成员函数的方法为: (*pos)-function()。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 9 页
限制150内