`

《SICP》之抽象屏障

 
阅读更多
      我们在对数据进行抽象的时候,基本思想就是为每一类数据对象标识出一组操作,使得对这类数据对象的所有操作都可以基于它们表述,而且在操作这些数据对象时也只使用它们。

     在我们面对一个复杂数据对象的时候,它对外提供的各种操作又是基于另一个数据对象的一些操作,这个时候我们就需要在数据抽象的时候构建一个“抽象屏障”,它可以隔离系统中不同的层次,把使用数据抽象的程序与实现数据抽象的程序分开,也就是所谓的面向抽象编程,

举个例子,
我们需要表示一个有理数,很自然想到, 需要一个分子,一个分母,一个构造函数把分子,分母填进去。
public class RationalNumber {
    private final int numer;
    private final int denom;

    public RationalNumber(int numer,int denom) {
        this.numer = numer;
        this.denom = denom;
    }
}


对于外部程序来说,它们根本就不需要知道你的分子,分母,它们需要的是,你能够加、减、乘、除。因此,我们在抽像数据的时候还需要能够提供addRationalNumber,subRationalNumber,mulRationalNumber,divRationalNumber这样的操作.而外部也只能通过有理数暴露的这些API操作有理数。这些API操作转而又完全是基于有理数的构造函数,分子,分母实现,构造函数,分子,分母的实现又基于其底层构造函数,基本类型数据的实现。因此一个有理数的数据可以形成如下的抽象结构

-------------使用有理数的程序----------------------

-------------问题域中的有理数----------------------

-------------作为分子分母的有理数------------------

-------------实现有理数的构造函数,分子,分母---------

这每一层面都是一个抽象屏障,当我们进行了这样的抽象层次分离之后,以后的维护就方便很多了,
分享到:
评论

相关推荐

    SICP 解题集

    抽象是SICP的重要主题,读者需要学会如何创建和使用抽象数据类型。 4. **过程定义与递归**:SICP通过递归来介绍和解释计算过程。递归不仅是解决许多问题的有效工具,也是理解计算机如何执行计算的基础。 5. **...

    sicp 2016 from

    - **抽象屏障 (Abstraction Barriers)**:强调了通过抽象屏障隔离实现细节的重要性。 - **何谓数据 (What Is Meant by Data?)**:探讨了数据的含义以及数据类型的重要性。 - **扩展练习:区间算术 (Extended ...

    sicp in python 中文 sicp 中文

    sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh

    SICP(python中文带书签)

    例如,Python的面向对象特性可以用来模拟SICP中的一些过程抽象,而Lisp中的动态作用域在Python中需要特别注意,因为Python默认采用静态作用域。 压缩包中的文件"sicp中文版.pdf"提供了全书的中文翻译,这对于中国...

    sicp 2.2.4节图形语言

    首先,SICP通过图形语言展示了函数式编程的强大之处。在这一章,读者会学习如何用基本的几何形状构建出复杂的图形,并理解如何通过组合和抽象来实现图形变换。这些变换包括平移、旋转、缩放等,它们都是通过定义和...

    a_book_sicp_py

    3. 计算机科学的基础概念:《计算机科学的构造与解释》(SICP)一书涵盖了计算机科学的基础概念,例如程序的解释、计算过程和数据抽象。这些概念是构建更高级抽象和理解计算机如何操作数据的基石。 4. 使用函数构建...

    SICP中文第二版

    SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版

    Python SICP epub版本

    Python SICP epub版本,很适合学习抽象的思想,用Python版本比lisp更实用

    SICP习题解答,主要第一章的内容习题答案

    SICP的第一章通常会介绍Lisp语言的基础,包括如何创建基本的函数,如何使用递归来处理数学问题,以及如何通过过程抽象将重复代码封装起来,提高代码的可读性和复用性。例如,可能会有求阶乘、斐波那契数列等典型的...

    sicp-Structure and Interpretation of Computer Programs

    SICP的内容涵盖了程序设计的基本概念、过程抽象、数据抽象、模块化编程、元语言抽象等多个方面,旨在帮助读者理解计算机程序的本质以及如何设计出高效、可维护的软件系统。 - **第一章:通过过程构建抽象**...

    SICP LISP AI

    4. **数据结构和抽象**:SICP介绍了各种数据结构,如列表、树和队列,以及如何使用递归和高阶函数来操作它们。此外,还讨论了如何通过抽象隐藏实现细节,提高代码的复用性和可维护性。 5. **控制结构和计算的表示**...

    SICP 习题答案

    《计算机程序的构造和解释》(SICP)是一本极具影响力的计算机科学教材,由Harold Abelson和Gerald Jay Sussman所著,MIT出版社出版。这本书以其深入探讨编程概念、程序设计方法以及计算机系统的工作原理而闻名。1-3...

    SICP-Python版本

    SICP-Python版本

    SICP 使用的scheme解释器

    SICP 使用的scheme解释器 以前叫DrScheme

    sicp 2nd 英文chm

    3. **抽象**:SICP提倡通过创建抽象层来提高代码的可读性和复用性。通过定义新类型和操作,读者可以学习如何构建模块化的程序。 4. **数据结构**:书中的例子涵盖了各种数据结构,如列表、队列、栈和树。这些结构在...

    北京大学,计算机程序构造和解释(SICP)课件,裘宗燕老师主讲

    通过学习SICP,学生将能够理解如何设计、分析和实现复杂的程序系统,培养出强大的抽象思维能力。 课程内容涵盖了以下几个关键知识点: 1. **基本编程概念**:包括变量、数据结构(如列表、树)、控制结构(条件...

    sicp第二章练习题的解答

    在SICP中,练习2.5通常涉及到了过程定义、抽象和组合,可能需要读者理解并实现一种计算机制,如迭代或递归。 2. **chapter2.ss**: 这可能是整个第二章所有练习题的集合或者部分题目的解答。通过这个文件,读者可以...

    SICP(计算机体系结构)

    - **2.1.2 抽象屏障**: 讨论数据抽象的边界问题。 - **2.1.3 数据的本质**: 深入探讨数据的概念。 - **2.1.4 扩展练习:区间算术**: 通过一个具体的案例来巩固所学知识。 - **2.2 层次数据与闭包属性** - **...

    PyPI 官网下载 | sicp-0.0.1b102.dev4.tar.gz

    标题中的"PyPI 官网下载 | sicp-0.0.1b102.dev4.tar.gz"指的是从Python的官方包索引(Python Package Index,简称PyPI)上下载的一个名为"sicp"的软件包的版本号为0.0.1b102.dev4的压缩文件,其格式是tar.gz。...

Global site tag (gtag.js) - Google Analytics