- 1、本文档共103页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3c面向对象程序设计
Visual C++面向对象编程语言 第三章 C++面向对象程序设计 面向过程和面向对象的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 例如五子棋,面向过程的设计思路就是首先分析问题的步骤: 1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。 而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为: 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 可以明显地看出,面向对象是以功能来划分问题,而不是步骤。 同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。 功能上的统一保证了面向对象设计的可扩展性。 比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。 如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。 在面向对象程序设计中,程序设计范型变成了:确定你需要哪些类型,为每个类型提供完整的一组操作。 理解面向对象设计的思想 例:计算一个矩形的面积和周长 计算一个矩形的面积和周长 从面向过程的角度出发思考这个问题; 先确定面积和周长的算法(这个很简单,小学知识) 编写2个方法分别计算面积和周长,在一个类里面 考虑到计算周长和面积需要至少2个参数,长和宽; 程序如下: int perimeter (int length, int width){return 2*(length + width);} int area (int length, int width){return length*width;} void main() {coutperimeter(4,5);cout“\n”coutarea (4,5);} 下面再从面向对象的角度出发,重新考虑这个问题: 一个长方形可以看成一个长方形对象。既然是对象,那么它就有属性(长和宽)和行为(周长和面积) 抽取长方形的共性,设计一个类 通过对象的行为,就可以求出某个具体的长方形对象的周长和面积 class Rectangle(){public:int length, width;int perimeter() {return 2*(length+width);}int area() {return length*width;} } void main(){Rectangle rect1=new Rectangle();rect1.length=10;rect1.width=5;coutrect1.perimeter();coutrect1.area();} 继续思考面向对象的特点 在面向过程的思想里,一个程序一般都是由一个个函数组成的,这些函数之间相互调用, 就形成了一个完整的程序,解决了一个问题。它的基本结构是: 函数一() { ……; } 函数二() { ……; } …… 主函数() { ……; } 在面向对象的思想中,是把这些都封装起来,形成一个类。 class 类名 { 函数一() { ……; } 函数二() { ……; } …… } 然后由这个类产生一个对象,比如:我们把一个类的类名起为 student 那么产生对象的方法就是: student s1; 这里s1是一个对象,产生了这个对象以后,才可以进行相关操作。 操作方法如: s1.函数一(); 假设我们要做一个小游戏,类似于网游里面的打怪,为简单起见,认为怪不打人,只让人打,他的血不断减少,直到死亡。 把所有怪物的共同特征抽象出来,于是我们得到一个类:怪物 class 怪物 { char 怪物名; int 血; } 怪物
您可能关注的文档
最近下载
- TBIE 004—2023通孔回流焊接技术规范团标.pdf
- 国开《MySQL数据库应用》形考1-4(试题及答案).pdf VIP
- 煤矿安全生产作业规程操作规程安全技术措施编制审批贯彻及执行管理制度.doc
- 2020年光学膜行业研究报告.pdf
- 采血管种类和应用ppt课件.pptx VIP
- 职业生涯报告六篇.pdf VIP
- Unit 4 Plants arounds us PartA Let's talk(课件)人教PEP版(2024)英语三年级上册.pptx
- 七年级上册生物:必考问答式知识点汇总(背诵+默写).docx
- 《青纱帐——甘蔗林》课件【中职专用】高教版 基础模块下册.pptx
- 国家开放大学学位英语历年真题试卷号1909.docx
文档评论(0)