面向对象基本概念及举例理解

来源:互联网 发布:圆管连接件 淘宝 编辑:程序博客网 时间:2024/06/05 10:58

对象抽象

真实世界的对象有成千上万个属性,是不是把它们通通搬进计算机世界里来呢?回答显然是不行的,分析人员往往把那些只对用计算机管理业务所必须的对象属性映射到计算机里,而忽略那些无助于处理业务的无用信息。这个过程叫作对象抽象。

封装

封装是把对象的属性、操作结合在一起,构成一个独立的对象。一旦封装,内部信息对外界是隐藏的,也就象一个四周密封的房子一样,不允许直接对对象的属性进行操作,要想操作,只能通过局部接口(相当于房子的大门)。外部只能看到对象对操作的反应,而不知道对象是如何做出这一反应的。所以封装包含两个方面的含义,一个是信息隐藏,另一个局部开放。

消息

在系统中的对象只有对外提供服务,才能发挥自己的作用,当系统中的其他对象请求这个对象提供服务时,该对象就给予响应,并完成指定的操作。在这个过程中,其他对象要求提供服务这个信息就叫作消息。

聚合

如果对象间是一种比较松散的关系,整体对象和部分对象可以独立地创建,并在整体对象中设置一个部分对象的属性,它可以是部分对象的标识,也可以是指向部分对象的指针。同时,部分对象也可以属于多个整体对象,其生命周期与整体对象不同,这种对象间的关系叫聚合。

多态

如果在父类定义的属性和操作被子类继承以后,表现出不同的属性和操作,这种现象叫作多态。多态的基本表现是:属性名或操作名在子类和父类中相同,但语义不同。比如笔可以写字,但写什么样的字并没有确定,在执行时,子类钢笔、毛笔、粉笔都继承了笔的写字操作,但功能却不一样,钢笔写出钢笔字,毛笔写出毛笔字,粉笔写出粉笔字,毛笔子类无法写出钢笔字,同理,如果毛笔类再分为大字笔和小字笔两个子类,它们两个的功能又不一样……因此,对于同一个消息,让继承关系中的不同对象去执行,执行的结果也不同。
多态的实现主要靠以下几个机制:

  1. 重载:即在子类中对继承来的属性或操作进行重新定义(俗称改写),有很多开发语言支持这一特性。

  2. 动态绑定:即消息的接收对象根据接收的消息,动态地确定调用自己的那个操作。

  3. 类属:即服务的参数类型是参数化的,根据这些参数类型,动态地确定调用自己的那个操作。

  4. 定义接口类:另一种实现多态的方式是定义一个特殊的抽象类(缺乏完整定义的类)接口类,它只声明一些操作标记,告诉其他对象如何触发该行为的细节,如名称,参数、返回值,再创建接口类多个子类,在每个子类中实现接口类定义的所有操作,从实现相同的接口类这个角度来看,表现出相同的一组接口由不同的子类去实现这样的多态。

永久对象

指生存周期可以超越程序的执行时间而长期存在的对象,又叫持久对象。永久对象与直接存储对象的区别在于,封装过后,进行序列化,把对象的属性、关联等信息直接保存到控件或文件中。永久对象的优势是屏蔽了共享内存和文件操作,方便程序员使用,此外,它还具有事务功能。

主动对象

主动对象是指不需要接收消息就可以主动执行操作的对象。主动对象内部包含一个线程,可以自动完成动作或改变状态,而一般的被动对象只能通过被其他对象调用才有所作为。在多线程程序中,经常把一个线程封装到主动对象里面。参考文章:http://blog.chinaunix.net/uid-20528042-id-1935065.html

原创粉丝点击