oo第四单元总结

一、三次作业的架构设计

本单元的三次作业是对UML模型文件解析,主要是对类图、顺序图和状态图层次等状态的查询以及对UML模型间关系、图之间的关系和一致性的检查等。

第一次作业的主要是完成对UML图的各种属性查询。我的思路是对于类的关系进行建立一个类,然后对于新增添的类图通过一个更新的类来更新当前状态,以及增加了一个计算的类,对于类图和查询操作通过哈希来存储,主要难点是如何构建类图以及如何加快查询各个需求的速度。

第二次作业的主要是对UML图中状态图,顺序图的查询,大部分都沿用了第一次的代码,主要增加了专门用来存储状态图、顺序图的类,以及增加了对这两种图进行处理的类来便于检查操作。

第三此作业主要是增加了用来检查规则的类和方法,大部分沿用第二次作业的代码

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

1、第一单元

基本没有架构,每次都是按照要求重新写一遍代码,代码比较冗长甚至会超过500行,基本上是属于面向过程的写代码,在第一单元的作业中随着表达式与运算的复杂化,就必须开始对表达式设置一个专门的类,此外 对表达式运算的解析还涉及到递归处理,此单元作业主要是加深了对递归的理解与应用。

2、第二单元

第二单元主要是电梯多线程的调用,主要是由一部电梯到多部电梯的调度过程,在前面两次作业一步电梯的时候就只是涉及到一个调度器类和一个电梯类,不用关心对电梯任务的分配问题,主要是对电梯调度算法的优化,第三次作业的多电梯作业导致了重构,增加了主调度器类以及调度任务的分配,对于多线程的死锁问题和wait()以及notify()的应用加深了理解。

3、第三单元

本单元主要是根据jml的解释与需求来写代码,主要是对图的构建以及运算提出各方面的要求,如通过权值的变化来求最短路径问题,以及求最短路径的算法设计等。由于cpu时间的限制,也必须优化图的大小,以及如何处理图的构建与大部分查询指令的分离来缩短cpu时间。这一单元主要学习到JML能使得代码的每一部分功能变得十分清晰。

4、第四单元

第四单元也主要是将uml模型的信息通过图存储起来,然后按照所要求的功能进行设计和优化,主要学习到了对uml语言的理解与认识。

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

第一、二单元主要是自己构造数据,第一单元主要是表达式空格以及表达式的爆栈问题。第二单元主要是线程的死锁以及多电梯调度出现的不安全问题以及对电梯调度算法的优化以及一些极端条件的构造。 第三单元虽然要求Junit自动测试,但还是以自己构造查询以及对图的构建命令为主。主要是对图的大小以及查询计算等命令数目的上限以及时间进行观察和总结,第四单元主要是自己画mdj文件的一些边界情况来测试代码的正确性,在这个测试过程中感受到了代码的运行时间以及代码正确性都是十分重要的。

四、总结对课程的收获

会写了一些java代码,对于一些功能需求会开始学着去设计一些架构,对面向对象有了一定的了解,体会到面向对象对复杂功能需求解决的好处。对JML,UML语言有了一定认识与理解,对代码风格开始重视并变得开始有一点规范,体验到了代码风格的重要性。此外对自己代码的测试也十分重要,不然容易出现各种奇怪的问题,本课程也增加了对数据结构算法的要求,对数据结构以及一些简单的算法有了一些理解以及应用,总体来说收获还是很大的。

五、对课程的建议

1、对于理论课,希望能更符合作业的要求去讲解知识点,少一些拓展性内容,更好的发挥理论课的作用。

2、对于jml单元希望测试更偏重建模思想而非具体算法实现

3、希望多增加同学之间交流讨论作业以及课程的机会。

六、线上学习OO的感受

虽然本学期OO课是在线上进行的,对于个人很好的完成课程所布置的作业以及实验都增加了一定的难度,但是在助教和老师的努力付出下,我还是比较完整的完成了OO这一课程,学习课程需要有敢于登山的精神,线上学习更要严于律己,努力攀登。其他课程也是如此。

 

posted @ 2019-06-24 13:20  无名咸鱼  阅读(159)  评论(0)    收藏  举报