OO暑期补给站总结

一、未完成作业的原因

   由于本学期的毕业设计的课程压力,尤其是最后几周毕设论文与第四单元作业时间重叠,因此最后两次作业并没有花时间去完成,而第四单元第一次作业由于一个bug有几个测试点未通过,因此第四单元整体作业完成情况不好。

二、第四单元设计思路

(1)第一次作业

  第一次作业只有找类的关联数目这一函数出现bug,bug原因为对一个类查找关联时,不仅考虑了父类,还考虑的父类的父类等。

(2)第二次作业

  顺序图

  顺序图中的三个查找函数实现都很简单,需要提到的是我对于第二次作业的输入数据处理方式。

  第一次作业中,我的处理方式为将输入数据截取数据块,即截取某个类或接口的全部信息,交由相关的类处理。这样的优点是,处理类或接口中的元素时,由于知道其父类是谁,就不用再进行查找,尤其是类和接口中存在相同的元素,比如属性、继承等,这样在寻找元素的父亲时还要寻找两次。缺点是,实现的代码较冗杂。

  第二次作业中,由于图中的元素种类较少,因此我采取的是对每个元素查找父图,而且由于每个图中的元素种类不同,查找只需一次,如此实现代码较简洁。

  状态图

  对于第二次作业的状态图,重点在于寻找所有可达状态,我采用的是有记录的DFS算法。具体的操作步骤如下:

  首先,对于每个stateMachine中的所有状态进行初始化处理,即记录每个状态的所有后继状态。

  然后,以我们要查找的状态为起点,新建一个存储所有可达状态的list,深度搜索过程中,只要遇到不在list中的状态就加入其中,最终可得到所有的后继状态。

(3)第三次作业

  由于第三次作业中的后面规则是在前面的规则前提下进行约束,即越靠后的规则约束条件越严格,也就越容易实现,因此难点只在于前四个规则。

  R001

  找到一个类中所有的Attribute和AssociationEnd名字,名字为null则不考虑

  R002

  对于类,由于是单继承,只需沿继承方向查找,直到找不到父类或者父类和初始类相同。

  对于接口,DFS搜索每个接口,判断每个接口是否在一个环中。

  R003

  DFS寻找一个接口的所有接口,由于R002,不用考虑深度搜索陷入死循环,最后查看列表中是否有重复元素。

  R004

  沿继承方向查找所有的接口实现,同样由于R002,不用考虑深度搜索陷入死循环,最后查看列表中是否有重复元素。

三、收获和建议

  补给站对于每个没有达到要求的同学而言都是一次机会,通过讲解的方式,更能使自己对于作业有更深入的了解,尤其是只补最难的一次作业也提供了充分的时间。通过补给站,我最大的收获就是,每次作业其实没有想象的那么难,其实只需要两三天的持续琢磨就能够完成,最重要的是不要在开始的时候就被不知道的困难压倒自己了。

  对于补给站,我的一些建议是,可以每周组织一次困难解决会议,对于某次作业的一两个测试点有问题的同学提出一些建议等。而且,强烈建议参考今年网上补给站的方式,不仅使时间和地点更加方便,而且能够让讲解的同学更加放得开讲。

四、总结

  补给站给了未通过的同学又一次机会,然而从进补给站的原因来看,很多同学可能是有拖延症(包括我自己)。而平时的拖延症到了补给站就更突出了,没有其他同学的督促,很可能就会拖到最后两三天才做,很多未通过补给站的同学也有这方面的原因。所以还是要提前做打算,本着提前一周完成的目标,这样拖延几天就没有太大的问题了。

  最后感谢补给站这样一个形式,能够节省同学们的一些时间去重新完成OO课程,希望课程越来越好,进补给站的同学越来越少。

 

你可能感兴趣的:(OO暑期补给站总结)