2.5 有通用操作的系统

2.5 有通用操作的系统

在前面的部分中,我们已经看到了设计系统的技巧有,把数据对象以
多种方式显示出来。使用通用化的接口程序来关联到有多种表示
形式的操作的代码 是一种很重要的想法。

现在我们将看到如何使用相同的思想,不仅定义的操作是通用性的、
涵盖了多种表现形式,而且定义操作是通用性的,涵盖了不同种类
的参数。我们已经看到了算法操作的一些不同的程序包。内嵌入
我们的语言的原始性的算术操作(+,-,*,/),
2.1.1部分中的有理数的算术操作(add-rat,sub-rat,mul-rat,div-rat),
复数的算术操作就是我们在2.4.3部分中实现的那些操作,
我们现在将使用数据导向的技术,组合出一个程序包,这个
算术操作的程序包集成了我们之前组装好的所有的算术程序包。


图2.23展示了我们构建的系统的结构。注意一下抽象的隔离。
从使用 “数字”的角度上看,这个加法的程序能够操作任何数。
加法是一个通用的接口,这个接口允许普通的算术,有理数的
算术,复数的算术的程序包被使用数据的程序统一的处理。
任何一个独立的算术程序包例如复数包能够它自己单独地被通用
的程序使用。这个通用的程序为了不同的表现形式(平面坐标系,
极坐标系)组合程序包的设计。进而,系统的结构具有可加性。
所以一个能够被独立地设计算术程序包,并且组合它们形成一个
通用的算术系统。
                 使用数据的程序 
                 __________________
-----------------|add sub mul div |-----------------------
                 ------------------
                   通用的算术程序包
     __________________       __________________________      ___________
-----|add-rat sub-rat |-------|add-complex sub-complex |------| + - * / |---------
     |mul-rat div-rat |   |   |mul-complex div-complex |   |  -----------
     ------------------   |   --------------------------   |
        有理数算术        |     复数算术                   |    常规的算术
                          |________________________________|
                          |                |               |                               
                          |  平面坐标表示  |极坐标表示     |
__________________________|________________|_______________|_________________________
                列表结构与原生的机器的算术
图2.23 通用的算术系统

猜你喜欢

转载自blog.csdn.net/gggwfn1982/article/details/81503433
2.5
今日推荐