OO第四单元博客作业

第四单元博客作业

  1. 架构设计总结

    1. 第一次作业:UML类图的构建

      初始化时,用HashMap的数据结构将所有UmlElement储存起来,等待构造完成后再调用Init()方法构造所需数据结构,用HashMap>的嵌套结构将UML_CLASSUML_OPREATION等分别建立图使其关联起来,同样用HashMap>的嵌套结构构建继承、实现、关联的关系图。通过调用getChildSet(HashMap> Map, String elementId)方法来访问某一个UmlElement的相关元素。特别注意getChildSet方法实现时,对空集的处理,以免产生NullPointerException

    2. 第二次作业:UML顺序图和状态图的构建

      方法与第一次作业基本一致,新增了与顺序图和状态图相关的HashMap>的嵌套结构。

    3. 第三次作业:对模型进行有效性检查

      本次作业是对第一二次作业所设计的数据结构的运用,特别注意存在类型为UML_ATTRIBUTE的元素不属于类图,因此name可以为null,这会影响R005的判断。

  2. 四个单元架构设计总结以及对OO方法理解的演进

    1. 架构设计总结

      第一单元刚开始时我将大部分的方法都放在了主类中,后来随着作业的进行逐渐将这些方法和数据按功能分到不同的类中。第二单元的作业主要使用到了生产者消费者模式,架构为电梯类和调度电梯的调度器类,但是由于对电梯和调度器之间的交互设计不合理出现了死锁的问题。第三次作业的架构直接按照JML来进行设计。

    2. OO方法
      第一单元我对OO方法的理解比较浅,对表达式的求导主要是通过面向过程的方法来进行的。后来增加了三角函数类和其他函数类时我才逐渐认识了通过类这种结构来封装、处理和引用数据,以及通过实现与继承的方法来使设计更加灵活。第二次作业我对不同对象之间交互的方式有了更深的理解,尤其是在多线程模式下,如何进行同步并且避免死锁。第三单元的JML语言让我更加认识到了OO中封装的思想,我所设计的方法和类,只要满足了各种约束,就不用对具体的实现方式进行限制。在第四单元中通过UML图,我更加全面地理解了OO的整个设计流程。

  3. 测试理解与实践地演进

    最开始我使用的测试方法是理解作业的需求之后,手动设计各种情况下的数据,但是这样做的效率非常的低,并且无法保证进行了充分的测试。后来我
    开始尝试使用手写的评测机来自动生成样例并进行测试,这样的话可以使用大规模的数据进行测试。但是这种方法不能保证对某些极端情况进行了测试,也同样无法保证测试能够全面覆盖。于是我综合使用了前两种方法进行测试。第三单元以后,我接触到了Junit测试工具,Junit可以保证第三、四单元作业中大量的方法全都得到了测试。

  4. 课程收获

    1. 对Java语言和面向对象方法有了更加深入的理解并且能够更加熟练地运用。
    2. 了解了产品开发的全过程,锻炼了自己测试程序的能力。
    3. 培养了较为强大的心理素质
  5. 改进建议

    1. 希望前两个单元在推进过程中能够提供更多的例程,便于对OO以及多线程设计有正确的理解
    2. 在预习和第一二单元中开始使用JML语言,并且对架构设计做出一些提示,可能会降低一些课程难度
    3. 可以写一些文章对Java语言内部实现/自动化测试的实现等等进行介绍
  6. 线上学习OO课程的体会

    ​ 极大地锻炼了我独立思考解决问题的能力,但是对于像我这种的拖延症患者相当不友好……

你可能感兴趣的:(OO第四单元博客作业)