# 2.1数据抽象导论

> 译者： [https://sicp.comp.nus.edu.sg/chapters/24](https://sicp.comp.nus.edu.sg/chapters/24)



在 [1.1.8](10) 部分中，我们注意到，用作创建更复杂功能的元素的功能不仅可以视为特定操作的集合，而且还可以视为功能抽象 。 即，可以抑制如何实现该功能的细节，并且可以用具有相同总体行为的任何其他功能代替特定功能本身。 换句话说，我们可以做出一个抽象，该抽象将使用函数的方式与使用更原始函数实现函数的细节分开。 复合数据的类似概念称为_数据抽象_。 数据抽象是一种使我们能够从如何从更多原始数据对象中构造复合数据对象的细节中分离出如何使用复合数据对象的方法。

数据抽象的基本思想是构造要使用复合数据对象的程序，以便它们可对&lt;quote&gt;抽象数据进行操作。&lt;/quote&gt; 也就是说，我们的程序应该以某种方式使用数据，以便不对执行手头任务并非绝对必要的数据做任何假设。 同时，独立于使用数据的程序定义了&lt;quote&gt;具体的&lt;/quote&gt;数据表示形式。 我们系统的这两部分之间的接口将是一组称为_选择器_和_构造函数_的函数，它们根据具体表示形式来实现抽象数据。 为了说明这种技术，我们将考虑如何设计一组用于处理有理数的函数。

