软件构造实验二

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

本次实验训练抽象数据类型(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并据此设计测试用例。
  1. 实验环境配置

简要陈述你配置本次实验所需环境的过程,必要时可以给出屏幕截图。

通过IDEA实现,所以没有配置Eclemma

  1. 实验过程
    1. Poetic Walks

实验给了一个图接口,需要建立边类还有点类,继承这个图接口,而且需要在此基础上实现一些方法,实现抽象数据型ADT,对ADT的规约与设计有更深的理解。

      1. Get the code and prepare Git repository

如何从GitHub获取该任务的代码、在本地创建git仓库、使用git管理本地开发。

在创建完项目后,在本地创建git仓库。然后打开自己实验二的GitHub库的网址,并找到URL:

然后在IDEA中添加这个URL,便可以进行提交并推送到自己实验二的GitHub库的操作。

      1. Problem 1: Test Graph <String>

思路:静态Graph.empty()方法的测试策略和测试在GraphStaticTest.java中。由于该方法是静态的,因此只有一个实现,并且我们只需要运行这些测试一次。还需要为GraphInstanceTest.java中的所有实例方法编写测试策略和测试。主要是针对每个方法进行分类划分测试。

对方法测试策略:

testSet()按照点是否存在进行划分:

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

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

而结果在最后的测试中看。

      1. Problem 2: Implement Graph <String>

以下各部分,请按照MIT页面上相应部分的要求,逐项列出你的设计和实现思路/过程/结果。

        1. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值