OO第四单元作业总结

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

1.第一次作业

  第一次作业要求我们对StarUML的UML类图进行解析,主要任务是实现课程组提供的接口,与上一单元JML的任务类似。

  这次作业我将输入的UmlElement重新组织,根据层次关系构造出自己的设计类(MyClass,MyOperation等),并在这些类中实

现要求实现的的接口方法。

类图:

2.第二次作业

  第二次作业是在第一次作业的基础上增加了对UML顺序图和UML状态图的解析,并能够支持几个基本规则的验证。

  类图部分不用修改,只需仿照类图建立流程图和状态图,并且这次作业进行了简化,有些UMLElement用不到。这次比较复杂的

地方在于查找后继状态以及R002和R003,我的实现方法是建立相应的图,然后用DFS等算法进行查找。

类图:

 

二、四个单元中构架设计及OO方法理解的演进

  第一单元是多项式求导,需要我们自己处理输入。基本的结构是将输入处理与求导处理分离,然后再将表达式拆分成项,因子等类

,在每个类中实现自己的求导方法。完成了这个单元后,我对面向对象方法有了基本的了解,就是将根据行为和数据抽象出类,再对类

进行管理和组合。

  第二单元是多线程电梯调度。这个单元的设计为将电梯和调度器进行分离,将每部电梯当做一个线程。调度器根据调度策略给不同

的电梯分配任务,而电梯实现开门、关门、上行、下行等方法,根据任务运行。这一单元我主要学习到了多线程编程,对架构设计的理

解也更加深刻。

  第三单元为JML规格设计。这单元学习了JML语言的语法、规格化设计的思想以及规格化测试。这单元的作业主要任务是让我们实

现官方接口,最终实现一个地铁查询系统,需要用到最短路等算法。这单元让我知道了架构设计也需要考虑数据结构。

  第四单元介绍了建模语言UML。这一单元与第三单元相似,依然是实现官方的接口。我的设计就是根据各个UMLElement构造出不

同的类,再在各个类里实现接口的方法。

  

三、四个单元中测试理解与实践的演进

  在第一单元中,我主要根据程序自己手动构造一些数据,但是多项式求导的情况还是太多了,这种测试的覆盖度完全不够。在后面

的三个单元中,手动构造数据都很困难,于是我尝试了使用自动构造数据以及对拍器,这样能保证程序的基本正确性,排除一些细节上

的BUG。

  在学完四个单元后,我深刻地体会到,为了保证程序的高质量,良好的架构设计和测试都是必不可少的。

四、课程收获

  学完这门课程收获还是挺多的。首先是学会并练习了java语言,每周几百行的编程作业,让我的代码能力得到了极大地提升。

  然后是面向对象的思想,从最开始只求实现功能的面向过程,到后面层次化的架构设计。我从阶梯式的作业中明白了面向对象在

代码可读性、扩展性等方面的优势。

  在这门课程我还学到了JML,StarUML等规格化设计和建模工具的使用,多线程编程以及最后两个单元用到的图论算法。

五、给课程的三个具体改进建议

  1建议前面的研讨课内容可以让优秀的同学结合自己的代码讲一讲设计,这样能让大家更快地理解面向对象思想。

  2.建议实验课后能提供一下答案,检验自己的理解有哪些不对的地方。

  3.最后两个单元的编程作业相似度有点高,建议可以调整一下最后一个单元的作业内容,通过其他方式理解UML。

  

posted @ 2019-06-23 14:17  17373263  阅读(125)  评论(0编辑  收藏  举报