欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    面向对象程序设计报告.docx

    • 资源ID:7705929       资源大小:137.77KB        全文页数:33页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    面向对象程序设计报告.docx

    1、面向对象程序设计报告面向对象程序设计(C+) 课程设计报告班级:191152学号:20151001188姓名:夏体凡日期:2016年7月4日 一、原创性申明3二、题目与要求4三、需求分析.4四、概要设计.5五、 详细设计.5六、测试.7七、结论 .9八、附录 .11 原创性声明:本人声明报告者中的内容和程序为本人独立完成,引用他人的文献、数据、 图件、资料均已明确标注出。除标注内容外,不包含任何形式的他人成果,无侵 权和抄袭行为,并愿意承担由此而产生后果。作者签字: 时间:指导教师评语:课程成绩:程序界面 (10 分)程序结构和功能 (40 分)程序安全和效率 (40 分)报告 (10 分)指

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

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

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

    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新成员。这样就完成了继承与派生类的设计。除了这些类,还必

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

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

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

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

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

    11、tected: 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 getvol

    12、ume() return 0; virtual void movexyz(); virtual void zoom(); virtual void print(); Point() ;#endif*line.h*#ifndef LINE_H#define LINE_H#include#include#includePoint.husing namespace std;class Line :virtual public Point protected: double m_length;public: Line() :Point() m_length = 0; Line(Line & c) :P

    13、oint(c) m_length = c.m_length; Line(double a, double b, double c, double d, double e); double getlength(); double getvolume() return 0; double getarea() return 0; void movexyz(); void zoom(); void print(); Line() ;#endif*circle.h*#ifndef CIRCLE_H#define CIRCLE_H#include#include#includePoint.husing n

    14、amespace std;class Circle :virtual public Point protected: double m_R;public: Circle() :Point() m_R = 0; Circle(Circle & c) :Point(c) m_R = c.m_R; Circle(double a, double b, double c, double d, double e); double getarea(); double getlength() return 0; double getvolume() return 0; void movexyz(); voi

    15、d zoom(); void print(); Circle() ;#endif*container.h*#ifndef CONTAINER_H#define CONTAINER_H#include#include#includeLine.h#includeCylinder.h#includeCube.h#includeCuboid.husing namespace std;class Container private: Point *pi20; Point po20; Line li20; Circle ci20; Cylinder cy20; Square sq20; Rectangle

    16、 re20; Cuboid cub20; Cube cu20; const double V = 50; double Vc = 0; vector Po;public: void Addobject(); void Moveposition(); void Zoominorout(); void Compare(); void Print(); void Deleteobject(); Point* & operator(int i); ;#endif*cube.h*#ifndef CUBE_H#define CUBE_H#include#include#includeSquare.husi

    17、ng namespace std;class Cube :public Square protected: double m_High;public: Cube(); Cube(double p, double x1, double x2, double x3, double r, double m_High); Cube(Cube & c) :Square(c) m_High = c.m_High; double getarea() return 0; double getlength() return 0; double getvolume(); void movexyz(); void

    18、zoom(); void print(); Cube() ;#endif*cuboid.h*#ifndef CUBOID_H#define CUBOID_H#include#include#includeRectangle.husing namespace std;class Cuboid :public Rectangle protected: double m_High;public: Cuboid(); Cuboid(Cuboid & c) :Rectangle(c) m_High = c.m_High; Cuboid(double p, double x1, double x2, do

    19、uble x3, double r1, double r2, double m_High); double getvolume(); double getlength() return 0; double getarea() return 0; void movexyz(); void zoom(); void print(); Cuboid() ;#endif*cylinder.h*#ifndef CYLINDER_H#define CYLINDER_H#include#include#includeCircle.husing namespace std;class Cylinder :pu

    20、blic Circle private: double m_high;public: Cylinder() :Circle() m_high = 0; Cylinder(Cylinder & c) :Circle(c) m_high = c.m_high; Cylinder(double a, double b, double c, double d, double e, double f); double getvolume(); double getlength() return 0; double getarea() return 0; void movexyz(); void zoom

    21、(); void print(); Cylinder() ;#endif*rectangle.h*#ifndef RECTANGLE_H#define RECTANGLE_H#include#include#includePoint.husing namespace std;class Rectangle :public Point protected: double R1, R2;public: Rectangle(); Rectangle(Rectangle & c) :Point(c) R1 = c.R1; R2 = c.R2; Rectangle(double p, double x1

    22、, double x2, double x3, double r1, double r2); double getarea(); double getlength() return 0; double getvolume() return 0; void movexyz(); void zoom(); void print(); Rectangle() ;#endif*square.h*#ifndef SQUARE_H#define SQUARE_H#include#include#includePoint.husing namespace std;class Square :public P

    23、oint protected: double R;public: Square(); Square(Square & c) :Point(c) R = c.R; Square(double p, double x1, double x2, double x3, double r); double getarea(); double getlength() return 0; double getvolume() return 0; void movexyz(); void zoom(); void print(); Square() ;#endif*object.h*#ifndef OBJEC

    24、T_H#define OBJECT_H#include#includeconst double PI = 3.14;using namespace std;class Object protected: double Profit;public: Object() :Profit(0) Object(double a) :Profit(a) Object() virtual void print() = 0;#endif*point.cpp*#includePoint.hPoint:Point(double a, double b, double c, double d) :Object(a)

    25、, m_x(b), m_y(c), m_z(d) void Point:getPoint() cout x坐标: m_x y坐标: m_y z坐标: m_z endl;void Point:movexyz() double a, b, c; cout 请重新输入坐标: a b c; m_x = a; m_y = b; m_z = c;void Point:zoom() cout 点不能放大或缩小 endl;void Point:print() cout 点: endl; cout 价值: Profit endl; cout 坐标: ( m_x , m_y , m_z ) endl;*line.cpp*#includeLine.hLine: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:movexyz() double a, b, c; cout 请重新输入中点坐标: a b c; m_x = a; m_y = b; m_z = c;void Line:zoom()


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开