锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

哈工大 软件构造 Lab-2 重写FriendshipGraph

时间:2023-04-10 04:07:01 lqm18dh片式电感器

在这里插入图片描述

Re-implement the Social Network in Lab1

我们需要使用它P已实现1中Graph实现我们在第一次实验中设计的人际关系实验P3.我们不能改变现有的规定,只能在此基础上使用Graph设计为我们提供的方法。

我们应该首先确定相似之处Person定义,其次是确定FriendshipGraph最后,通过广泛搜索确定具体方法distance的大小。

FriendshipGraph类

在这里,我们努力实现它Graph就可以大显身手了。

我们将关系图声明为Graph由于类型的变量已经泛化,我们可以存储我们想要的Person类成员。先初始化,生成空图。

接下来要加点:(注意不要重复,用迭代器检查一下)

其次,向图中加边:

加边更容易使用graph类中的set方法,注意这里是无向图,我们的方法有方向,所以要Target和Source互换调用两次,weight赋值为1。

然后是返回graph的点的成员member,也很容易实现,只需调用Graph.vertices()可以。这种方法主要是单独声明搜索时的遍历。

最终是核心算法,利用广搜,可以计算最短路径,在这里不加赘述。

Person类

首先我们为了保护数据,以下的数据均定义为private类型。

对于每一个Person类对象person,定义private final String name储存他的名字,然后使用它private Boolean isVisited在搜索过程中是否访问过来标记。然后定义几种所需的观察者方法来获取person的name和isVisited标记和标记初始化函数initial以及改变标记的函数visit。

客户端main()

直接使用实验要求Lab1中的main函数,我们可以在不改变的情况下复制,运行观察结果的正确性。

由此可见,这里的输出与我们标记的预期输出是一致的,初步表明程序基本实现了预期目标。

测试用例

主要关注测试用例FriendshipGraph中函数,而main函数主要起调用作用,不需要测试。

对于添加点,我们应该考虑在空图中添加新点,在现有的非空图中添加新点和新点name会报错并终止程序。

对于加边,我们应该考虑边缘的起点不能相同,权值必须是正的。

对于计算距离,我们应该考虑图中环和连接对距离的影响,包括我们自己的距离,测试各种可能的情况,并验证实际值是否与理论值相同。

提交至Git仓库

如何通过Git提交当前版本GitHub上你的Lab2仓库。

给出您的项目目录结构树示意图。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章