软件构造部分笔记:ADT抽象数据类型.PART1

本博客参考了HIT软件构造课程的PPT、MIT软件构造课程的教学资料。

目录

1 Abstraction and User-Defined Types 抽象和用户自定义类型

2 Classifying Types and Operations 分类类型和操作

数据类型划分:

可变 immutable 

不可变 mutable

抽象类型的操作种类:

3 Abstract Data Type Examples 抽象数据类型例子

4 Designing an Abstract Type

5 Representation Independence 表示独立性

6 Testing an Abstract Data Type


抽象数据类型与表示独立性: 如何设计良好的抽象数据结构,通过封 装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在 bug—— client implementer 之间建立“防火墙”。
ADT的特性:表示泄漏、抽象函数AF、表示不变量RI
基于数学的形式对ADT的这些核心特征进行描述并应用于设计中。

1 Abstraction and User-Defined Types 抽象和用户自定义类型

  抽象类型:强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设计/使用操作即可。 
抽象数据类型是由其操作定义的!!!

Classifying Types and Operations 分类类型和操作

数据类型划分:

可变 immutable 

可变类型的对象:提供了可改变其内部数据的值的操作

不可变 mutable

不变数据类型: 其操作不改变内部值,而是构造新的对象
注:有时,类型将以两种形式提供,可变形式和不可变形式。例如,StringBuilder是String的可变版本(但这两者肯定不是同一种Java类型,而且不能互换)。

抽象类型的操作种类:

构造器creators、生产器producers、观察器observers、变值器mutators(改变对象属性的方法)

Abstract Data Type Examples 抽象数据类型例子

immutable: int, String

mutable: List

4 Designing an Abstract Type

设计简洁、一致的操作

 要足以支持client对数据所做的所有操作需要,且用操作满足client需要的难度要低

5 Representation Independence 表示独立性

表示独立性:client使用ADT时无需考虑其内部如何实现,ADT内部表示的变化不应影响外部spec和客户端。
除非ADT的操作指明了具体的pre- 和post-condition,否则不能改变ADT的内部表示——spec规定了client和implementer之间的契约。

6 Testing an Abstract Data Type

测试creators, producers, and mutators:调用observers来观察这些operations的结果是否满足spec;
测试observers:调用creators, producers, and mutators等方法产生或改变对象,来看结果是否正确。

风险:如果被依赖的其他方法有错误,可能导致被测试方法的测试结果失效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十六涣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值