《C++课程设计》指导.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《C课程设计》指导

《C++程序设计课程设计》指导 1. 任务描述和需求分析 ⑴ 用C++设计一个业务处理系统,其业务就是进行简单的几何计算: 输入圆的半径,计算并输出圆的周长和面积; 输入圆柱的半径和高,计算并输出圆柱的表面积和体积; 输入圆球的半径,计算并输出圆球的表面积和体积; 输入长方形的长和宽,计算并输出长方形的周长和面积; 输入长方体的长、宽和高,计算并输出长方体的表面积和体积。 ⑵ 系统启动时显示版本等信息。 希望大家首先一定要理解和明白我们这次实训的目的和意图:学习和掌握C++面向对象的程序设计思想和方法。 因此,凡是没有采用C++面向对象的程序设计思想和方法来实现的都是不合格的。 2. 系统分析与设计 通过分析,可以设计出完整的系统的总体框架和流程图。譬如,某银行综合业务系统的总体框架和流程图,如下图1。 为了方便设计和调试,可以先单独实现各功能模块。我们的系统没有“用户管理”等功能要求,因此,系统的总体框架可简化为图2。 2.1 分析与设计功能模块的总体框架和流程图 单独实现“业务处理”的系统的总体框架和流程图如图3。 其中,创建各对象的函数返回指向对象的指针,并存入基类指针变量pShape中,该变量作为函数virtualViaPointer的实参,由virtualViaPointer函数实现统一的计算并输出。 当然,该图只是程序的一个框架结构,具体的程序还有很多细节需要补充,如释放动态创建的对象,输出计算结果后实现停顿以让用户看清结果等。 请同学们自己画出函数fnCircle( ),fnCylinder( ),fnSphere ( ),fnRectangle( ),fnCuboid( )的流程图。 2.2 分析与设计数据结构circum(),area(),volume()。再加输出对象名称和对象属性的函数print(),可以构成一个包含公共接口的抽象类。总共6个类。 由于所有计算与对象的位置无关,因此,圆和圆球的属性只有半径,圆柱的属性只有半径和高,长方形的属性只有长和宽,长方体的属性只有长、宽和高。若公共接口的抽象类为Shape,则圆类Circle继承Shape,圆柱类Cylinder继承Circle,圆锥类Cone继承Cylinder;长方形类Rectangle继承Shape, 长方体类Cuboid继承Rectangle。它们的层次结构图如下。 类族的设计步骤: 设计基类Shape 通过继承Shape,设计圆类Circle和长方形类Rectangle 通过继承Circle,设计圆柱类Cylinder和圆球类Sphere 通过继承Rectangle,设计长方体类Cuboid 通过继承Cylinder,设计圆锥类Cone C++程序设计的思想精髓就是这样顺其自然地重用已有的代码,在现有的基础上再加扩展,从而使程序设计和维护的代价大大减小,极大地提高了软件的生产率。 每个类的属性和方法(成员函数)如下: Shape +circum( ) const : virtual double +volume( ) const : virtual double +area( ) const : virtual double +print( ) const = 0 : virtual void 基类Shape泛指所有图形类,根本不知它是圆的还是方的,也不知它的大小,所以没有或没法确定它的数据成员。设计该类的目的是为整个类族提供一组公共的接口函数,并可利用虚函数这一多态机制实现统一的操作界面。 Circle -radius : double +Circle( in double = 0.0 ) +setRadius( in double ) : void +getRadius( ) const : double +circum( ) const : double +area( ) const : virtual double +print() const : virtual void 圆类Circle对象的大小是由半径确定的,半径是圆类固有的属性,圆类的成员函数的计算处理都与它有关,所以必须将它作为数据成员,与成员函数封装在一起,构成圆类。 没有真正理解c++程序设计思想精髓的人会把它切割下来,放到基类Shape中作为数据成员。这种认识错误体现在程序设计中就会影响类的扩展性和维护性。即使程序最终也能实现需要的功能,但在程序设计思想上那也是犯了根本性的错误,说明对类的继承与派生这一核心问题还没有真正理解。 Cylinder -radius : double -height : double +Cylinder( in double = 0.0, in double = 0.0 ) +setRadius( in d

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档