当先锋百科网

首页 1 2 3 4 5 6 7

实验目标概述

本次实验训练抽象数据类型(ADT)的设计、规约、测试,并使用面向对象编程(OOP)技术实现 ADT。具体来说;

  1. 针对给定的应用问题,从问题描述中识别所需的 ADT;
  2. 设计 ADT 规约(pre-condition、post-condition)并评估规约的质量;
  3. 根据 ADT 的规约设计测试用例;
  4. ADT 的泛型化;
  5. 根据规约设计 ADT 的多种不同的实现;针对每种实现,设计其表示(representation)、表示不变性(rep invariant)、抽象过程(abstraction function)
  6. 使用 OOP 实现 ADT,并判定表示不变性是否违反、各实现是否存在表示泄露(rep exposure);
  7. 测试 ADT 的实现并评估测试的覆盖度;
  8. 使用 ADT 及其实现,为应用问题开发程序;
  9. 在测试代码中,能够写出 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的撰写有了更深刻的感会,使用泛型编程也更加熟练,同时对测试优先的编程也更为了解。

项目目录结构树状示意图: