1.5.1 确定行为
由于包包含有限数量的对象,因此报告其所容纳的对象数量就是包的行为之一:
获取当前包中项的数目
与此相关的行为检测包是否为空:
查看包是否为空
我们应该能够添加或者删除对象:
将给定对象添加到包
如果可能的话,将某个特定对象从包中删除
删除包中的所有对象
注意,添加操作并没有指明将对象放置在包的哪个位置。包并不会将其内容排序。删除操作需要在包中查找某个特定项。如果能够找到,就将其删除。如果包中包含若干个与被删除对象相等的对象,则这些对象仍然在包中。如果在包中无法找到这个特定对象,就无法删除,此时只需要说明这一情况。最后,第二个删除操作只是简单地将包清空。
某个特定的包中有什么?这个问题的答案可以通过下面的操作获得:
计算某个对象在包中的数量
测试包中是否包含某个特定对象
查看包中所有对象
现在已经有了足够多的行为。此时我们应该已经将所有的行为写在纸上,或者像附录C建议的那样,写在如图1-6所示的类-职责-协作(CRC)卡上。

由于包是抽象数据类型,因此我们只描述其数据并指定其操作。我们不指明如何存储数据以及如何实现操作。例如,不需要考虑数组。首先要清楚地知道包操作做什么:关注操作做什么,而不是怎么做。也就是说,在程序中使用包之前需要一组详细的规范。实际上,甚至在决定使用的编程语言之前就应该指定包的操作。