算法(4th ed)(110):基础——数据抽象 4.5.14

阅读数:9 2019 年 11 月 2 日 12:27

算法(4th ed)(110):基础——数据抽象 4.5.14

(数据类型的设计:小结)

本节所讨论的语言机制说明实用数据类型的设计中所遇到的问题并不容易解决。专家们仍然在讨论支持某些我们已经学习过的设计理念的最佳方法。为什么 Java 不允许将函数作为参数?为什么 Matlab 会复制作为参数传递给函数的数组?正如本章前文所述,如果你总是抱怨编程语言的特性,那么你只能自己设计编程语言了。如果你不希望这样,最好的策略就是使用应用最广泛的编程语言。大多数系统都含有大量的库,在适当的时候你应该能用到它们,但通常你都能够通过构造易于移植到其他编程语言的抽象层来简化用例代码并进行自我保护。设计数据类型是你的主要目标,从而使大多数工作都能在抽象层次完成,且和手头的问题匹配。

表 1.2.19 总结了我们讨论过的各种 Java 类。

表 1.2.19 Java 类(数据类型的实现)

类的类别 举例 特点
静态方法 Math StdIn StdOut 没有实例变量
不可变的抽象数据类型 Date Transaction String Integer 实例变量均为 private
实例变量均为 final
保护性复制引用类型数据
注意:这些都是必要但不充分条件
可变的抽象数据类型 Counter Accumulator 实例变量均为 private
并非所有实例变量均为 final
具有 I/O 副作用的抽象数据类型 VisualAccumulator In Out Draw 实例变量均为 private
实例方法会处理 I/O

评论

发布