美文网首页
2.1 Introduction to Data Abstrac

2.1 Introduction to Data Abstrac

作者: Cloneable | 来源:发表于2022-08-09 11:36 被阅读0次

数据抽象是为了将数据对象的结构与数据对象的使用分离,与程式抽象类似。数据对象的结构依靠一组构造器和查询器表示,但单纯的构造器和查询器并不能表达数据对象的实质,它们还必须完全符合数据对象对应的特定条件。

序对

Scheme 通过序对的方式为我们提供数据抽象的能力,分别通过程式 conscarcdrcons 接收两个参数,并将这两个参数绑定返回一个数据对象;car 可获取数据对象的前一个参数并作为结果返回,cdr 可获取数据对象的后一个参数并作为结果返回。具体使用方式如下:

(define x (cons 1 2))
(car x)
1
(cdr x)
2

当然 cons 的参数也可以是数据对象,例如:

(define x (cons 1 2))
(define y (cons 3 4))
(define z (cons x y))
(car (car z))
1
(car (cdr z))
3

抽象屏障

如果通过数据抽象的方式构建一个有理数系统,我们可以将有理数设计为一对整数,其中一个为分子,一个为分母。接着使用 make-ratnumerdenom 构建有理数及获取它的分子和分母,对有理数的算术运算在这三个程式的基础上建立,类似 add-ratsub-rat 等。整个有理数系统的结构如下图所示:

Data-abstraction barriers in the rational-number package

抽象屏障用于隔离不同层级之间的差异,通过屏障实现对上层程式与下层程式的沟通,这样可以将数据构建的依赖限制在小范围内,有利于对代码进行维护和修改后,整个系统的功能保持一致性。

相关文章

网友评论

      本文标题:2.1 Introduction to Data Abstrac

      本文链接:https://www.haomeiwen.com/subject/tbtawrtx.html