Table of Contents generated with DocToc
任务:
- 总结本单元作业的架构设计
- 总结自己在四个单元中架构设计及OO方法理解的演进
- 总结自己在四个单元中测试理解与实践的演进
- 总结自己的课程收获
- 立足于自己的体会给课程提三个具体改进建议
架构设计
总结本单元作业的架构设计
首先评价以下自己的架构设计——非常丑,有一个类快700行。
再丑的架构也是自己写出来的。
第一次作业不懂事,不知道后面还有顺序图和状态图的部分,架构如下:
MyUmlInteraction
|- MyClass
|- MyOperation
|- MyInterface
后来将类图、状态图和顺序图剥离出来,架构如下:
MyUmlInteraction
|- ClassInteraction
| |- MyClass
| |- MyOperation
| |- MyInterface
|
|- SequenceInteraction
| |- MySequence
|
|- StateInteraction
|- MyStateMachine
从小往大的说,MyOperation
和MyInterface
封装了UmlOperation
和UmlInterface
,然后MyClass
就表示一个“类”,ClassInteraction
保存了所有的类及其关系。
MySequence
是一整个顺序图的抽象,MyStateMachine
是一整个状态图的抽象。
SequenceInteraction
和StateInteraction
分别保存了所有的顺序图和状态图。
XXXInteraction
内实现了各个检查和查询的接口。
架构设计及OO方法理解
总结自己在四个单元中架构设计及OO方法理解的演进
学到了第四单元,了解了一些设计上的规则后,我才知道,自己曾经写出过那么拉废不堪的代码和架构。
现在来看OO,我觉得,就是抽象出了“类”和“关系”两大实体,作业和上机,就是在帮助我们掌握抽象出“类”以及维护好关系上。
第一单元,表达式与求导,我较早地使用了OO的思想,将各个factor封装成相应的类,从第一次作业到第二次作业没有推倒重来,但是架构上,写出了关系上相互依赖的两个类,维护非常困难。
第二单元,多线程模拟电梯,除了几天速成多线程外,重点学习了线程之间的交互。也就是说,维护好线程之间的关系,既要高效,也要避免死锁。
第三单元,看到了各式各样的JML,我体会到了设计架构时,那种自然语言表达上的艰辛,以及将JML翻译成人话时痛苦。
第四单元,UML的解析。依旧是被课程组下发的官方包震惊到的一次,官方包里琳琅满目的类,有条不紊的设计,让我大开眼界。借用李安导演一句话,“我虽然看不懂,但是大受震撼“。类、异常、解析器,还有很多看不懂的东西,我觉得这就是一个项目应该有的架构,一家人整整齐齐。
测试理解与实践
总结自己在四个单元中测试理解与实践的演进
我在上OO课前,对测试的理解就是,用正常数据、边缘数据和异常数据去测试自己的项目,对输出进行检查。
学习了OO后,我才知道,自己的看法还是太单薄了。
如果测试的行为有等级,我想可以分成三层,
第一层,手动构造样例。比如第一单元写完以后,手动输入一些表达式;
第二层,对拍。实现了机械化的输入,提高了效率;
第三层,使用JUnit,将测试模块化。
在实践上,第一单元和第二单元我都只做到了第一层,到了第三单元和第四单元,在同学的帮助下,使用对拍机。很可惜,我只做到了手动构造样例和对拍,并没有涉足JUnit使用。
课程收获
总结自己的课程收获
- 收获了OO的知识,做好架构,组织整个工程结构的能力;
- 收获了测试的方法,对拍机给我留下了深刻的印象;
- 收获了友谊。
改进建议
立足于自己的体会给课程提三个具体改进建议
实话实说,我上课就没怎么听过,每周的OO课,要么在看OS,要么在做离散作业。
我记得听过一节JML,后来发现课上老师默认我会JML语法,以及课的内容对我完成homework没有大的帮助,我就听地更少了。
说到具体的建议,我有一个,有一次上机,我在最后5分钟左右提交了一次,我没做完,只是想保存下进度,然后,做完了,发现再也交不上了。。。。
要是在倒数5分钟提交的时候,系统弹出一个对话框,警告我这是最后一次提交的机会,那该多好。
第二个建议,本次博客要求“三个建议”太多了,少一点。
总结
OO这门课,让我见识到了北航课程组实力的强劲,比同校的其他课、其他学校的同样的课,都要强不少。
指导书、官方包、测评机、互测环节,很强。