ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OO第四单元总结暨OO课程总结

2022-06-27 21:33:56  阅读:151  来源: 互联网

标签:OO ArrayList 作业 总结暨 private 课程 new final 单元


OO第四单元总结暨OO课程总结

一,第四单元架构

第一次作业

第一次作业是比较简单的,只需要分析类图即可。我的做法是在UserApi的构造方法中,先根据将不同类的UmlElement分开,分开之后,再根据题目的需要,进行操作。具体的划分如下如下:

    private final ArrayList<UmlAssociation> umlAssociations = new ArrayList<>();
    private final ArrayList<UmlAssociationEnd> umlAssociationEnds = new ArrayList<>();
    private final ArrayList<UmlAttribute> umlAttributes = new ArrayList<>();
    private final ArrayList<UmlClass> umlClasses = new ArrayList<>();
    private final ArrayList<UmlGeneralization> umlGeneralizations = new ArrayList<>();
    private final ArrayList<UmlInterface> umlInterfaces = new ArrayList<>();
    private final ArrayList<UmlInterfaceRealization> umlInterfaceRealizations = new ArrayList<>();
    private final ArrayList<UmlOperation> umlOperations = new ArrayList<>();
    private final ArrayList<UmlParameter> umlParameters = new ArrayList<>();

在第一次作业中,作业要求实现的几个方法都没有太难,这里就不再赘述。

第二次作业

在第二次作业中,增加了对顺序图和状态图管理的需要。对于这些不同图,如果还使用第一次的方法,十分不便于管理。于是重构了一下代码架构,改为利用树形结构去存储UML图的各种元素。拿状态图距离,其结构为:UmlStateMachine--UmlRegion--UmlEvent,UmlTranslation,UmlStates...。同时,本单元的所有UmlElement都具有parentId这一属性,这使得构架树形结构十分轻松自然。
同时,本次作业中要求关键状态,这就需要检查图的连通性,我采用的是DFS算法,每次构建两个连通图,查询两次进行对比。

第三次作业

第三次作业可以继续沿用第二次作业的架构,只要将所有要实现的方法分配给对应的图就可以。同时对于查询循环继承以及重复继承,可以继续沿用DFS算法,因此相对于第二次作业,在实现上并没有特别大的困难。

二,架构思维与OO方法理解的演进

第一单元

在第一单元中,我对OO的方法的理解并没有特别大的提升。因为第一单元我偷懒,使用了预解析模式。在这个模式的帮助下,作业本身对面向对象的理解与运用要求并不是很高(甚至省去了解析函数)。所以在第一单元,我基本上还是沿用了数据结构的思路。但是第一单元的第二次作业,给我的印象比较深刻。因为在第二次作业中,虽然我使用的是预解析模式,但是还是需要利用递归的想法来进行解析式的化简。所以在那一次的作业上,我也第一次逐渐体会到了面向对象的含义。

第二单元

第二单元是我收获比较多的一个单元。在这个单元开始时,我对多线程毫无了解。甚至在第一次作业发布三天后,我苦思冥想三天,还是不能想明白怎么在实现消费——生产者模式,保证线程安全以及不会出现轮询。但是实验的代码给了我很大的启发。在实验后,我逐渐对实现多线程有了初步的想法。在这一单元结束后,我已经能够根据要求自主实现多线程的工作,同时保证线程安全以及线程防止轮询。同时,在这一单元中,因为有从单部电梯到多部电梯的改进要求,所以我在实现的过程中,对面向对象的对象属性有了更好的了解。

第三单元

这一单元是根据JML的规范化格式语言去完成代码。经过了前两单元的训练,对我来说实现这三次作业已经不在话下。这一单元主要的收获是对如何阅读JML语言有了一定的练习,同时在每次作业中,都会有一个关于图的算法,我也借此提升了我的算法能力。

第四单元

第四单元是要求解析UML图。我个人认为上手比较难,因为先要看懂给的数据是什么意思,以及先要大致了解官方包的一些结构和设计。但是上手之后和第三单元差别不大。不过这一单元训练了树状的结构架构,对架构优化思想的提升很有帮助。

三,测试理解与实践演进

第一单元

在这一单元中我还是使用手动构建测试数据,针对临界情况手动构造数据。由于式子经常很馋,所以构造起来比较麻烦。

第二单元

在这一单元中,输入输出量巨大,在这种情况下,我第一尝试构建自动评测。但是还是有一定局限性,只能随机生成数据,并且只能进行简单的测试工作,在具体问题上,有时还需要使用肉眼观察法。

第三单元

利用Junit进行测试,测试覆盖量大,保证程序正确性。

第四单元

首次尝试将画UML图与测试进行联系,在画UML图的时候,比较考验测试能力。

四,课程收获

  • 极大提升编程能力,每四周产出1-2k行代码。
  • 提升测试能力,学会编写简单的测试程序
  • 学会许多工具,包括git,markdown,starUml等
  • 深刻理解了对象属性
  • 对程序的规范化要求有了一定的认识

五,改进建议

1.建议分配一点分数给寒假预习,增加大家对预习的重视程度
2.建议压缩第三单元时间,分一周时间给第二单元。我觉得没有必要追究每个单元时间上的平等。第二单元的难度就是高于第三单元的。并且,第二单元第一次作业难度过高,因为要在实现生产--消费者模式的同时实现电梯调度算法。我觉得这两件事应该拆开来,各占一周,这样的梯度更加合适。至于这一周的时间,我觉得要从第三单元抽取,因为第三单元本意是熟悉JML语言,但是这三次作业,每次作业对JML语言理解能力的要求并没有特别大的差别,只是在图的算法上有一定差别,并没有明显的梯度,不适合分开三次,所以建议压缩成两次,把时间分给第三单元。
3.建议第四单元采用更多的题目形式。我认为第四单元本意是熟悉Uml图的绘制以及熟悉用Uml图分析程序的方法。但是却溜了三次代码作业,我认为这不太合理。虽然有时博客作业会要求绘制类图,顺序等,但是都没有经过严格的评测,很难保证正确性,甚至在这种环境下,对于Uml严谨性的认识也会有所缺失。所以我建议增加第四单元评测形式,比如画严格符合代码的Uml图等

标签:OO,ArrayList,作业,总结暨,private,课程,new,final,单元
来源: https://www.cnblogs.com/yangxiao20373877/p/16416797.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有