http://blog.sina.com.cn/s/blog_8077b6d9010138e6.html
抽象的概念
这个世界很复杂,这个世界也很简单。复杂是由于我们从具体的角度来观察这个世界,简单是因为我们从抽象的角度来认识这个世界。抽象是人类特有的一种思维工具,它可以从纷繁复杂的表象中提炼出本质的特性。当你教一个小孩认识猫的时候,你会以具体的某一只猫作为例子告诉小孩这只是猫,如此反复几次以后,当出现其他不同的猫的时候小孩子也能辨识出那是猫。每一只猫都是不同的,但它们有着共同的特性,这些特性组合起来就是一个猫的定义也就是猫这个概念的抽象。由此可以看出抽象是对事物本质特性的归纳。
抽象的层次性
当说“这是一只猫”的时候,如果站在哺乳动物的角度来看这句话是具体的,而如果站在波斯猫的角度来看这句话是抽象的。可见同一段描述在高于它的抽象层次来看就是具体的,在低于它的抽象层次来看就是抽象的。波斯猫->猫->哺乳动物->动物->生物->物质->万事万物,事物的抽象层次不断提升达到顶级的时候,就是中国古代智慧结晶《易经》中所谓的阴阳变化,也就是说万事万物最本质的最抽象的特性就是阴阳变化(西方的辩证法)。现代科学也已经可以证明这一论断,如:物质的原子核与电子, 生物的雌与雄,事情的福与祸,生命的生与死,存在的时间与空间,一对对的阴阳无处不在,构成了一个阶梯式的抽象层次(图1)。
图1
抽象的封装性
当我们发现某一新事物的时候会给这个事物下定义,这个定义其实就是对抽象概念的封装。一旦下了定义这个抽象概念就变成了一个具有明确内涵的东西。生活中当我们与非本行业的人员交流行业知识时往往会觉得很困难,原因就是外行人对很多专业的概念不能很好理解,因此不得不打破专业概念的封装去解释其内涵。在软件技术行业内许多的知识大都非常的抽象,需要通过不断的学习与实践来加深对抽象概念的理解,否则就很难向更高抽象的层次去升华。
面向对象的分析与设计与抽象
面向对象的分析与设计是目前非常流行的分析设计方法,其特点是用对象这个载体非常好的契合了抽象方法。当我们分析某个复杂大问题的时候往往就是把它切分成若干容易解决小问题。大问题与小问题处在不同的抽象层次,然后在各自的抽象层次中根据问题定义出若干抽象的对象并设计出这些对象之间的协作关系。这样来看分析的过程就是拆解问题到不同的抽象层级,并在各个抽象层次设计出一组相互协作的对象(抽象)来解决问题(图2)。设计模式、参考模型、架构样式等就是一种可以复用的抽象,它们是针对特定问题领域的经典的解决方法,这些方法的实质就是一组定义明确的抽象,以及这些抽象之间的协作。中国画用水墨来表现这个世界,软件设计师用抽象来表达这个世界,软件设计是抽象的艺术。
图2
面向对象编程语言与抽象
面向对象的编程语言是一种天然的抽象表达工具。Class作为抽象的载体很好的契合了抽象的二种特性
1抽象的封装性对应Class的封装性
2抽象的层次性对应Class的继承与包容