面向对象程序设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
放大和缩小:以倍数为参数,进行相应组件的放大和缩小
判断:空间内某一点(Point)是否在另一物体内;线段(Line)是否和另一物体相交
默认比较方式:Line: 比较长度,Rectangle、Square和Circle:比较面积
Cubiod、Cube和Cylinder: 比较体积。同维度(或不同维度)空间内的不同类物体之间可进行大小比较。 相等返回0,小于返回-1、大于返回1
附加功能:给定一定数量的物品(假设物品的总容量超过容器最大容量),挑选部分装入容器中,设计算法实现所装物品的总价值最大。
需求分析
1.本次上机题目主要运用继承和派生建立多个类,这些类都主要一个点类point继承而来,然后每一个类设计一个头文件和一个源文件,然后最后设计一个操作类container,用来处理移动(move),放大(zoomin),缩小(zoomout),大小比较(compare),打印物品信息(cout<<编号、面积、容积和价值)等操作,最后设计一个主函数,用来控制整个系统。
作者签字: 时间:
指导教师评语:
课程成绩:
程序界面 (10 分)
程序结构和功能 (40 分)
程序安全和效率 (40 分)
报告 (10 分)
指导教师签字: 时间
题目与要求
设计如下类,其功能和部分成员如下:
Object: 抽象类,所有的物体都有价值(profit)属性;Point: 点的位置三维空间;Line Segment(线段),Rectangle,Cuboid, Square,Cube,Circle,Cylinder
再设计一个容器类(Container). 容器具有最大容量属性。
功能: 能容纳以上定义的各种3D物品(Cylinder,Cube和Cuboid), 实现添加一个物品(add),移除容器里的一个物品(remove),重载[], 排序:不改变物品在容器中的位置(下标),把物品的id按照排序结果(根据物品某一关键字)返回 ;
五、 详细设计…………………………………….……5
六、测试……………………………………………….….7
七、结论…………………………………………….…..9
八、附录………………………………………….….11
原创性声明:
本人声明报告者中的内容和程序为本人独立完成,引用他人的文献、数据、 图件、资料均已明确标注出。除标注内容外,不包含任何形式的他人成果,无侵 权和抄袭行为,并愿意承担由此而产生后果。
详细设计
在所有的类Point,Line Segment(线段),Rectangle,Cuboid, Square,Cube,Circle,Cylinder中包含一个构造函数,一个析构函数,并且在每个类中定义该类面积(area),长度(lenth),体积(volume)的计算方法,同时定义各个类放大,缩小,移动,打印功能的执行方法。
在操作类中定义所有的操作移动(move),放大(zoomin),缩小(zoomout),大小比较(compare),打印物品信息,其中,移动,放大,缩小几个功能返回该类所在的原函数进行,
大小比较在操作函数中进行,采用的方法是有体积比较体积,没体积比面积,没面积比长短,
打印操作还分为全部打印和单个打印。
面向对Βιβλιοθήκη Baidu程序设计(C++)
课程设计报告
班级:191152
学号:20151001188
姓名:夏体凡
日期:2016年7月4日
一、原创性申明…………………………………………3
二、题目与要求…………………………………………4
三、需求分析…………………………………………….4
四、概要设计……………………………….…………..5
2.系统环境、运行要求:VisualStudio2015
概要设计
从设计的要求可知,要有一个最底层的抽象基类即Object类,然后就是多个类之间的关系,Point继承Object——然后Line继承Point,添加length新成员;Circle继承Point,添加新成员R;Square继承Point,添加L1新成员;Rectangle继承Point,添加L1,L2新成员;最后Cylinder继承Circle,添加height新成员;Cube继承Square,添加high新成员;Cuboid继承Rectangle,添加high新成员。这样就完成了继承与派生类的设计。除了这些类,还必须有操作,否则就没有意义了,要实现上述物体的move,zoomin,zoomout,compare,打印物品信息等操作,这里要用到运行时的多态,即需要基类的指针,将在下一条详细讲,这里要做的是函数成员的设计,这要求在每个类要有同名函数,即(overridingavirtualfunction),返回值类型,参数类型等都得一样,而且基类的要是virtualfunction。再设计一个容器类Container,所有物品的对象实现自动编号。这里的容器要用vector来做,我们在Container类中定义vector<Point*>Po数据成员既可实现自动编号又可实现运行时的多态。
功能:能够实现上述物体的移动(move),放大(zoomin),缩小(zoomout),大小比较(compare),打印物品信息(cout<<编号、面积、容积和价值)等操作,且所有物品的对象实现自动编号。
移动: Line类对象移动其中点,Rectangle、Square和Circle: 移动重心,Cubiod、Cube和Cylinder: 移动底面重心
在主函数中包含 了一个功能菜单,用来方便操作,功能菜单通过指针连向所有功能函数。
功能实现示意图
继承
测试
添加物体的信息
移动物体的位置
放大或缩小物体
比较
打印
删除
结论
本学期较上学期来说做了更多的课程设计,有了更多的实践经验,对于此次的设计,我感觉知识的综合能力较强,毕竟c++已经学习了一个学期,对于类的设计也不能仅仅局限于一个或俩个,要学会从分散到集中,从少到多。本次上机的主要目的是熟悉继承与派生(inheritanceandpolymorphism),这是c++的核心内容,也是比较难掌握的,但总的来说,这次上机实践我的收获还是很大的,我从中找到我的错误和不足之处。对于这个面向对象的程序设计,我个人认为这个程序的优点在于:
相关文档
最新文档