【3.17】软件构造Lab1(二)

在(一)中详细写了3.1和3.2两个任务,这次来写一下3.3和对Lab1的感悟。
3.3 Social Network
该任务拟在模拟刻画社交网络,是对有向图的处理,要求实现加入点、有向边、计算最小有向距离三个功能。这一部分需要自己设计框架和方法。
3.3.1 设计/实现FriendshipGraph类
(1)采用邻接表结构:
在这里插入图片描述Class Node.Edge:邻接表中的边,每个Edge对象存储了邻接表中的下一条边,以及对应的边的两个Person所对应的Node。
· Method Node.LoadData:将Person对象导入到Node中进行存储。
· Method Node.addNode:将相应的Node加入到Node的链表中
· Method Node.addNodeEdge:将新的边加入到对应的Node中并更新每个Node后的Edge链表。

(2)addVertex方法: 在图中增加一个新的节点。
首先对Person的名字进行判重:用HashSet记录下已加入的所有Person的名字,每当新加入一个Person则进行判断是否在集合中,如果不在集合中就新建一个Node类。
在这里插入图片描述(3)addEdge方法:在图中加入新的边.
在这里插入图片描述

(4)getDistance方法: 计算任意两个Person之间的“距离”,若没有任何社交关系则输出“-1”。
两个Person之间计算使用BFS,默认边权为1,则在搜索到边时加1即可,搜索到目标点退出;特殊情况根据要求输出0或-1。
在这里插入图片描述3.3.2 设计/实现Person类
Person类是为了实现将每一个人对应到一个Person对象,并存储名字的信息。
在这里插入图片描述3.3.3 设计/实现客户端代码main()
在这里插入图片描述
3.3.4 设计/实现测试用例
(1)重名测试:
在这里插入图片描述
(2)两个图测试:
在这里插入图片描述在这里插入图片描述
测试结果:
在这里插入图片描述
实验过程中收获的经验和教训:
(1)Java库中的函数非常多,巧妙的调用可以大大提高编程效率
(2)Java编程与C语言在很多方面都很像,但正因如此很多小地方存在差异就极容易导致书写代码时忽略这些小细节,在调试时不易发现,就会浪费很多时间
(3)一个实验的工作量非常大,不能集中几天完成,一定要分散工作量,每天利用一些时间完成
(4)Java与C语言相似,但是Java的结构是C语言没有的,之前没有接触过Java,通过假期提前预习初步掌握了一些基本语法,能够勉强完成实验课内容。但是Java很多强大的功能还需了解和学习。
(5)Eclipse功能强大,在调用方法是的候补功能非常方便,界面也很简介清晰。
(6)Git的版本控制功能非常方便,每个人都有自己的代码仓库,同时还能与本地仓库以及Eclipse链接,功能很强大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值