实验目标概述
本次实验训练抽象数据类型(ADT)的设计、规约、测试,并使用面向对象编程(OOP)技术实现 ADT。具体来说;
- 针对给定的应用问题,从问题描述中识别所需的 ADT;
- 设计 ADT 规约(pre-condition、post-condition)并评估规约的质量;
- 根据 ADT 的规约设计测试用例;
- ADT 的泛型化;
- 根据规约设计 ADT 的多种不同的实现;针对每种实现,设计其表示(representation)、表示不变性(rep invariant)、抽象过程(abstraction function)
- 使用 OOP 实现 ADT,并判定表示不变性是否违反、各实现是否存在表示泄露(rep exposure);
- 测试 ADT 的实现并评估测试的覆盖度;
- 使用 ADT 及其实现,为应用问题开发程序;
- 在测试代码中,能够写出 testing strategy 并据此设计测试用例。
实验过程
Poetic Walks
设计测试和实现一个图的模块,并基于此实现一个使用单词的GraphPoet类。
1. 完善Graph接口类,运用泛型的思想,将String拓展为泛型L类;
2. 实现Graph类的方法,包括add、set、remove、vertices、sources、targets;
3.利用已经实现的Graph类进一步实现GraphPoet类。如果输入的文本的两个单词之间存在桥接词,则插入该桥接词;若存在多个单一桥接词,则选取边权重较大者。
Re-implement the Social Network in Lab1
继承P1中ConcreteEdgesGraph或者ConcreteVerticesGraph类实现FriendshipGraph,实现FriendshipGraph中addVertex,addEdge和getDistance三个接口,要求不能修改父类rep。
实验总结:
感受:
对ADT的设计以及specification, invariants, RI, AF的撰写有了更深刻的感会,使用泛型编程也更加熟练,同时对测试优先的编程也更为了解。