第六讲 抽象数据类型

第六讲 抽象数据类型



前言

本讲重点:黄色是重点中的重点

  1. ADT操作的四种类型

  2. 表示独立性

  3. 表示泄露

  4. 不变量,表示不变量RI

  5. 表示空间,抽象空间,AF

  6. 以注释的形式撰写AF,RI


提示:以下是本篇文章正文内容,下面案例可供参考

一、ADT操作的四种类型

  • 构造器(Creators):构造该类型的新对象
  • 生产器(Producers):从该类型的旧对象创建新对象
    例如:concat()函数
  • 观察器(Observers):获取抽象类型的对象并返回不同类型的对象
    例如:size()函数
  • 变值器(Mutators):改变对象属性的方法
    例如:add()函数
    前三种可以是可变的或不可变的,而第四种只能是可变的

Adt操作四种类型

二、表示独立性(representation Independence)

  • 定义:用户使用ADT时无需考虑内部如何实现,ADT内部表示的变化不应影像外部spec和客户端

三、表示泄露

顾名思义,就是说ADT中的属性或者是数据结构可以被其他人所使用;有的对象直接可以获得ADT中的属性的引用,那么此时,ADT中的属性就可以被更改,就不安全。
怎么防止表示泄露?

  1. 属性的类型尽量用不可变的,如果你想用可变的,return的时候要使用防御式拷贝
  2. 声明属性的时候使用private,final有时候也可以帮助防止表示泄露
    一道小题:
    在这里插入图片描述

四、不变量、表示不变量RI

不变量:在任何时候总是true
immutability就是一个不变量
表示不变量RI(Rep Invariant):R–>boolean
某个具体的表示是否是合法的,是判定条件(描述了什么是合法的表示集)
存在的意义:我不希望知道你的ADT使用什么方式存储的,换句话说,我不希望你的ADT的数据结构暴露给其他对象

五、表示空间,抽象空间,AF

为合法的RI中的每个值做出解释–即如何映射到抽象空间中
是一个映射,拿到一个ADT中存储的数据,通过一个什么样的方式把他解释成用户想要的数据

六 、以注释的形式撰写AF,RI,Safety from rep exposure

在这里插入图片描述

check rep():随时检查RI是否满足,在所有可能改变rep的方法内都要检查
在这里插入图片描述


总结

总结第六讲重要知识点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值