软件构造lab1总结

体会写在前面:经过这个痛并快乐着的实验后,真正的开始会一点Java了,发现语言还真的不是看会的,也不是按部就班地学习学会的,而是任务驱动下做项目做出来的,是无数次查博客找bug中融汇贯通的。之前试了很多次学习Java,假期自己看了慕课看了视频教程,但是感觉收获甚少或者说真正记住的很少,开始面对一个项目后还是一样的懵逼,只有这次真正抓狂过了,才感觉找到了一点Java编程的感觉。(一点杂感,希望大家和我都能跳出语言学习的陷阱)

回归正题,lab1相对后面的简单但也只是相对,第一次操作还是有很多槽点的。个人建议有(大佬自动无视):
1.Eclipse 感觉安装插件有点坑,莫名其妙安装不上,隔壁家Idea早安上了。Eclipse上装完请立即重启
2.Java输入输出的库错综复杂,但是先学会bufferedReader,不要贪多
3.Git的使用建议装Github Desktop

任务一:任务一以幻方为背景,考察Java语言的基本操作,主要有文件读写,字符串处理,异常处理等,比较简单。

任务二:通过定义简单的forward、turn、color等函数,即可通过移动turtle在屏幕上画线,从而创作出图形。主要难点在于算法,凸包的算法很多,随方法不同复杂度大不相同。正多边形由角算边和由边算角公式比较简单,画正方形和正多边形是forward和turn的组合使用。

任务三:这题很有趣,也很有启发意义。用图结构刻画社交网络,图上的距离反映人际关系的亲疏。主要难点在于getDistance方法,算法上的选择有很多,BFS、迪杰斯特拉、弗洛伊德都可以,我选择的是邻接表实现的BFS。构建图的addVertex和addEdge方法使用了map数据结构,感觉map和python里的dict很像,后面排序还用到了它,真的好用。

任务四:实现函数getTimespan()和getMentionedUsers(),确保您的测试通过。重点在于了解Instant等类。实现函数guessFollowsGraph()和influencers(),并确保测试通过。难点在于利用TreeMap进行排序。使其变得更智能可以通过添加guessFollowsGraph中的规则,例如:遍历Map,如果A跟随B而B跟随C,并且B转发由C做出的推文,则A看到转推并受C影响。

最终建议:独立完成,困难问人。
小小心得不足道,几多辛苦谁明了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值