本次实验训练抽象数据类型(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并据此设计测试用例。
- 实验环境配置
简要陈述你配置本次实验所需环境的过程,必要时可以给出屏幕截图。
通过IDEA实现,所以没有配置Eclemma
实验给了一个图接口,需要建立边类还有点类,继承这个图接口,而且需要在此基础上实现一些方法,实现抽象数据型ADT,对ADT的规约与设计有更深的理解。
如何从GitHub获取该任务的代码、在本地创建git仓库、使用git管理本地开发。
在创建完项目后,在本地创建git仓库。然后打开自己实验二的GitHub库的网址,并找到URL:
然后在IDEA中添加这个URL,便可以进行提交并推送到自己实验二的GitHub库的操作。
-
-
- Problem 1: Test Graph <String>
-
思路:静态Graph.empty()方法的测试策略和测试在GraphStaticTest.java中。由于该方法是静态的,因此只有一个实现,并且我们只需要运行这些测试一次。还需要为GraphInstanceTest.java中的所有实例方法编写测试策略和测试。主要是针对每个方法进行分类划分测试。
对方法测试策略:
testSet()按照点是否存在进行划分:

testRemove可以按点是否已经存在划分;

testSources按边是否已经存在划分。

而结果在最后的测试中看。
-
-
- Problem 2: Implement Graph <String>
-
以下各部分,请按照MIT页面上相应部分的要求,逐项列出你的设计和实现思路/过程/结果。
-
-
-
- Implement ConcreteEdgesGraph
-
-
3.1.3.1.1 Edge类
(1).Edge中的字段应该包括边的长度,边的起点和终点,所以定义私有类型的这些变量如下图:

(2)在Edge中需要实现的方法:
| Edge |
初始化构造方法,初始化新边的两个点和边的权值 |
| checkRep |
检查表示不变性,边不为空并且权值>=0 |
| getsource |
返回边的一个点source |
| gettarget |
返回边的另外点target |
| getweight |
返回边的weight |
| toString |
返回一条边的字符串 |
(3) AF,RI和Safety from re

实验涉及设计和实现抽象数据类型(ADT),包括边类和点类,遵循面向对象原则。通过理解ADT规约,设计测试用例,实现泛型化,并在Graph<String>上下文中应用。实验还包括测试策略制定,如针对Graph.empty()的测试,以及在Poetic Walks项目中应用ADT,实现GraphPoet类,完成诗歌扩展功能。同时,重实现Lab1的Social Network,确保代码覆盖率。
最低0.47元/天 解锁文章
672

被折叠的 条评论
为什么被折叠?



