BUAA-OO-四单元阶段总结 及 结课总结

李首墨-22371327 学生 2024-06-10 23:31:07

总结本单元所实践的正向建模与开发

正向建模是一种自顶向下的方法,从全局角度出发,逐步细化到具体的功能和实现细节

​ 我们在写代码的过程中总是习惯于根据任务直接完成代码,代码的数据结构与编排很大程度上依赖于编写时的感觉,这在学校任务代码量较小的情况下可能不会出现大的问题,但是当任务的代码量与编写复杂度上升,个人无法负责全部的任务时,直接编写显然是不够可靠与不够团队的,这时正向建模就是无法避免且必要的步骤了,本次Unit4的任务虽然没有如此高的复杂度与代码量(如果真有,会死的)但是要求我们依照同样的正向建模与开发的过程来锻炼对应的能力。

​ 而本单元主要要求我们熟练使用StarUML工具来建模与辅助编程。

类图:

img

顺序图:

img

状态图:

img

总结本单元作业的架构设计,并对比分析最终的代码设计和UML模型设计之间的追踪关系

类图设计

img

​ 本次任务要求并不复杂,三次作业都是增量式开发,在构建时按照实际图书馆的功能进行设计。

​ 以最后一次作业为例,程序由Main进入,Controller类为工具类,提供各项方法操作的具体实现,剩下的BorrowOfficeReservationOfficeReservationMessage 为预约记录信息组成的二元组 便于操作)、CornerBookShelf则对应借书处、预约处、漂流角、书架的图书馆组成(均为单例实现),剩下的StudentListStudent的记录名册,Student为进行操作的主体(LibraryBookId 为操作的客体)其中记录了拥有的书籍与借出时间等信息。

总结自己在四个单元中架构设计思维的演进

第一单元:

​ 该单元是利用递归下降进行表达式分析。在该部分对面向对象的概念尚不清楚,完全是面向的过程的编程方法,该部分的作业内容难度适中,由于没有良好的建构,中途还经历了完全重构。

第二单元:

​ 该单元进入多线程任务,第一次作业时仍旧采用面向过程的写法,但是在 1->2 的迭代过程中由于糟糕的构造与多线程复杂的锁的设计,导致增量开发举步维艰,此时开始深入了解面向对象的思想,将方法进行规范,进行较为详细的功能划分,可以说第二单元作业是OO思想的启蒙处。

第三单元:

​ 第三单元要求我们通过给出的JML理解规格要求,由于架构设计已经给出,整体上完成的十分轻松,但是却被复杂度优化的要求扣了不少粉分数,可以说是最糟糕的一个单元。

第四单元:

​ 该单元要求我们仿真实现一个图书馆,学习 UML 图辅助正向建模的设计模式。在这个过程中,我们真正了解到了针对需求完成的大型工程的一整个具体的流程该是什么样。在架构设计方向上,有了较为具体的实例进行仿照,可以熟练使用面向对象的思想设计架构,同时考虑需求的可能的变化,设计架构以实现迭代开发,降低重构风险,同时也考虑到了维护和 debug 方面的需求,真正从全局角度进行了一次架构设计,这一次的任务完成最为顺利与优秀,体现的面向对象编程的特点。

总结自己在四个单元中测试思维的演进

​ 在几个单元的测试中,从一开始的手搓较少量的数据,加入较为极限的边缘数据,到使用Junit+数据构造器进行测试,在最后到仿照大佬、学长使用代码对拍功能,能够进行较为大量的数据测试。

总结自己的课程收获

​ 回顾四个单元的学习,漫长而充实,这无疑是我在大二下学习生活中投入时间最多的科目,从理解面向对象的设计思路到实现多线程任务(甚至和OS还有联动),再到了解JML的规格设计,最后步入未来可能参与到的复杂工程的开发过程,一路走来不仅收获了理论知识还丰富了debug(bushi)与 理解要求进行开发的初步经验,相信这门课程的体验与知识会支持着我们走向广阔前程。

最后很感谢一个学期以来 尽职尽责的老师活跃又专业的可爱助教优秀慷慨的同级大佬 的辛苦付出,也希望面向对象课程能够越办越好。

最后的一点意见

​ 前面也稍微提到过一点,Unit3的理论学习侧重在JML的编写与理解,但是实际上在实现代码时考验的只有阅读 JML 的能力,开发也只是填空写法,而且对于实现性能有着不小的要求,这部分性能要求由于运行机器差异无法在指导书上更具体的说明导致实现时难以判断何种程度的优化是合适的,即时时在担心是否需要进行进一步的代码优化。

...全文
76 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

301

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