日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Reply To: 抽象是什么?

Home Forums 《冒号课堂》讨论区 抽象是什么? Reply To: 抽象是什么?

#1154
hui
Keymaster

>>我理解,抽象是一种思维的“过程”,包括思考发生的场合(层次)、思考的方式(如何筛选)

1。根据上下文,抽象可以指思维的“过程”,也可以指思维的“结果”。

2。思考发生的场合与层次有关,但不完全等同。抽象的层次越高,忽略的(实现)细节越多。

>>1、数据抽象发生在实现阶段,通常是在如何实现一个类的过程中发生的。

数据抽象不是在类的实现过程中发生的,而是在类的设计阶段发生的。事实上,数据抽象的意义正是在于:给定一个API,可以有不同的实现方式。在现实中,不少程序员在API没有规范好之前就开始动手写实现代码,但这不是一种值得推荐的做法。当然,这里也有个抽象层次问题——如果一个类比较底层,仅仅是为另一个高层类提供内部服务,这个要求可以稍微放宽。

>>2、 在进行数据抽象之前,已进行了“规范抽象”,提炼出了“接口规范”

这么说可能更好:数据抽象是借助(或依赖)了“规范抽象”,不必把它们硬性分开。

>>3、 数据抽象是将“接口规范”映射到具体实现(通常指一个类)的过程

从设计者的角度看,数据抽象是形成“接口规范”的过程;从客户的角度看,数据抽象是忽略具体实现的保证。

>>4、抽象的方式是,按照“接口规范”定义出类的对外接口(API);到此为止,“数据抽象”已经结束

这种说法是对的,但不是与你前面提出的1和3矛盾吗?事实上,你在后来的两个帖子中也意识到这个矛盾了:)

>>5、 数据抽象完成后,再考虑类的具体实现;围绕的是数据的组织方式、算法实现进行的;这些具体实现通过封装机制隐藏起来。

正确。

 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)