OO第四单元总结

一.框架设计

这三个单元就是要完成一个UML解析器。我的做法就是将类图,顺序图,状态图的解析过程分别处理。

第一次作业

  这次作业只需要处理对类图的解析。我的做法就是对UMLClass,UMLInterface等类做了封装,再根据元素之间的关系在包装好的类里面设置了一些容器。

第二次作业

  这次作业其实就是需要处理类图,顺序图,状态图三种图。我的做法是这三种图的处理分别处理。思路跟第一次作业一样。

第三次作业

  这次作业是对UML进行语法检查。我前两次作业的结构可以支撑我进行语法检查。所以就只是加了几个功能。

 

二、架构设计与OO方法

1.第一单元

  刚开始做第一单元的时候觉得比较麻烦,主要是对正则表达式的使用不太熟悉。不过这个问题只是在第一次作业困扰了我很久,后面两次作业就不是大问题了。这个单元就是选取了一个合适的对象之后对其进行分析,通过一个面向对象的方式来完成一个对复杂多项式求导的过程。我第一次作业保留了面向过程的习惯,而且迭代性差。到了第二次作业就进行了重构,并且为第三次作业留下了设计空间。这整个单元完成后自己也就适应了面向对象编程。

2.第二单元

  第二个单元是多线程的一个电梯调度模型。首先这个单元要熟悉一些多线程的知识,大多数的bug也是因为多线程处理有问题导致的。我是采用了生产消费者模式,创建了一个System类用来存储数据,每一个电梯都是单独的线程,电梯通过访问,改写System类的数据判断如何运行。

3.第三单元

  第三单元的整个框架都是给定的,只要读懂JML的细节完成相应的功能。个人感觉这个单元的重点在于算法的优化。

4.第四单元

  第四单元是关于UML的。这个单元的作业都是构建一个UML解析器。理解了UML类图,顺序图,状态图的构造之后,我是根据UML元素的层次关系对UML图中的元素进行了封装,并且设置了一些容器,比如class类里面会有operetion类和attribute类的容器。同时对UML顺序图,状态图,类图的解析我是独立处理的。这样构造以后第三次作业就不需要做大的修改,在原有的框架上就可以完成对语法的检查。

 

三、测试与实践

  前两个单元我会使用shell脚本与同学进行对拍,但可能是我写的构造函数不太好,我并没有测出所有的bug。后两个单元因为生成构造样例很麻烦我就没有进行自动测试了。不过第三单元我学会了使用Junit来进行测试,确实也在开始的时候发现了一些明显的错误。不过第三单元我都是因为算法被卡,这利用Junit肯定是测不出来的。

 

四、课程收获

  这门课教会我的东西还是比较多的。首先是面向对象的编程思维。其次这么多次的作业影响我最大的地方就是写代码的时候要注意迭代性和拓展性。同时整个课下来也让我更加注意命名规范,方法长度规范等等细节问题。我们在实验课上会学习一些设计模式,有些设计模式我还用在了作业里。还有就是像Junit等工具的使用和形式化验证的方法。

 

五、改进建议

  有的时候会感觉理论课与作业的内容关系不大。我个人觉得可以在理论课里面加一些对作业的指导。

  希望实验结果可以公布,不然都不知道自己学得怎么样。

  指导书可以在一些细节方面写清楚一点,或者用比较好的输入输出样例解释要完成的功能,很多时候讨论区都是在询问功能具体要求的问题

 

六、线上学习体会

  个人感觉作业这块线上做和在学校做应该区别不大。理论课因为可以重复听视频,所以有些时候学的还能比线下上课更仔细些。但是有一个不好的地方就是与同学老师的交流会变少。在学校的话我可能会经常跟同学进行讨论,但这个学期就只是在对指导书描述不明确这种问题才会进行讨论,更多的时候还是自己想。总的来说这个学期OO课程的学习我个人感觉还是比较好的,并没有因为呆在家里而产生很多问题。

posted @ 2020-06-17 18:24  dfghjksg  阅读(114)  评论(0编辑  收藏  举报