zoukankan      html  css  js  c++  java
  • OO_UNIT4 & OO_2020 SUMMARY

    OO_UNIT4 & OO_2020 SUMMARY

    一、第四单元三次作业的架构设计

    第一次作业架构设计:

    第一次作业刚看的时候还是很懵的,搞不懂到底让干什么,指导书和课件反复看了好几遍才搞明白干嘛,虽然没有太多算法知识,但是从0到1的跨度还是挺难的。

    第一次作业的采用的架构设计是,构建了自定义的Class和Interface等类,然后将UmlClass和UmlInterface等原始的类作为元素放到自定义的类里面,同时在自定义的类里面放其他需要统计的属性。我没有采用继承是因为我觉得继承的话会在构造容器的时候不太方便,所以干脆直接用自己自定义的类。

    此外我还构造了一个umlGraph类,用来对数据处理,避免了所有函数细节都放在主类里面。

    第一次架构的UML图如下:

    第二次作业架构设计:

    相比第一次作业,第二次作业的几个函数基本就是第一次的扩展,难度不是很大,主要是理解清楚顺序图和状态图里面元素的结构,然后按照第一次的架构延申一下就可以了。

    第二次架构UML图如下:

    第三次作业架构设计:

    第三次作业是检查UML模型的正确性,算是对前两次作业的一个综合。我我认为只要前面两次作业设计不是太不合理,这次作业的函数都能根据前两次的设计稍微扩展一点就能实现。难点主要是判断循环继承和重复继承上,这里需要考察我们算法的知识了,不过dfs也在前面两次作业里有体现,稍微改变一下结构也不是太麻烦。

    第三次架构UML图如下

    二、总结自己在四个单元中架构设计OO方法理解的演进

    第一单元:

    第一单元主要学习了使用类作为解决问题的对象的方法。由于第一次接触面向对象语言,自己思考的方向还是很多过程式的思考的,表现出来就是:类的职责分不清、类里的函数也是耦合度高。

    虽然不是说类的数量越多越好,但是解决一个复杂问题就用了一两个类,这样肯定是不好的。好的状态应该是首先分清解决问题需要几个阶段,然后把每个阶段的任务交给特定的类去解决。在第一单元里,“各司其职”是我对面向对象的理解。

    第二单元:

    多线程还是挺神奇的,不光运行起来神奇,debug更神奇。

    第一次接触多线程感觉确实和单线程有很大区别,不仅要考虑程序运行过程,还要考虑程序运行到某一时刻的状态。第二单元题目是多线程电梯,其实总的架构很清楚,每个模块分配一个线程,采用生产者消费者模式,但是实现起来不是那么简单的。

    本单元进一步学习了面向对象思想的SOLID原则,从五个方面规范自己的架构设计以及具体写的程序。

    第三单元:

    本单元学习了契约式编程,学的是JML规格,我觉得这单元主要是考察算法知识吧,理解读懂jml规格并不困难,重要的是实现,特别是还要考虑选取算法的时间复杂度。通过这单元的学习主要是复习了一下数据结构的知识吧,顺带学习了几个算法。

    第四单元:

    第四单元我觉得主要是通过编程理解uml的设计吧,更像是面向对象的应用。通过编写主要函数,理解uml内部机理。

    三、总结自己在四个单元中测试理解与实践的演进

    第一单元:

    第一单元的测试主要是学着随机生成了一些数据,然后和同学对拍。测试的效果还算可以,但是强测出现的一些边缘数据确实不好构造。一开始觉得作业写完了就完了,测试没有放在心上。但是研讨课上老师说测试也是当前工业界软件项目的一个重要阶段,和开发相比一样重要。再加上不经测试强测和互测出现的bug,后面开始重视测试了。

    第二单元:

    前两次作业由于构思和重构没时间自己测试,第三次作业继承了第二次作业的架构,花的时间比较少,所以打算自己构造一个评测机,最后也只是建了一般,大概完成了定时输入吧,顺便学习了一下python。测试的效果还算不错。

    第三单元:

    第三单元学习使用了JUnit,但是使用的数据量不是特别大,导致没测出一些深层次的bug,还有性能问题不太好测。第二次作业就因为性能问题出现了超时的现象。

    第四单元:

    第四单元的测试主要是自己构造了一些复杂的、边缘的uml图,然后人工判断有没有出错。由于函数比较简单,测试也没有构造大量数据。但是还是在强测中出现了一些dfs死循环的问题。

    四、总结自己的课程收获

    转眼一学期的oo课就结束了,我还记得做第一单元的时候,看到往年学长总结oo的博客,当时还想着:哇,还有这么多困难要克服啊,感觉好难啊。但当自己一步一个脚印地走过来之后,回过头去看当时认为不可逾越的困难也不过如此。我想这就是一个不断战胜自己的过程吧,总是要经历一些苦难才能让自己蜕变一点,再上一个台阶,然后再战胜,再上。这就是一个人不断进步的过程,我也很开心想到那些困难自己没有放弃,还是选择相信自己“别人都做到了,我也一定可以”。

    这学期oo课学习了面向对象的思想,学习了java的使用。我认为这些都是很重要的,但从长远来看,更总要的是OO课像计组一样有一次给了我挑战,然后我克服了,培养了我勇于克服困难的信心是更重要的事。我常常想,外面培训机构几个月就能速成java,我们作为计算机科班专业的学生和他们比到底有什么优势。我想虽然技术上可能差不多,甚至他们几个月学到的会更多,但是思想上的不同,对自己的定位不同,以及对计算机、对语言的理解的深度是主要的差异。我常常提醒自己,我学的专业是计算机科学与技术,既要有科学精神,又要有过硬的技术。未来路很长,oo也只是开始。

    五、立足于自己的体会给课程提三个具体改进建议

    1、对实验结果公开,并且完成后对每次实验进行讲解,这学期的实验课感觉就是临时给你点资料,自学后做点题,而且自己做的对不对也不知道,没有太大的收获。OO的作业机制建设的很不错了,希望在实验这里再完善一下。

    2、JML单元没有讲清楚作业的重点,单纯的使用jml语言描述问题体验也不好,希望这里能够改进。

    3、oo预习作业一开始也是让自己摸索,希望以后的oo预习课能够重点讲解一下java语言的基础知识,后面学习起来会更得心应手。

    六、谈一谈线上学习oo课程的体会

    我觉得这学期线上课程中OO算是体验最好的一门了,因为重在动手,每次作业也都留有足够的时间,所以感觉还是OO的学习体验最好吧,其他课改成线上后确实少了约束,自己学习也不认真。学期刚开始的时候就听传闻说多少学生为了OO课熬夜,自己在做前两个单元的时候,确实有几次作业感觉挺吃力的,但还不至于到崩溃的地步。在计算机学院学习,一个好处就是让自己抗压能力越来越强了。虽然这学期面向对象的学习结束了,但是对我们来说,这也只是个开始,未来我们要解决的问题要比这些作业要复杂千倍万倍,但是实力是长年累月慢慢培养的,自信又是实力支撑的,学习的脚步永远不会停止,唯有热爱才能在一个领域深耕,加油,勇士。

  • 相关阅读:
    防止特殊html字符的问题(xxs攻击)方法
    asp.net 服务器Button控件使用(onclick和onclientclick使用)
    Asp:Button控件onclick事件无刷新页面提示消息
    动态添加Marquee标签,并动态赋值与属性
    asp.net 前台通过Eval()绑定动态显示样式
    asp.net 中json字符串转换
    近况
    C# fixed语句固定变量详解
    fixed说明
    Net架构必备工具列表
  • 原文地址:https://www.cnblogs.com/socorpiowz/p/13141169.html
Copyright © 2011-2022 走看看