抽象的意义

来源:互联网 发布:淘宝网卖什么比较畅销 编辑:程序博客网 时间:2024/06/05 00:32

抽象是处理复杂性的基本方式,来源于对真实世界中特定对象、场景或处理的相似性的认知,并决定关注这些相似性

而忽略不同之处。抽象是对一个系统的一种简单的描述或指称,强调系统的某些细节或属性,同时抑制另一些细节或

属性。好的抽象强调了对读者或用户重要的细节,抑制了那些至少是暂时的非本质细节或枝节。只有当一个概念可以

独立于最终使用或实现它的机制来描述、理解和分析时,才可以说这个概念是抽象的。


也可以说是:“抽象描述了一个对象的基本特征,可以将这个对象与所有其他类型的对象区分开来,具有清晰定义的概

念边界,与观察者的视角有关”,抽象关注的是一个对象的外部视图,所以可以用分离对象的基本行为和它的实现。一

般我们的接口,就只提供它的基本行为。它是通过应用“最少承诺”原则来达成的。


还有一种原则叫“最少惊奇”,这个原则是指抽象捕捉了某个对象的全部行为,不多也不少,并且不提供抽象之外的任

何惊奇效果。


抽象如果从那些准备地为问题域实体建模的对象到那些实际上没有什么理由存在的对象,存在着一系列的抽象,按照

最有用到最没有用的次序,应该分类为:


1、实体抽象   一个对象,  代表了问题域或解决方案域实体的一个有用的模型。


2、动作抽象   一个对象,  提供了一组通用的操作,所有这些操作都执行类的功能。


3、虚拟机抽象   一个对象,  集中了某种高层控制要用到的所有操作,或者这些操作将利用某种更底层的操作集。


4、偶然抽象   一个对象,  封装了一组相互间没有关系的操作。

我们一般追求实体抽象,它直接对应着给定问题域的词汇。


客户对象是使用其他对象资源的对象,而客户对象关注的是我们关注对象的外部视图,采用“编程契约模型”思想,那

么每个对象在其外部视图上都定义了一份契约,其他对象可以依赖这份契约,而该对象本身则需要通过它的内部视图

来实现这份契约(通常需要其他对象协作),实际上可以认为是这份契约建立了客户对象与服务器对象的关系,也就

是说:这份契约包含了对象的责任,即它的可靠的行为。


构成这份契约的每个操作都有一个唯一的签名,包含它所有的正式参数和返回值。如果我们把客户对象可以调用的整

个操作集,以及这些操作合法的调用顺序,称为它的“协议”的话,那么这份“协议”就表明了对象的动作和反应的方式,

从而构成了抽象的完整静态和动态外部视图。


所有的抽象都有静态和动态的属性,例如:一个文件对象有其名字,内容,这些都是静态属性。但是内容的值是动态

的,和对象的生命周期有关。

0 0
原创粉丝点击