OO第四次博客作业

OO第四次博客作业

针对第四单元和本学期所学的内容,撰写博客:

(1)总结本单元两次作业的架构设计

第四单元的作业,是在已有的程序架构中补全代码,实现要求的功能。通过这样的任务,让我们学习UML有关知识。

  • 第一次作业:
    • 任务:实现一个UML类图解析器,可以通过输入各种指令来进行类图有关信息的查询。
    • 学习目标;为UML入门级的理解、UML类图的构成要素及其解析方法。
    • 我的思路:本次作业,已有的架构已经完成了对输入数据的处理,并将它们分类放入UmlClass, UmlInterface等类中。但是,这一个过程并不是完全展现给我们的,要求我们自己制作类图,并解析UML,阅读源代码来实现对程序的理解。然后,在此基础上,我们要对这一些类进行包装,实现查询、检查等功能。
    • 我的架构:
      • 建立MyClass等类,包装UmlClass等已有的类。例如,
        ,在MyClass中,包含UmlClass的指针,通过这样实现对UmlClass的操作,体现面向对象的封装性和抽象性。

    • 感想:
      • 这次作业,让原本对UML一知半解的我,有了更加深刻的理解。在对大规模,复杂系统进行建模方面,特别是在软件架构层次,UML体现出非常重要的作用。
  • 第二次作业:
    • 任务:在上次作业基础上,扩展解析器,使得能够支持对UML顺序图和UML状态图的解析,并能够支持几个基
      本规则的验证。
    • 学习目标;进一步UML类图、状态图和时序图的构成要素及其解析方法。
    • 我的思路:在有了上一次作业的基础上,我们已经驾轻就熟。首先阅读UML图解析出来的文件,了解每个类如UmlRegion有哪些属性,分别有什么作用。然后,分别建立层次结构进行包装。值得一提的是,本次作业的需要实现的类较多,所以需要更加层次化的建模。
    • 我的架构:
      • 这次代码更加具有封装性。

      • 学习已有代码的形式进行建模。
        ,继续体现面向对象的封装性和抽象性。

    • 感想:
      • 这次仍然有一定工作量,但是时间比较充裕,尤其是有之前的基础,顺利地完成了。

(2)总结自己在四个单元中架构设计及OO方法理解的演进

在四个单元中,面向对象的思想是逐步成型、循序渐进的。

OOP思想有三大要素:封装、继承和多态。

第一个单元的第一次作业,我只有一个Main类和一个Polynomial类。

可见此时尚未体现出OOP的思想,仍然是简陋的C语言化编程。
求导第二次作业,初步有了一些继承关系,但是仍然非常简陋。
而到了求导第三次作业,则有了很大进步。

可以看到,充分体现出封装、继承、多态的思想。算是OOP入门了。
在之后的电梯、Jml、Uml三个单元,都是对更加复杂的工程进行构建或修补。但是,无疑最重要的还是第一单元求导给我带来的收获最大。虽然在最开始的算法问题上出现了难关,但是解决了这个问题之后,我对OO的理解出现了巨大的跃升。有助教(或老师)评论说:“OO强调的是围绕数据来设计功能。每个类管理具体的数据,其功能也是围绕自己所管理的数据,而不是别的类所管理的数据。所以,很多类都有求导的功能。”确实,在完成了第一单元时,我已经充分体验到了这一点。之后的几个单元,都是锦上添花,熟悉OO的设计模式了。

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

在1~3单元中,找出同学们的Bug的方法都是使用自行编写评测机的方法。自动生产数据+评测对比,这样不仅使自己的bug减少,同时也使得找到其他人的bug的效率大大提升了。

(4)总结自己的课程收获

OO课程对我的帮助是巨大的。在上OO课程之前,我对复杂编程是一无所知的。只使用C语言进行简单编程,导致只能完成非常简单的任务,无法构建复杂的程序。在经过一个学期的OOP学习之后,我深刻了解到面向对象编程思想在编程中的重要作用。可以说,有了OOP思想,一口气上五楼(误)不费劲。在之后的学习和工作中,我有信心面对再大、再复杂的工程,也能够进行安全、有效的构建,对工程进行完美的管理。OOP使我们更简单的设计和维护程序,更好地分析、设计和理解。OOP万岁XD

(5)立足于自己的体会给课程提三个具体改进建议

  1. 实验课的时间和实验的时间在同一天,这样导致我们的学习非常仓促,经常是边做实验边学习。
  2. 在第三单元学习JML的时候,给出的例程使用JUnit跑不动,会出现一些Bug……希望能进行一些改进。
  3. 希望每次作业给出一些优秀代码,便于我们学习。
posted @ 2019-06-23 16:59  kidogucb  阅读(138)  评论(0编辑  收藏  举报