ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:78.61KB ,
资源ID:18047551      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18047551.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(面向对象程序设计报告Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

面向对象程序设计报告Word文档格式.docx

1、设计如下类,其功能和部分成员如下:Object: 抽象类,所有的物体都有价值(profit)属性;Point: 点的位置三维空间;Line Segment(线段),Rectangle,Cuboid, Square,Cube,Circle,Cylinder功能:能够实现上述物体的移动(move),放大(zoomin),缩小(zoomout),大小比较(compare),打印物品信息(cout编号、面积、容积和价值)等操作,且所有物品的对象实现自动编号。移动: Line类对象移动其中点,Rectangle、Square和Circle: 移动重心,Cubiod、Cube和Cylinder: 移动底面

2、重心放大和缩小:以倍数为参数,进行相应组件的放大和缩小判断:空间内某一点(Point)是否在另一物体内;线段(Line)是否和另一物体相交默认比较方式:Line: 比较长度,Rectangle、Square和Circle:比较面积Cubiod、Cube和Cylinder: 比较体积。同维度(或不同维度)空间内的不同类物体之间可进行大小比较。 相等返回0,小于返回-1、大于返回1再设计一个容器类(Container). 容器具有最大容量属性。 能容纳以上定义的各种3D物品(Cylinder,Cube和Cuboid), 实现添加一个物品(add),移除容器里的一个物品(remove),重载, 排序

3、:不改变物品在容器中的位置(下标),把物品的id按照排序结果(根据物品某一关键字)返回 ;附加功能:给定一定数量的物品(假设物品的总容量超过容器最大容量),挑选部分装入容器中,设计算法实现所装物品的总价值最大。 需求分析1.本次上机题目主要运用继承和派生建立多个类,这些类都主要一个点类point继承而来,然后每一个类设计一个头文件和一个源文件,然后最后设计一个操作类container,用来处理移动(move),放大(zoomin),缩小(zoomout),大小比较(compare),打印物品信息(cout编号、面积、容积和价值)等操作,最后设计一个主函数,用来控制整个系统。2.系统环境、运行要

4、求: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新成员。这样就完成了继承与派生类的设计。除了这些类,还必须有操作,否则就没有意义了,要实现上述

5、物体的move,zoomin,zoomout,compare,打印物品信息等操作,这里要用到运行时的多态,即需要基类的指针,将在下一条详细讲,这里要做的是函数成员的设计,这要求在每个类要有同名函数,即(overridingavirtualfunction),返回值类型,参数类型等都得一样,而且基类的要是virtualfunction。再设计一个容器类Container,所有物品的对象实现自动编号。这里的容器要用vector来做,我们在Container类中定义vectorPo数据成员既可实现自动编号又可实现运行时的多态。详细设计在所有的类Point,Line Segment(线段),Recta

6、ngle,Cuboid, Square,Cube,Circle,Cylinder中包含一个构造函数,一个析构函数,并且在每个类中定义该类面积(area),长度(lenth),体积(volume)的计算方法,同时定义各个类放大,缩小,移动,打印功能的执行方法。在操作类中定义所有的操作移动(move),放大(zoomin),缩小(zoomout),大小比较(compare),打印物品信息,其中,移动,放大,缩小几个功能返回该类所在的原函数进行,大小比较在操作函数中进行,采用的方法是有体积比较体积,没体积比面积,没面积比长短,打印操作还分为全部打印和单个打印。在主函数中包含 了一个功能菜单,用来方便

7、操作,功能菜单通过指针连向所有功能函数。功能实现示意图菜单圆类圆柱类长方体类点类线矩形类正方体操作显示 继承测试添加物体的信息移动物体的位置放大或缩小物体比较 打印删除结论本学期较上学期来说做了更多的课程设计,有了更多的实践经验,对于此次的设计,我感觉知识的综合能力较强,毕竟c+已经学习了一个学期,对于类的设计也不能仅仅局限于一个或俩个,要学会从分散到集中,从少到多。本次上机的主要目的是熟悉继承与派生(inheritanceandpolymorphism),这是c+的核心内容,也是比较难掌握的,但总的来说,这次上机实践我的收获还是很大的,我从中找到我的错误和不足之处。对于这个面向对象的程序设计

8、,我个人认为这个程序的优点在于:1.在做的过程中使用了多文件的结构,便于编译和改错;2.类的设计,在程序中共有10个类,每个类都有自己独立的数据成员和函数成员,声明和定义都是分开的,都是按照类的标准设计来做的;3.实现了运行时的多态,在Container类中用了vectorPo,即指向基类的指针容器,。在缺点方面,首先是在继承与派生时对概念弄得不是很清晰,逻辑上出现了一些错误,再加上理解题意出了问题,导致派生关系弄得不对或复杂了,还有就是关于继承类的构造函数没有写好,忽略了关键点,即基类成员和新增成员的使用和关系,还有就是有功能没有实现,像给定一定数量的物品,假设物品的总容量超过容器最大容量,

9、挑选部分装入容器中,设计算法实现所装物品的总价值最大。程序安全性不足,存在内存泄漏等等, C+课本的教学知识已经学完了,但对于我来说还差得很远很远,光靠这一年的时间是远远不够的,需要更多的知识灌溉和实践,C+之路曼曼其修远兮,吾将上下而求索。在以后的学习生活中多练习,用勤补拙,不断提高自己的c+水平。要成为一名合格的程序员还有许多的路要走,我会一直坚持下去!附录*point.h*#ifndef POINT_H#define POINT_H#includevector#includeObject.husing namespace std;class Point :public Object pr

10、otected: double m_x, m_y, m_z;public: Point() :Object() m_x = m_y = m_z = 0; Point(Point & c) :Object(c) m_x = c.m_x; m_y = c.m_y; m_z = c.m_z; Point(double a, double b, double c, double d); void getPoint(); virtual double getlength() return 0; virtual double getarea() return 0; virtual double getvo

11、lume() return 0; virtual void movexyz(); virtual void zoom(); virtual void print(); Point() ;#endif*line.h*#ifndef LINE_H#define LINE_HPoint.hclass Line :virtual public Point double m_length; Line() :Point() m_length = 0; Line(Line &Point(c) m_length = c.m_length; Line(double a, double b, double c,

12、double d, double e); double getlength(); double getvolume() return 0; double getarea() return 0; void movexyz(); void zoom(); void print(); Line() *circle.h*#ifndef CIRCLE_H#define CIRCLE_Hclass Circle : double m_R; Circle() : m_R = 0; Circle(Circle & m_R = c.m_R; Circle(double a, double b, double c

