2010年03月2日 at 11:16 am
#1154
Keymaster
>>我理解,抽象是一种思维的“过程”,包括思考发生的场合(层次)、思考的方式(如何筛选)
1。根据上下文,抽象可以指思维的“过程”,也可以指思维的“结果”。
2。思考发生的场合与层次有关,但不完全等同。抽象的层次越高,忽略的(实现)细节越多。
>>1、数据抽象发生在实现阶段,通常是在如何实现一个类的过程中发生的。
数据抽象不是在类的实现过程中发生的,而是在类的设计阶段发生的。事实上,数据抽象的意义正是在于:给定一个API,可以有不同的实现方式。在现实中,不少程序员在API没有规范好之前就开始动手写实现代码,但这不是一种值得推荐的做法。当然,这里也有个抽象层次问题——如果一个类比较底层,仅仅是为另一个高层类提供内部服务,这个要求可以稍微放宽。
>>2、 在进行数据抽象之前,已进行了“规范抽象”,提炼出了“接口规范”
这么说可能更好:数据抽象是借助(或依赖)了“规范抽象”,不必把它们硬性分开。
>>3、 数据抽象是将“接口规范”映射到具体实现(通常指一个类)的过程
从设计者的角度看,数据抽象是形成“接口规范”的过程;从客户的角度看,数据抽象是忽略具体实现的保证。
>>4、抽象的方式是,按照“接口规范”定义出类的对外接口(API);到此为止,“数据抽象”已经结束
这种说法是对的,但不是与你前面提出的1和3矛盾吗?事实上,你在后来的两个帖子中也意识到这个矛盾了
>>5、 数据抽象完成后,再考虑类的具体实现;围绕的是数据的组织方式、算法实现进行的;这些具体实现通过封装机制隐藏起来。
正确。