HIT软件构造lab2报告

该实验旨在训练抽象数据类型(ADT)的设计、规约和测试,以及面向对象编程(OOP)技术。学生需要实现Graph ADT,包括边和点的两种方式,同时考虑泛型化和测试用例。实验涵盖了Poetic Walks问题,社交网络重新实现以及国际象棋游戏的ADT设计。
摘要由CSDN通过智能技术生成

1. 实验目标概述

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

l 针对给定的应用问题,从问题描述中识别所需的 ADT;

l 设计 ADT 规约(pre-condition、post-condition)并评估规约的质量;

l 根据 ADT 的规约设计测试用例;

l ADT 的泛型化;

l 根据规约设计 ADT 的多种不同的实现;针对每种实现,设计其表示 (representation)、表示不变性(rep invariant)、抽象过程(abstraction function)

l 使用 OOP 实现 ADT,并判定表示不变性是否违反、各实现是否存在表 示泄露(rep exposure);

l 测试 ADT 的实现并评估测试的覆盖度;

l 使用 ADT 及其实现,为应用问题开发程序;

l 在测试代码中,能够写出 testing strategy 并据此设计测试用例。

2. 实验环境配置

安装配置EclEmma:

/参考https://www.eclemma.org/installation.html中Option2/

打开Eclipse,Help->Install New Software,在Work with中add http://update.eclemma.org/,检查最新的EclEmma的版本,Next,遵循安装向导完成安装。

3. 实验过程

3.1 Poetic Walks

需要构造一个Graph,实现或完善规约要求的内容。以边和点两种方式实现接口,需要将String拓展为泛型L。实现ConcretEdgesGrap和ConcreteVertexGraph中接口中定义的各个函数。问题四中,根据文件输入,如果相邻两个词之间构成一条有向边,从而构成一棵树,再输入给定的句子,若相邻两个词之间有一个词,则插入,有多个,则选取边权重较大者。

3.1.1 Get the code and prepare Git repository

在git bash中输入命令:

git clone https://github.com/rainywang/Spring2020_HITCS_SC_Lab2.git

3.1.2 Problem 1: Test Graph

将Graph empty()方法修改为
在这里插入图片描述
测试结果:
在这里插入图片描述

3.1.3 Problem 2: Implement Graph

3.1.3.1 Implement ConcreteEdgesGraph

先写Edge类:

  1.  属性有source, target, weight,注意Edge不可变,只有Getter,分别是getSource, getTarget. getWeight。
    
  2.  Edge函数初始化Edge的三个成员变量。
    
  3.  checkRep函数在Getter返回前,检查三个成员变量是否有空。
    
  4.  toString函数以字符串的形式展示该边的起点、终点和边权。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值