OO第四单元博客总结
OO第四单元博客总结
一、总结本单元两次作业的架构设计
1.第一次作业
第一次作业其实我基本上没有做什么设计,因为要求有一个MyUmlInteraciton类,所以我就写了这一个类。
在类内,我模仿了UML类图的结构,将每个UML类图的元素用HashMap和他自己的Id或者是ParentId或者是source一对一关联起来。具体需要什么,依据查询指令的要求来定。然后查询的时候就直接输入Id找到对应的UmlElement,然后提取各种属性。剩下的就是考虑怎么查找能更节省时间一点。
2.第二次作业
第二次作业因为多了两种图,再加上考虑到第一次作业的时候文件行数爆掉了,所以四个查询方向我分成了4个类,然后每个类保有自己独有的属性值,即顺序图只包含顺序图的元素,状态图只包含状态图的元素,负责查询违规的那个类储存了继承关系和UmlClass,UmlInterface,方便查询。之后按照和第一次一样的想法,用id或者parentId或者sourcId来完成查询工作。有些地方再加一些用于辅助的private函数。
二、总结四个单元中架构设计及OO方法理解的演进
在四个单元中,我从一开始的时候还根本不知道面对对象的概念,到现在已经基本能理解并且在做架构设计时努力往面对对象的方向靠拢,算是长进了许多吧。
第一个单元中,我学会了基本的从描述中将对象抽象出来,自己构建属性和方法。第二单元中,我学会了多线程的编写,以及在多线程中,如何抽象对象,它们之间的关系又应该怎么设计。第三单元和第四单元是对两个重要工具,JML规格和UML图的学习,写代码的部分是帮助我们更深刻地理解它们,其实这两个工具本身就是对面对对象方法的一种剖析。JML规格对每一个方法或者类都具体的给出了前置条件,后置条件,以及异常等等信息,要求是方法必须满足这些条件,而具体怎么完成是随意的。这让我懂得了面对对象中,最重要的,需要我们在完成具体代码前就想好的部分是哪些。而UML图是对整体程序的一个抽象,从类图,顺序图,状态图等多个方向来描述,让我看到了在完成代码之前,应该完成哪些方面的设计。掌握这些工具,就是在让我学会比写代码更重要的架构设计部分。
三、总结四个单元中测试理解与实践的演进
在第一个单元时,我的测试方法还仅停留在手动输入自己想到的样例中,然后我发现大佬们都是用对拍器测试的……虽然我最后也没学会这个方法,但是在讨论课上听大佬们讲过一些,长了见识。
第三单元学习了JML规格后引进了Junit,虽然没有在自测或者互测的时候使用,但是在做单元总结的时候花了时间尝试了一下。在有JML规格的前提下,使用Junit测试可以检测一些极端测试点,而且因为是全自动的,所以很方便快捷。
除此之外,我还了解到自我测试的重要性,不只是在完成程序后进行自测,在写程序前和写程序时也有进行自测的必要。之前的测试可以对自己拿不准的部分事先进行功能性测试,写程序时,可以对已完成的部分代码逐个测试,避免了合到一起再测试时会出现更大的错误。
在四个单元的学习中,我从一开始的写完整体再胡乱测试,到后面学会在完成一部分后利用JML规格进行相应测试,对测试这两个字的理解更进了一步。
四、总结自己的课程收获
在面对对象课程中,我对于编程的各方面都有了深刻的了解。
在开课之前我只听说这是一门用JAVA编程的课程,一开始还以为几乎是JAVA语法课,结果与我想的大相径庭。面对对象课程重点在于教我们如何成为一名合格的程序员而不是只会写代码。对此比起语法,课程更注重的是思想。我能看出来每单元的大作业都是立在帮助我们理解面对对象编程所需要的某一方面。在学习的过程中,我对于面对对象所需要的封装、继承、多态有了进一步的了解,对于辅助的架构设计以及测试也有了一定程度的初探,这些都会让我在之后的编程生涯中走的更远。
五、建议
其实我这学期对OO课的体验还是很好的,而且一有什么问题老师和助教的反馈也很快,让我具体提出改进意见有点困难……
1.bug修复的时候好像要求有代码风格的问题也要一并改掉,但是在bug修复文档里没有提这点。我有一次有一个空格没找到在哪出问题了,然后bug修复一直提交失败,还以为是测试点的问题……
2.实验课希望能提前通知一下内容,比较好提前做准备,记得这学期就只有一两次提前通知了,有的时候如果实验课比较难,会很痛苦……
3.最后一次作业的指导书不知道是不是助教也要考试的原因,样例什么的都比较少,我最后还是不明白为什么我有两个点的R002规则验的不对,按我理解来说是对的,就很难受


浙公网安备 33010602011771号