提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
这是java学习笔记或是学习记录一类的文档
这一篇是关于Abstract Data Type (ADT) 的简要介绍
一、Abstraction and User-defined Types
1. User-Defined Types
Java 中有一些内置数据类型,比如integer , boolean , string等,但程序员自己也可以定义数据类型,来满足使用需要。
2.Data Abstraction
数据抽象,大概就是用操作来刻画数据类型,比如一个有加减乘除操作的整数类型。至于抽象,是指用户不必关心数据是如何存储的,他们只需要设计和使用操作就可以了。
3.Defined by operations
抽象数据类型是由操作定义的,举个例子,List的使用者不必关心它是链表还是数组,或者什么其他数据类型。只要使用者的需求符合List的specification,就可以直接使用。
二、Classifying Types and Operations
1.Mutable and immutable types
可变数据类型:提供改变内部数据的值的操作。
不可变数据类型:操作不改变内部值,只是构造新对象。
2.Operation of abstract type
Creators : 创造数据类型的一个对象
Producers : 从该类型中旧的对象生成新对象
Observers : 返回对象属性的方法
Mutators : 改变对象属性的方法
3.Signature of a creator
构造器可以实现为构造函数,也可以实现为静态函数.
例如 new ArrayList() 和 Arrays.asList()
三、Designing an Abstract Type
1.设计简洁一致的操作
每个操作都有明确的目的,具有连贯的行为,也就是特殊情形应该比较少。
2.设计要易使用
对用户而言,抽象数据类型应满足他们所需的所有操作,而且操作难度不应该太高。
3.抽象和具体应该分开
要么针对抽象设计,要么对具体应用设计,比应该混合设计
例如像电话簿和数组混合成电话簿数组类就不好。
四、Representation Independence
1.客户在使用数据类型的时候无需考虑ADT内部如何实现,同时ADT内部的变化不应该影响客户端
五、Testing an Abstract Data Type
测试creators, producers, and mutators:调用observers来观察这些 operations的结果是否满足spec;
测试observers:调用creators, producers, and mutators等方法产生或 改变对象,来看结果是否正确。