- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 2025年新疆投资发展集团有限责任公司人员招聘笔试备考题库带答案详解(名师推荐).docx
- 在线网课学习课堂《临床伦理与科研道德(山东大学)》单元测试考核答案.docx VIP
- 浅谈直驱风力发电机组偏航异响原因分析及结构优化.pdf VIP
- 商务与经济统计(原书第14版)Ch11.pptx VIP
- 化工厂安全考试题.doc VIP
- 大学生女性健康科普知识讲座幻灯片.ppt
- 《阿Q正传》课件63张.pptx VIP
- 渥太华自伤量表.docx VIP
- 【2025年新版交规题库】2025年版12123学法减分题库(学法减分300题).docx
- 商务与经济统计(原书第14版)Ch16.pptx VIP
文档评论(0)