13、, double d, double e); double getarea(); double getlength() return 0; Circle() *container.h*#ifndef CONTAINER_H#define CONTAINER_HLine.hCylinder.hCube.hCuboid.hclass Container private: Point *pi20; Point po20; Line li20; Circle ci20; Cylinder cy20; Square sq20; Rectangle re20; Cuboid cub20; Cube cu2

14、0; const double V = 50; double Vc = 0; vector Po; void Addobject(); void Moveposition(); void Zoominorout(); void Compare(); void Print(); void Deleteobject(); Point* & operator(int i);*cube.h*#ifndef CUBE_H#define CUBE_HSquare.hclass Cube :public Square double m_High; Cube(); Cube(double p, double

15、x1, double x2, double x3, double r, double m_High); Cube(Cube &Square(c) m_High = c.m_High; double getvolume(); Cube() ;*cuboid.h*#ifndef CUBOID_H#define CUBOID_HRectangle.hclass Cuboid :public Rectangle Cuboid(); Cuboid(Cuboid &Rectangle(c) Cuboid(double p, double x1, double x2, double x3, double r

16、1, double r2, double m_High); Cuboid() ;*cylinder.h*#ifndef CYLINDER_H#define CYLINDER_HCircle.hclass Cylinder :public Circle double m_high; Cylinder() :Circle() m_high = 0; Cylinder(Cylinder &Circle(c) m_high = c.m_high; Cylinder(double a, double b, double c, double d, double e, double f); Cylinder

17、() *rectangle.h*#ifndef RECTANGLE_H#define RECTANGLE_Hclass Rectangle :public Point double R1, R2; Rectangle(); Rectangle(Rectangle & R1 = c.R1; R2 = c.R2; Rectangle(double p, double x1, double x2, double x3, double r1, double r2); Rectangle() ;*square.h*#ifndef SQUARE_H#define SQUARE_Hclass Square

18、: double R; Square(); Square(Square & R = c.R; Square(double p, double x1, double x2, double x3, double r); Square() ;*object.h*#ifndef OBJECT_H#define OBJECT_Hconst double PI = 3.14;class Object double Profit; Object() :Profit(0) Object(double a) :Profit(a) Object() virtual void print() = 0;*point.

19、cpp*Point:Point(double a, double b, double c, double d) :Object(a), m_x(b), m_y(c), m_z(d) void Point:getPoint() cout x坐标: m_x y坐标: m_y z坐标: m_z a b c; m_x = a; m_y = b; m_z = c;zoom() 点不能放大或缩小print() 点: cout 价值: Profit 坐标:(,)*line.cpp*Line:Line(double a, double b, double c, double d, double e) :Point(a*e, b, c, d), m_length(e) double Line:getlength() return m_length;void Line:请重新输入中点坐标: m_

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1