- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象的程序设计
面向对象程序(OOP)设计概述
面向过程与面向对象程序设计
面向过程的程序设计
面向过程的程序设计是基于过程的语言(如C)常用的一种编程方法。它主要是强调把整个系统划分为细小的功能模块,称为过程,每个过程用以实现不同的功能,使用的时候按预定的步骤调用就可以了。同时,还要编写一个具有程序入口功能的主程序,当运行一个软件时,主程序会先运行,并按照用户的需要调用其他过程,直到程序运行结束。由此可见,面向过程的程序的执行方式是过程驱动或步骤驱动。
当完成一个程序设计后,如果程序的功能变了,就必须修改程序或重新设计程序,因此,面向过程的程序设计方式代码重用率很低,不便于维护。
面向过程程序设计模式:
例如:开发五子棋游戏软件,面向过程的设计思路就是首先分析问题的步骤:
①开始游戏
②绘制画面
③黑子下棋
④绘制画面
⑤判断输赢
⑥白子下棋
⑦绘制画面
⑧判断输赢
⑨返回步骤②
⑩输出最后结果
把上面每个步骤用分别的函数来实现,问题就解决了。
存在着如下缺陷:
(1) 以过程(功能)为单位,不能和现实世界很直观地映射 ,不易于理解。
(2) 程序的定律是:程序=(算法)+(数据结构),而传统的程序设计方法是算法和数据分离的。
(3) 面向功能的分解,而用户的改变绝大多数是面向功能的改变,功能实现分散在各过程中,不易于维护和功能扩展。
(4) 数据结构与算法分离,不利于信息隐藏。
如下棋规则变了,必须修改与规则相关的各过程,再比如要加入悔棋功能,那么从输入到判断到显示这一连串的步骤都要改动。
面向对象程序设计
面向对象的程序设计OOP(Object Oriented Programming)是在面向过程的基础上发展起来的一种新的程序设计思想。
在面向对象的程序设计中,将系统分成若干个功能实体,称为对象,对象是构成程序的基本单位和运行实体。每一个对象都有自己的数据和行为,它们均被封装在对象内部,通过这样若干个对象的相互作用来实现程序设计的设计目标。
同样分析五子棋游戏,只需为该系统创建以下几类对象:
(1)黑白双方对象:这两种对象除了颜色不一样外,其余的数据和行为都是一模一样的。
(2)棋盘对象:负责绘制画面。
(3)规则对象:负责判定诸如犯规、输赢等。
当程序运行时,第一类对象(黑白双方对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
可以看出,这种思想方式,完全与现实世界相吻合。
面向对象程序设计模式:
面向过程的程序的执行路线是代码事先确定好的,而面向对象的程序的执行则是由事件驱动实现的,也就是说完全取决于用户在使用程序时激活了什么事件,这种程序执行方式叫事件驱动方式。
演示学生公寓管理系统,理解事件驱动。
面向对象程序设计的基本概念
抽象
从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫做抽象。抽象是形成概念的必须手段。
抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。
抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看做一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。数据抽象是指根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是面向对象分析的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即),的外部只需要知道它做什么,而不必知道它如何做。对象是运行期的基本实体把数据和函数包装在一个单独的单元(称为类)的行为称为封装。面向对象编程的封装性原则要求不能直接访问类中的数据成员。这主要是因为:
— 如果直接访问类的数据成员,就必须充分了解类的实现细节,这有悖于隐藏设计细节的思想,会限制代码的重用性和维护性。
— 如果直接访问类的数据成员,就可能有意或无意地破坏对象中的数据,可能会导致难以调试的程序缺陷。继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。
在OOP中,继承的概念很好的支持了代码的重用性多态是OOP的另一个重要概念。多态的意思是事物具有不同形式的能力。
多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。多态在实现继承的过程中被广泛应用。[modifiers] class ide
您可能关注的文档
- 4108sj_第一节 人地关系思想演变.doc
- 45095氮氧自由基催化有机物氧化.pdf
- 61850变电站对运行的设计要求.pdf
- 093347吴晓敏 水冷肋片型PVT集热器换热性能数值模拟.doc
- A kuang组合投资收益和风险模型.doc
- a3-毕业的设计说明书模板.doc
- AA-0015ZC 热源设备和热源控制1.pdf
- AAAAA文化地理学概念_理论逻辑关系之_省略__分析近年中国大陆文化地理学进展_周尚意.pdf
- Aawtykg医学各大系统重点精华总结!诊断公式 辅助检查 治疗原则……文库.doc
- ABAQUS常见问题汇总_-_2.0版.doc
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第2课时 点的坐标特征.pptx
- 北师大版(2024)八年级数学上册课件 3.2 平面直角坐标系 第3课时 建立适当的平面直角坐标系.pptx
- 北师大版(2024)八年级数学上册课件 4.3 一次函数的图象 第1课时 正比例函数的图象及性质.pptx
- (人教A版数学选择性必修三)讲义第15讲7.1.1条件概率(学生版+解析).docx
- (人教A版数学选择性必修三)讲义第19讲8.1成对数据的统计相关性(8.1.1变量的相关关系+8.1.2样本相关系数)(学生版+解析).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第2课时 加减消元法.pptx
- (人教A版数学选择性必修一)2025年秋季学期讲义第01讲1.1.1空间向量及其线性运算(学生版+教师版).docx
- 北师大版(2024)八年级数学上册课件 5.2 二元一次方程组的解法 第1课时 代入消元法.pptx
- 北师大版(2024)八年级数学上册课件 5.3 二元一次方程组的应用 第3课时 二元一次方程组的应用(3).pptx
- 北师大版(2024)八年级数学上册课件 5.4 二元一次方程与一次函数 第2课时 用二元一次方程组确定一次函数表达式.pptx
最近下载
- 黑龙江省齐齐哈尔市克东县克东一中、克山一中等五校联考2025年高三5月仿真考试数学试题含解析.doc VIP
- 新编机关事业单位工人汽车驾驶员高技师国家题库练习题题附答案.docx VIP
- 黑龙江省齐齐哈尔市克东县第一中学2025届高三下学期第五次模拟测试数学试题(含答案解析).docx
- 2025年福建省中考语文试卷(含答案).docx
- 新编机关事业单位工人汽车驾驶员高级、技师国家题库练习题455题(附答案)名师资料..doc VIP
- T_BPMA 0010—2021_现制现售净水机卫生管理规范.pdf VIP
- 复合益生菌发酵玉米-豆粕型日粮对哺乳期羔羊瘤胃发酵参数及菌群结构的影响.pdf VIP
- 野百合也有春天,日本女白领情定宁夏送电工.doc VIP
- 浅谈对智能化医院系统建设见解.doc VIP
- FSSC220006.0 附件中文版本.pdf VIP
文档评论(0)