软件构造——ADT的RI和AF

RI

RI是指表示不变量,其实就是指类中的属性必须满足的一些条件。

eg1:

构建一个Person类的时候,我们不希望一个人名字为null,或者他的年龄为负数,所以我们可以像下图一样书写RI:
在这里插入图片描述

eg2:

Lab2中Edge类的实现(有向图的一条有向边),在spec中要求了每条边的起点和终点必须是非空的,并且这条边权重不能为负数。所以书写RI如下:
在这里插入图片描述

AF

AF:抽象函数,类似于一个映射。
如下图:
在这里插入图片描述
集合A为抽象空间,集合R为表示空间。
集合A是抽象值构成的空间:即client看到和使用的值。
集合R是表示值构成的空间:即实现者看到和使用的值。

用户(client)只关注抽象空间A,而ADT的实现者需要关注两个空间。(用户只用知道怎么用即可,具体内部怎么实现不需要关心。而ADT实现者必须对两个空间有清晰的把握)

如上图所示,这就是 “构造的程序的 ADT内部的量” ——> “客户想要操作的量” 这样一个映射。

AF一定是满射,不一定是单射,因此不一定是双射。

也就是R中的对象不一定能找到A,但是A中的抽象必须有R中对应的对象。(类比:客户要求的功能你必须要实现,但是你另外多写了什么没有关系)

eg1:

在这里插入图片描述
此ADT是要表示一条推文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值