本次博客是对抽象数据类型学习进行的总结
一、数据的抽象
数据抽象是由一组操作所刻画的数据类型。指的是对于一组数据类型只需知道其如何使用,而无需关心具体数据如何储存。
二、数据类型的操作类别
1,Creators构造器:用于创造新的对象
2,Producers生产器:从一个原来的对象中生产出新的对象,返回一个对象
3,Observers观察器:使用一个对象返回一个不同的数据类型用于查看对象的某一属性
4,Mutators变值器:用于改变一个对象属性
三,表示独立性
1,lient使用ADT时无需考虑内部如何实现,ADT内部表示的变化不应影响外部spec与client,除非ADT的操作指明了具体的pre-condition和post-condition,否则不能改变ADT的内部表示。
2,如何保持表示独立性:
1、所有字段都使用private,这是最基本的最起码的保护方式。
2、防御式拷贝:对于可变数据类型,返回前进行拷贝
3,保持不变量(immutability):保持程序的正确性。可以使用final使其指向不变。
四,一个ADT结构
1,在定义一个数据结果之前需要写Representation在ADT中确保Rep不违反
2,spec:写在操作之前,与用户达成契约。
3,Implementation:具体操作的实现
总结
数据抽象是一种编程范式,它允许我们定义和操作一组数据类型,而无需关心它们的具体实现。数据抽象通过一组操作来描述数据类型,包括构造器、生产器、观察器和变值器。
数据抽象的关键特性是表示独立性,即客户端在使用ADT时无需考虑其内部实现。为了保持表示独立性,我们可以使用private修饰符保护所有字段,进行防御式拷贝,以及保持不变量。
一个ADT的结构包括Representation、Spec和Implementation。在定义一个数据结果之前需要写Representation在ADT中确保Rep不违反,spec与用户达成契约,而Implementation则是具体操作的实现