软件构造课程总结(3)
这里是HIT2021软件构造课程的总结博客,主要书写了本学期软件构造的所有课程内容和实验内容。
第六章、ADT
1.表示独立性:通过封装来阻止用户访问程序内部
2.抽象函数AF
3.表示不变量RI
4.数据抽象:强调作用于数据上的操作,在java中使用类的方法
5.可变数据类型和不可变数据类型:改变时,前者改变内存中数值,后者构造一个新对象
6.四种方法:creators、producers、observes、mutators
7.creators:构造函数或者静态函数,或者工厂方法
8.mutators:通常返回void
9.int是immutable没有构造器mutators,而String是immutable所以也没有构造器mutators
10.list是mutable,存在构造器mutators,比如add()
11.抽象类型设计
Ⅰ.简洁一致的操作
Ⅱ.面向用户需求,满足所有需要且尽量简洁
Ⅲ.要么抽象要么具体。
12.表示独立性
内部实现对与用户无关
例子:MyString
要点:不能让用户访问到类体(使用private表示、observers使用保护式拷贝)
13.测试ADT
同样是测试四个部分:creators、producers、observes、mutators
主要测试返回值和操作结果
14.不变量
程序中始终保持不变的属性,比如一个家庭类当中,人数总是大于0的。
15.RI(Rep Invariant)
开发者关注R,client关注I
三种关系:满射、非单射、非双射
AF:抽象函数,R到A的映射
R中存在非法值,这时在A中无映射
RI中元素合法的子集
16.AF
一个R到A的映射
总结一下RI和AF:RI是输入的约束条件,AF是输入到输出的函数