首页 > 其他 > 详细

OO第二次博客作业

时间:2018-05-02 18:43:23      阅读:151      评论:0      收藏:0      [点我收藏+]

第五次作业

  这一次作业主要使用了6个类。

  main类只有没有属性,没有方法,类共20行代码。

  Fileout类用来输出,只有2个属性,2个方法,分别有12,6行代码,其中构造函数方法有2个控制分支。类共26行代码。

  newScheduler类用来调度,有9个属性,3个方法,分别有11,3,285行代码,其中run函数有33个控制分支。类共310行代码。

  Request类用以处理请求,有5个属性,16个方法,分别有7,7,7,7,7,7,7,3,3,3,3,3,3,3,3,4,27行代码,toString方法有2个控制分支,类共105行代码。

  RequestList类用以处理请求队列,有8个属性,7个方法,分别有11,6,84,9,9,9,5行代码,setRL方法有4个控制分支,类共150行代码。

  Elevator类用以电梯运行,有18个属性,17个方法,分别有11,3,3,3,3,3,3,3,3,3,3,71,17,6,27,18,558行代码,bringjudge方法有11个控制分支,print方法有3个控制分支,toString方法有1个控制分支,run方法有92个控制分支。类共760行代码。

技术分享图片

最主要的问题在于Elevator的run方法是在太长了。

技术分享图片

 

   这次发现了多个bug,在最后也没找出来,不过我知道是在运行多线程的问题。如何使得线程间不再相互影响,才能解决我的问题。

  在找别人bug的时候,我是按照分支树严格设计的测试用例,不过并没有找到bug。

  这次作业比较仓促,没有太多时间规划,使得结果差强人意。

 

第六次作业

  这一次作业主要使用了9个类。

  main类只有1个属性,没有方法,类共150行代码。

  Fileout类用来输出,只有2个属性,2个方法,分别有5,9行代码,其中没有控制分支。类共18行代码。

  FileDetail类用来记录信息,有4个属性,13个方法,分别有6,6,6,6,3,3,3,3,3,3,3,3,3行代码,其中没有控制分支。类共60行代码。

  SafeFile类用来提供安全的文件方法,没有属性,12个方法,分别有17,5,5,5,5,5,5,11,10,8,8,23行代码,其中renameto有2个控制分支,创建、删除文件、文件夹的方法各有1个控制分支。类共110行代码。

  summary类用以记录触发器触发次数,有6个属性,3个方法,分别有16,9,26行代码,没有控制分支。类共65行代码。

  detail类用以记录触发器触发详情,有14个属性,3个方法,分别有11,30,114行代码,Fileout方法有4个控制分支。类共180行代码。

  Rename、Modified、Path_changed、Size_changed方法相同,有11个属性,12个方法,分别有11,30,31,14,3,6,6,16,5,58,8,246行代码,scandir方法有2个控制分支,recover方法有2个控制分支,compare方法有8个控制分支。类共450行代码。

技术分享图片

这次我觉得我的代码构架还是比较合理的。美中不足的还是触发器的run方法有点长了。

技术分享图片

 

   这次发现了1个bug,在最后也没找出来,就是不知道为什么记录详细信息的时候,如果是Size_changed和Modified的话记录不到正确信息,而余下两个触发器并没有这个问题。经过试验,发现并不是线程调度问题。到最后也没找到问题在哪里。

  在找别人bug的时候,我是按照分支树严格设计的测试用例,找到2个。一个是目录较深的话会出现检测不到的情况;还有一个就是会反复输出同一次触发的信息。这个应该和程序的桟有关。

  这次作业我做的还是比较认真的,但还是漏洞百出。分析原因,我认为主要是测试问题。一次写完所有的程序再进行测试的话,会导致为了一个小错而反反复复输出半天。这样不仅浪费时间,还不一定能找到问题发生的地方。

 

第七次作业

  这一次作业主要使用了4个类。

  main类只有没有属性,没有方法,类共60行代码。

  Map类用来处理地图相关,只有11个属性,11个方法,分别有14,67,3,3,9,9,9,9,25,19,7行代码,getrequest方法有1个控制分支,mypointbfs方法有1个控制分支,Link系列(检测是否有四个方向的道路)方法有1个控制分支,makemap方法有8个控制分支。类共244行代码。

  Guest类用来处理请求,有12个属性,15个方法,分别有12,5,3,3,55,12,55,3,3,3,3,6,7,57,13,8,15行代码,getrequest方法有5个控制分支,scanthearea方法有2个控制分支,getthetexi方法有6个控制分支,run方法有2个控制分支。类共330行代码。

  Taxi类用来处理出租车相关,有17个属性,32个方法,分别有8,3,3,3,3,4,3,4,5,3,3,13,18,17,17,17,36,8,24,15,6,4,4,4,4,6,5,19,11,8,18,3行代码,其中newfile有1个控制分支,run有1个控制分支,move(Point)有3个控制分支,move(Point[])有5个控制分支,move有2个控制分支。类共350行代码。

 技术分享图片

 技术分享图片

这次我觉得我的代码构架还是比较合理的。没有特别长的方法。

 

 技术分享图片

 

   这次自检的时候发现了1个bug,就是如果按照程序运行来输出时间的话,在运行的时候难免会因为代码的运行导致真实事件与我们所期望的时间不符,当跑的路径一长,这个误差会导致结果不对。所以我使用了假时间。

  在找别人bug的时候,我找到2个bug。一个就是上段提到的时间问题;还有一个就是它的出租车在停下开门的时间比要求长了200ms。

  这次作业的结果我还是比较满意的。而且这次使用了老师提供的gui界面,使得我们能够看到程序运行的状况,增加了测试的趣味性和测试的准确程度。

 

  

总结

  总的来说,这三次作业的中心从使用java,到java线程安全。严格来说,第六次作业我的问题应该跟线程安全有关。线程安全确实不那么容易,虽然严格来说就那么几个关键字,但实际应用上需要不少的联系才能应用的比较熟练和简洁。

OO第二次博客作业

原文:https://www.cnblogs.com/liaowang99/p/8981488.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!