第一章 袋子
简介
抽象数据类型(ADT),独立于任何编程语言,是对概念上定义的一组数值以及在这些数值上的操作的规格说明。而数据结构ADT在编程语言中的实现。
集合是一个将其他对象形成组并向客户提供服务的对象。典型的集合能使客户增删查检改它所代表的对象。集合的行为被抽象化的说明。集合是ADT,而ADT去不一定是集合。
ADT袋子是集合和ADT的典型例子。在java中使用袋子,不需要知道袋子中数据项是如何表示的,也不需要知道袋子的操作是如何实现的吗,使用袋子的程序不依赖于这些细节。程序的这一特征就是数据抽象。
1.袋子的定义
袋子是无序排列的对象的有限集合,可包含重复对象。
2.袋子的行为
操作对象
- 向袋子中增加一个给定的对象
- 删除一个未特别指定的对象
- 删除一个特别指定的对象,如果有的话
- 删除所有的对象
查看量
- 获得当前对象数量
- 查看袋子是否满
- 查看袋子是否空
查看对象
- 统计某个对象出现的次数
- 查看是否包含某一个指定的对象
- 查看所有对象
3.袋子的规格说明
涉及决策:当非正常情况发生时如何处理?
- 返回信号,如试图从空袋子中删除一个物品,remove方法将会返回null,此值必须不同于袋子中任何物品
- 返回布尔值,表示操作操作成功或失败
- 抛出异常
4.接口
类的接口不包括:数据域、构造函数、私有方法和受保护方法。
public interface BagInterface<T> {
boolean add(T newEntity);
T remove();
boolean remove(T anEntity);
void clear();
Integer getCurrentSize();
boolean isFull();
boolean isEmpty();
Integer getFrequencyOf(T anEntity);
boolean contains(T anEntity);
T[] toArray();
}