面向对象的特点( 四 )


采用由上至下的程序设计方法 。
动态绑定
绑定指的是将一个过程调用与相应代码链接起来的行为 。 动态绑定的意思是 , 与给定的过程调用相关联的代码只有在运行期才可知 。 它与多态和继承的联系极为紧密 。 一个多态引用的函数调用决定于这个引用的动态类型 。
考虑图6中的“draw”方法 。 通过继承 , 每个对象都具备了这个过程 。 但是 , 对于不同的对象它的算法是不同的 , 因此 , draw过程必须在每一个类中重新定义 。 在运行期 , 当前引用对象所对应的代码将被调用 。
消息传递
一个面向对象的程序由许多对象组成 , 这些对象之间需要相互沟通 。 因此 , 在面向对象程序设计语言中 , 程序设计的主要步骤如下:
1、创建类 , 这些类定义了对象及其行为;
2、由类定义创建对象;
3、建立对象之间的通讯 。
对象之间通过收发信息相互沟通 , 这一点类似于人与人之间的信息传递 。 信息传递的概念使得真实世界的直接模拟更易于和建立系统交流 。
对于某个特定对象来说 , 消息就是请求执行某个过程 , 因此 , 消息的接收对象会调用一个函数(过程) , 以产生预期的结果 。 传递的消息的内容包括接收消息的对象的名字 , 需要调用的函数的名字 , 以及必要的信息 。
对象就有一个生命周期 。 它们可以被创建和销毁 。 只要对象正处于其生存期 , 就可以与其进行通讯 。
OOP的优点
OOP具有许多优点 , 无论是对于程序设计者或者用户来说都是如此 。 面向对象为软件产品扩展和质量保证中的许多问题提供了解决办法 。 这项技术能够大大提高程序员的生产力 , 并可提高软件的质量以及降低其维护费用 。 其主要的优点陈列于下:
1、通过继承 , 我们可以大幅减少多余的代码 , 并扩展现有代码的用途;
2、我们可以在标准的模块上(这里所谓的“标准”指程序员之间彼此达成的协议)构建我们的程序 , 而不必一切从头开始 。 这可以减少软件开发时间并提高生产效率;
3、数据隐藏的概念帮助程序员们保护程序免受外部代码的侵袭;
4、允许一个对象的多个实例同时存在 , 而且彼此之间不会相互干扰;
5、允许将问题空间中的对象直接映射到程序中;
6、基于对象的工程可以很容易的分割为独立的部分;
7、以数据为中心的设计方法允许我们抓住可实现模型的更多细节;
8、面向对象的系统很容易从小到大逐步升级;
9、对象间通讯所使用的消息传递技术与外部系统接口部分的描述更简单;
10、更便于控制软件复杂度 。
当需要将以上所说的所有特性有机的结合于一个面向对象系统中 , 它们之间的相对重要性就取决于工程的类型和程序员的喜好 。 为了获得上述的某些优势 , 必须考虑很多事情 。 例如 , 对象库必须可以被重用 。 技术还在不停的发展 , 现有的产品也会很快的更新换代 。 如果重用没有能够实现 , 那么就需要进行严格的控制和管理 。
易于使用的开发软件往往难以编写 。 面向对象程序设计工具有望解决这个问题 。
面向对象程序设计语言
面向对象技术并不是某个特定语言的特权 。 如同结构化程序设计一样 , OOP概念可以在很多语言比如C和Pascal中实现 。 但是 , 当程序越来越大时 , 程序设计工作会变得拙劣而混乱 。 而一个支持OOP概念的程序设计语言则可以让一切变得简单 。

推荐阅读