OO第四单元总结

前言

 第四单元的OO课程又结束了,这也意味着自己OO学习算是告一段落了。接下来我将从5个方面来总结一下UML单元的学习以及整个OO课程的一些总结。


 

 

架构设计

 

第一次作业

程序分析:

对于需要进行信息存储的类比如说Class和InterFace,还有Class下的Operation,都单独建立一个类来处理。将大部分的建立工作放到构造方法中完成,这样可以提高效率,避免重复的计算操作。

复杂度分析:

两次作业都有同一个bug,就是自己在接口的处理上面存在一点问题,在输出一个类的实现接口时,会出现遇到重复不输出的现象。

第二次作业

程序分析:

与上一次的架构类似,将transition,State,还有StateMachine都自己建立一个存储信息的类,然后进行查询操作等等。

复杂度分析:

bug和上次一样,上次居然没测出来...


 

 

四个单元中架构设计及OO方法理解的演进  

 

第一单元的时候,我自己基本上还是按照学习C语言的时候使用的方法习惯来完成OO的任务,当时我并没有按照什么建立对象的思想把每一种需要求导的形式抽象成为一个类,而是完全面向过程的,一步一步拆分,然后进行求导。这样的后果就是每一次都要从头重新写,扩展性根本没有。但是在第三次作业的时候感觉自己逐渐有了一点点面向对象的思想,就是在一个因子求导的类中分成了几种情况分别求导,但是没有把它们真正抽象成一个类,变成可以实现的对象。

第二单元是多线程的电梯,因为确实不能面向过程了,我采用了面向对象的思想和架构。人的输入进程,电梯进程,以及调度器都分别建立了一个类,然后类和类之间进行信息的传递,相互之间只有在同步访问资源的时候才可能有所冲突,这种架构模式贯穿了我三次作业。每一次我只需要在电梯类地方修改一下电梯的运行模式,还有调度器的调度算法就可以了,使自己的程序有了可扩展性。

第三单元是JML语言的学习。这个单元主要是通过JML语言的描述,实现相应的接口,说实话只需要按部就班的完成就可以了。但是因为这个单元加入了性能的测试,所以有时候成绩会非常惨。JML只是告诉了你需要完成什么任务,输入输出都分别是什么,但却不限制你的实现方法,因此需要综合进行考虑。时间因素和空间因素都要考虑在内。同时这个单元真正做到了面向对象的继承思想,一点一点,从一个抽象的接口,变成一个可以实现的地铁图。

第四单元只有两次作业,主要是UML语言的学习,方法依旧是上个单元的方法,通过对UML的类图,状态图,以及顺序图的解析和查询,我了解了UML语言和图的结构,以及基本的操作。感觉这个单元的难度并不是特别大,可能是自己已经适应了OO的节奏方法了。在最后一次作业中,也是完成了一个千行的代码,能够查找UML的三类图的相应的信息。


 

 

四个单元中测试理解与实践的演进

 

第一单元的时候主要是在格式上面进行的测试,因为求导上面相对而言没有太多的问题。碰到的错误也基本上就是在输出错误,以及各式上面判断的问题,很快就可以进行改正。

第二单元的时候自己的代码没有遇到什么问题,然后在测试别人的时候,总想着会不会有什么不注意的问题,然后发现漫无目的的找根本没用,还是应该通过发现其中的逻辑问题来定位构造测试用例。

第三单元和第四单元遇到bug的时候基本上都是一个整体上的架构问题,或者至少也是一类上面的疏忽,修改起来相对复杂也困难,很容易造成其他方面又出现错误


 

 

课程收获

 

首先是在技术层面上,那就是熟练的掌握了Java这门语言。在开学的时候,我还是一个写A+B都很困难的萌新,但是在结束的时候,我可以光导入import就导入50多个啦,可以一周之内写完一个千行的project。然后我在学习过程中,理解并能应用了多线程,理解多线程的运行模式,并且完成了一个有三个电梯的调度系统的project。还有就是理解了JML,和UML两种语言,并且能够根据他们的描述完成相应的任务。然后就是对整个面向对象思想的理解。再上这门课之前,我也并不了解什么是面向对象,但是在不断的学习中,我好想逐渐学会了,知道如何去抽象,如何去建立一个个类,并且把他们实例化成为一个个可以调用的对象,通过对象之间的信息交换,来完成所期望的功能。OO是一种思想,一种解决问题的思维方法,通过抽象,再实例化,可以完成一个个看似非常庞大的任务。

然后是在心态上,练就了抗压能力。每一次在完成一个project的时候,都是信心备受摧残的时候,每一次当你刚刚写完,并且编译运行的时候,总是抛出一堆异常,然后耐着性子改,真的很折磨人的内心。还有就是碰到有bug的时候,一点点定位查找修改的过程,也非常考验人的内心。不过还好,这些都算是过去了。


 

 

改进建议

 

上午上课下午上机考试,属实有点太难顶了。每一次中午都还要仔细复习一下,或者学习。是否可以降低一点实验难度或者,改成周六啊。

降低强测的占比吧,这好不容易过了中测,才给15分,有点少吧,每一次要是强测点错一半,其实和这次作业没做也没差多少了。

可上可以多讲讲又滚作业的推荐架构什么的最好,详细一点的,要不自己想的千奇百怪不说,主要是开始时候自己没有面向对象的思想啊,建议前几次作业给个推荐的架构,更能方便理解。


 

 

就到这里啦。

相关文章

UML有助于在软件开发生命周期的所有阶段理解和可视化系统。以...
UML各种图总结-精华 https://www.cnblogs.com/jiangds/p/65...
MicrosoftOfficeVisio“UML模型图”模板为创建复杂软件系统的...
用例图1.用例图是UML用于描述软件功能的图形。用例图包括用例...
一、用例图:用例图(usecasediagram)是UML用于描述软件功能...
1.A类B类C类这三个类是什么关系?B类依赖A类和C类因为最主要...