设为首页 加入收藏

TOP

1.5.2 指定数据和操作(2)
2014-03-11 13:00:19 来源: 作者: 【 】 浏览:138
Tags:1.5.2 指定 数据 操作

1.5.2  指定数据和操作(2)

最后来看一下包中的内容。我们定义了一个将包中的项放入向量中的方法,而不是提供了一个显示包中所有项的方法。这样客户可以使用自己喜欢的方法显示包中的部分项或者全部项。下面是最后一个方法的规范:
 

  1. // Gets all entries in the bag.  
  2. +toVector(): vector 

与前面开发的包方法的规范类似,我们使用了UML表示法。图1-7显示了这样做的结果。

注意,CRC卡以及UML图并没有给出所有的细节,例如所做的假设以及特殊情况。然而,当已经明确了这些情况后,应该指明方法在这些情况下的行为。正如我们在下面的表格中所做的那样,应该记录与方法行为有关的决策。然后可以将这些信息描述组合到用于说明方法的C++注释中。
 

抽象数据类型:包

数据

  有限数量的对象,不必不同,没有特定的顺序,具有相同的数据类型

  集合中对象的数量

操作

   

   

getCurrentSize()

任务:报告当前包中对象的数目

输入:无

输出:当前包中对象的数目

isEmpty()

任务:检测包是否为空

输入:无

输出:根据包是否为空,输出true或者false

add(newEntry)

任务:将给定对象添加到包中

输入:newEntry对象

输出:根据添加动作是否成功,输出true或者false

remove(anEntry)

任务:如果可能的话,将特定对象从包中删除

输入:anEntry对象

输出:根据删除动作是否成功,输出true或者false

(续表)

抽象数据类型:包

clear()

任务:从包中删除所有对象

输入:无

输出:无

getFrequencyOf(anEntry)

任务:计算包中某个对象的出现次数

输入:anEntry对象

输出:用于表示anEntry在包中出现次数的整数

contains(anEntry)

任务:检测包是否包含某个特定对象

输入:anEntry对象

输出:根据anEntry对象是否在包中,输出true或者false

toVector()

任务:获取包中所有对象

输入:无

输出:包含当前包中所有项的向量

提示:处理特殊情况

如前所述,必须决定如何处理特殊情况。ADT包的文档必须反映出前面的讨论中所做的决定及其细节。例如,remove方法的规范指明如果客户试图从空包中删除某项将返回false。我们也可以给这个方法一个前置条件保证这个包不为空,然后由客户在调用这个方法之前检测这个前置条件是否满足。注意,客户可以使用ADT包中的其他方法完成这个任务,例如isEmpty和getCurrentSize。

问题1 使用UML表示法为函数编写规范,这个函数计算具有n个任意整数的数组中前5个正整数的和。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.5.2 指定数据和操作(1) 下一篇1.5.3 ADT的模板接口

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)