抽象类型:强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储,只需设计/使用操作即可
ADT有操作定义,与其内部实现无关。
可变数据类型:提供了可改变其内部数据值的操作;
不可变数据类型:其操作不改变内部值,而构造新的对象。(没有mutators)
ADT操作分类:
1.Creators 构造器:
利用该类型对象产生一个新的对象,可能实现为构造函数或静态函数(factory method)
2.Producers生产器:
用已有该类型对象产生新对象,如string.concat()(连接两个字符串,产生一个新的字符串)
3.Observers观察器
如list.size()返回int(不同于原类型)
4.Mutators变值器(改变对象属性的方法)
通常为void,如果为void,则必然意味着它改变了某些对象的内部状态,也有可能返回非空类型(如容器类的put、add方法)