博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OO中的普遍性和抽象性
阅读量:4127 次
发布时间:2019-05-25

本文共 1188 字,大约阅读时间需要 3 分钟。

概要

       OO所要解决的事情首先是找出事物的共性、分离事物,然后是抽象不同事物的共同行为模型,通过行为来聚合某些事物,通过某些机制来简化事物之间的关联。这也就是OO方法论中的普遍性和抽象性。本文简单地描述了OO的普遍性和抽象性。

       关键词 OO,抽象性,具体,普遍性

目录

当软件越来越复杂,面向过程的方法论无以承受这种复杂的时候,面向对象(OO)的方法论出现了。软件的复杂度可表现为两个方面,一个是事物的繁多,二个是事物之间的联系错综复杂。OO所要解决的事情首先是找出这些事物的共性、分离事物,然后是抽象不同事物的共同行为模型,通过行为来聚合某些事物,通过某些机制来简化事物之间的关联。这也就是OO方法论中的普遍性和抽象性。

基本特点

         OO是一种视事物为程序世界中的对象的方法论,它使用GeneralizationAbstraction来归纳和抽象事物的本质特征和共同行为。OO有三个基本特点,那就是封装、继承、多态。封装是对事物的变化的封装,这种变化是使软件趋于复杂的根本原因;继承是处理事物的普遍性和特殊性的一种机制,它更多的注重的是对事物的固有属性的处理;多态用于处理同类事物的不同的行为特征。

普遍性

         世界中的事物具有普遍性和特殊性。如哲学中提到的“黑马和白马都是马“,在这句话中,”马“相对”黑马“或/和”白马“具有普遍性,而”黑马“或/和”白马“相对“马”则是特殊的。因此使用OO分析某个系统的时候,我们需要找出这种普遍和特殊。在一般的情况下,特殊的事物相对普遍的事物的区别在于本质特征的不同。如“马“具有”颜色“这一本质特征,”黑马“和”白马“就是“颜色”特殊化了的马。这也就是OO中的继承。因此,继承通过事物的本质特征来区分普遍性和特殊性的事物,这种本质特征包括事物的固有属性也包括事物的固有行为。从某种程度上来说,这也是一种抽象。不过这种抽象是基于事物的本质特征的。

抽象性

         OO的世界中,抽象上必不可少的,它往往表现为对事物行为的抽象。而这种行为的抽象主要表现在两个方面:同类事物的不同行为的抽象;不同事物的相同行为的抽象。同类事物的不同的行为特征,我们很容易进行区分,因为人们一直都在关注这一点。不同事物的相同行为往往都是很隐蔽的,需要我们去努力挖掘,比如说卵生动物都是产“卵”来繁育后代的,这是动物学家通过很久的探索和研究才得出的结论。

因为事物的行为可能因为这样和那样的原因,它们很容易发生变化。所以我们需要通过OO的封装来隔离这种变化。“变化”是一个开放性的词语,它可以用“形容词”来修饰,也可以给它添加“宾语”。往往,在解决具体问题的时候,我们谈论的变化都是具体的。而这种具体的变化是存在共性的,因为它们都是变化。

因此,我们需要通过抽象事物的不同行为,通过OO的封装来隔离这些变化。而对于变化的普遍性和特殊性,我们可以使用OO的继承来进行处理。

 

转载地址:http://othpi.baihongyu.com/

你可能感兴趣的文章
Single Number II --出现一次的数(重)
查看>>
Valid Parentheses --括号匹配
查看>>
Remove Element--原地移除重复元素
查看>>
Remove Duplicates from Sorted Array--从有序数组中移除重复元素
查看>>
Count and Say
查看>>
Gas Station
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
Valid Palindrome 简单的回文判断
查看>>
Pascal's Triangle -- 生成杨辉三角
查看>>
Pascal's Triangle II 生成杨辉三角中的某行
查看>>
Minimum Depth of Binary Tree -- 二叉树的最小深度 DFS 加剪枝
查看>>
Climbing Stairs 爬楼梯方法 动态规划
查看>>
Merge Two Sorted Lists 合并两个有序链表
查看>>
pow(x,n) 为什么错这么多次
查看>>
Jump Game 动态规划
查看>>
Subsets 深搜
查看>>
Subsets II
查看>>
Edit Distance 字符串距离(重重)
查看>>
Gray Code 格雷码
查看>>
对话周鸿袆:从程序员创业谈起
查看>>