- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于面向对象编程的思想
面向对象编程思想
1.面向对象概述
传统的结构化编程就是先设计一组函数及解决问题的方法,然后针对问题要处理的数据特征找出相应的数据存储方法,即数据结构。这就是最初Pascal 语言的设计者——Nicholase.Wirth提出的著名公式:程序=算法+数据结构。
这种编程的特征是先从算法入手,然后才考虑数据结构,所以上述公式将算法置于数据结构之前,也就是设计应用程序的步骤顺序要求。使用面向工程方法开发的软件,稳定性、可修改性和可重用性都比较差。
面向对象是当前计算机界关心的重点,它是20世纪90年代软件开发方法的主流。起初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。当今面向对象的思想已经涉及到软件开发的各个方面。例如,面向对象的分析、面向对象的设计以及常说的面向对象的编程实现。
面向对象编程技术是当今占主导地位的程序设计思想和技术。其思路是将上述的两个“加数”颠倒,编写程序时首先针对问题要处理的数据特征找出相应的数据结构,然后设计解决问题的各种算法,并将数据结构和算法看做一个有机整体——类,而将其中的数据结构和相应的算法看做是这个类的对象和方法,每个对象各尽其职,分别执行一组相关的任务。
面向对象编程更注重于系统整体关系的表示和数据模型技术(把数据结构与算法看做一个独立功能模块),即:程序=数据结构+算法。算法与数据结构是一个整体,一个算法只能针对特定的数据结构,它是对数据结构的访问。面向对象程序设计的思想就是要把算法与数据结构捆绑在一起,因为现实世界中任何对象都具有一定的属性和操作,所以也就总可以用数据结构和算法来全面地描述这个对象。面向对象编程的思想为:程序是由许多对象组成,对象的程序的实体,这个实体包含了对该对象属性的描述(数据结构)和对该对象进行的操作(算法),即:对象=数据结构+算法;程序=对象+对象+……。
2.面向对象编程解决问题的方法
1解决问题的方法
面向过程与面向对象解决问题的方法差别很大,例如,分别采用面向过程和面向对象的方法开发五子棋游戏。
采用面向过程的设计思路解决上述问题分为以下几个步骤:1.开始游戏2.黑子先走3.绘制画面4.判断输赢5.轮到白子6.绘制画面7.判断输赢8.返回步骤9.输出最后结果。把上面每个步骤分别用函数来实现,问题就解决了。因此面向过程的设计思想是分析问题的步骤,实现步骤。
面向对象的设计思想实现方法,整个五子棋可以分为:1.黑白双方,这两方的行为是一模一样的2.棋盘系统,负责绘制画面3.规则系统,负责判定诸如犯规,、输赢等。第一类对象(玩家对象)负责接收用户的输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
面向对象是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整体解决问题的步骤中的行为。面向对象是以功能来划分问题,而不是步骤。
2面向对象的好处
通过上述两种方法都能完成五子棋游戏的开发,但采用面向对象编程有诸多好处,下面分别进行说明。
方法的分布
对于绘制棋局的行为,在面向过程的设计中分散在了很多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。
面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。功能上的统一保证了面向对象设计的可扩展性。
加入新功能
例如,要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的顺序都要进行大规模调整。如果是面向对象的话,只要改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾忌,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。
对象的更改
例如,要把五子棋游戏改为围棋游戏,如果是面向过程设计,那么五子棋的规则就分布在了程序的每一个角落,改动的工作量不比重写小多少。如果采用面向对象的程序设计,只要改动规则对象就可以了。五子棋和围棋的区别在于规则变化(棋盘大小也有变化,直接在棋盘对象改动就可以了),而下棋的大致步骤从面向对象的角度来看没有任何变化。
当然,要达到改动局部来完成新功能的需求,需要设计者有足够的经验,保证程序具有良好的可移植性性和可扩展性。
4.面向对象编程的特点
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据只能用本类的方法进行处理。类利用一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。类是面向对象编程中的最核心技术,一切皆
文档评论(0)