3.3ADT

1.类WordList有四个方法,根据其方法定义来确定其类型

《1》public WordList(List<String> words)

《2》public void unique()

《3》public WordList getCaptitalized()

《4》public Map<String ,Integer> getFrequencies()

使用C,M,P,O分别表示Creator构造器,Mutator变值器,Producer生产器,Observer观察器

1->C

2->M

3->P

4->O

2.下面关于ADT的RI和AF正确的是

ADT的Abstract空间(A)中的某个值,在其Rep空间(R)中可能有多个值和其对应

若ADT的某个方法返回一个mutable的对象,并不一定表明该ADT产生了表示泄露(defensive copy)

一个immutable的ADT,其rep可以是mutable的

3.关于invariants,AF和RI,说法正确的是

如果一个immutable的ADT存在rep exposure,那么就违反了该ADT的invariants

如果在一个mutator方法内没有checkRep(),那么RI就可能被违反了

两个ADT有相同的rep和相同的RI,但可能AF不同

4.用于检查ADT的Rep Invariants是否保持为真的checkRep()最好应该以下类型的方法结束前调用

Mutator

Creator

Producer

Observer

5.class{

private String s;

private String t;

}

它的可能Rep Invariant会是

s contains only letters

s.length()==t.length()

s is the reverse of t

6.ADT的某个方法的spec需要以注释的形式放在代码中,在撰写这部分spec的时候,不能用到的信息是:
Mathematical values in the Rep space(R)
可以使用:
Parameters of operation
Data type of return values of the operation
Exceptions thrown by the operation
Mathematical values in the Abstract space(A)
解析:
Spec要给client看,那么所有内部的东西都不能用。R是rep的值空间,只能开发者自己了解。

7.在对ADT的方法进行JUnit测试时,以下说法正确的是:
对constructor方法,测试用例中需要构造新对象之后调用observer方法确认构造结果是否正确
对observer方法,测试用例中需要使用其他三类方法构造一个对象,再执行该方法并判断结果是否正确
不正确:
如果某方法的返回值为void,则无法为其撰写测试用例,因为无法assertEquals()
对mutator方法,测试用例中需要在该方法执行之后调用producer方法确认是否做了正确的mutate

8.不正确:
只要有非final的field,就一定产生表示泄露
除了初始化,immutable的类一定不能存在其他任何改变rep的方法
正确:
只要有public的field,就一定有表示泄露
checkRep()方法可能消耗大量运算在程序投入实际运行的时候要注释掉
解析:
所以不到迫不得已千万不要用public
final是来支持immutable的,与是否存在表示泄露无直接关系
可以有beneficent mutation
assert语句在投入真正运行的程序中是没有意义的,需要注释掉。前提是开发者利用checkRep()已经发现了所有违法RI的bug并修复了

9.针对你设计的一个ADT,不应该提供给client看的内容包括:
AF
RI
Rep exposure
Testing strategy
Rep
Implementation
Test cases
提供:
Spec

转载于:https://www.cnblogs.com/HIT-ryp/p/10607270.html

雨课堂知识点总结(十)相关推荐

  1. 雨课堂知识点总结(十二)

    3.5 Equality 1. ADT的equals( )需要满足的三个性质是[填空1]性.[填空2]性. [填空3]性 答案: 自反性;对称性;传递性; 2. 以下针对ADT等价性的说法,不正确的是 ...

  2. 雨课堂知识点总结(二十)

    8-2 内存性能与垃圾回收 第一题 关于内存管理的三种模式(static.stack.heap) ,不正确的是 A Static在编译阶段为各变量分配内存,不支持运行时变量扩展内存,但支持运行时为新变 ...

  3. 雨课堂知识点总结(十八)

    10-1 Concurrency 第一题 以下是计算机系统中的concurrency现象? A手机上的一个App通过5G网络访问云端数据 B四核CPU,执行多道程序 C使用Observer设计模式的J ...

  4. 雨课堂知识点总结(十九)

    8-5 面向性能的代码调优 1. 以下关于代码调优的说法,不正确/不恰当的是 A 代码行数越少,代码的执行性能倾向于更好 B 每写完一个method的代码,最好对其性能进行优化,确保时空复杂性优化 C ...

  5. 雨课堂知识点总结(十四)

    5.2 subtyping 1. Behavioral subtyping必须要满足的条件,不包括以下_ A 子类型可以增加父类型中所没有的新方法 B 子类型override父类型的某方法,子类型方法 ...

  6. 雨课堂知识点总结(十七)

    8.4 动态性能分析方法与工具 1. 以下关于Dynamic Program Analysis的说法,不正确的是__ A 根据程序执行的过程与结果,分析代码在时空性能方面所展现出的性质 B 对程序执行 ...

  7. 雨课堂知识点总结(七)

    3.1 1.Java中的Primitive Type(int,char,boolean等)和Object Type(String,Boolean,Calendar)的差异是 前者在Stack中分配内存 ...

  8. 雨课堂知识点总结(十一)

    3.4Object-Oriented Programming(OOP) 1.关于static和final的说法,正确的是: static类型的方法,调用时无需创建类的实例对象,可直接通过类名使用 被声 ...

  9. 雨课堂知识点总结(十三)

    5.1可复用性 1. Programming for reuseProgramming with reuse二者的区别: for:开发可复用的软件;with:用可复用的软件开发自己的软件 for:难点 ...

最新文章

  1. 指针数组 与 数组指针 的分析
  2. 你了解机房保温棉的使用和作用吗?
  3. Ehcache存储策略总结
  4. version robot
  5. 叶片制成切片的结构示意图_吉林大学《JPCL》:简单方法!制备高性能全叶片涂层量子点LED...
  6. no instance(s) of type variable(s) X exist so that DataSource<X> conforms to DataStream<Order>
  7. 2002年呼伦贝尔之行照片
  8. java程序员选择多个offer时需要看重哪些?_对不起,我们公司不要本科以下的大学生,学历对于程序员重不重要...
  9. Linux基础知识(3)---查看linux系统重启之前的log -- last_kmsg
  10. 铁打的春晚,流水的流量
  11. 高校选课系统的设计与实现
  12. PowerApps初体验,低代码快速搭建一套五一休假报备管理系统(一)
  13. Web、app、H5、小程序测试的区别
  14. 【Kay】Java判断正数和负数个数
  15. 《深度学习之TensorFlow》reading notes(3)—— MNIST手写数字识别之二
  16. Android 优秀文章收集整理集合
  17. 在python中读取和写入CSV文件(你真的会吗?)
  18. 毕业设计--2020.02.18 奇耘4.2寸墨水屏的程序设计思路分享
  19. LATEX 调整各种间距问题
  20. FFmpeg视频工具简洁教程

热门文章

  1. Matplotlib——绘制多个子图(Axes)及其布局
  2. 把一个JAVA程序变成一个可执行文件
  3. 关于强联通分量 的求法讨论
  4. 黑莓9930/9900开启电信4g网络,电信卡+3g上网
  5. docker save与docker export的区别
  6. C++中的库文件导入与导出
  7. 为什么说算法不是人工智能的核心
  8. 2.1.数列极限——实数系
  9. 昆明某饭店的师傅正在制作气锅鸡
  10. Delphi DBGrid总结