BUAA-OO-第四单元博客

杨辛晨-21373366 学生 2023-06-20 18:43:19

本单元所实践的正向建模

本单元要求我们实现校际图书借阅系统,锻炼同学们对程序架构的设计和抽象能力,以及加强对 UML 图的绘制训练

本单元实践的正向建模与开发顺序为:先建立UML类图然后根据类图实现代码。
在本单元三次作业的设计中,我基本是先通过数据确定类,再确定了类之间大致的交互关系,然后通过代码实现后再完善类图。后面两次迭代则是在前一次类图的基础上进行补充,最后实现代码。然后功能测试通过后完成课程组要求的状态图与顺序图。

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

本单元的类图架构为下图所示:

hw13

img

实现了Library类控制图书借阅,Book存储图书信息,并根据题目描述功能设置相应的特殊的管理员,都继承父类Librarian。

hw14

img

新增了MyControl类控制校际借阅,将上次作业中Library部分功能抽象至MyControl类。

hw15

img

与hw14相比,只修改了容器的属性,并增加了Record类,用于作为借书的时间记录。

最终的代码设计均与UML类图模型一致。

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

在第一单元和第二单元中,虽然用心打磨了架构,但是在第二次作业中都经历了重构,一是对可能的迭代方向没有大致的把握,二则是代码的可拓展性还有待提高。

在第三单元jml中基本上就是根据规格实现代码,没有考虑架构。

幸运的是,在第四单元没有经历重构,一气呵成地完成了三次作业。

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

在第一单元中第1,3次作业看yjkgg的博客自己尝试写了测评机,并得到了不错的成绩。第2次作业的时候懒了没测,通过中测了就以为没啥问题了,结果中测没过。

第二单元难度较大,除了最后一次作业以外,过了中测就没进行测试,最后分数也不是很高。

第三单元开始洗心革面,写了测评机(第三单元的测试逻辑相对更简单),进行了大量的黑盒测试。

第四单元前两次作业用了课程群中同学分享的测试点进行黑盒测试,第三次作业因为改动较小,就没多做测试。

总结自己的课程收获

总的来说,这学期OO的体验是比较两极分化的。前半个学期(包括上学期先导课)中个人体验是比较好的,每次作业都能学到新的知识(递归下降法、架构的设计、多线程程序设计......),即使面对很难的任务,也能在指导书和理论课的引导下通过搜索引擎找到解决方法(这一点在先导课和多线程单元感受很深);同时感觉课程时间安排张弛有度,在督促我学习知识的同时也给予了很大的自由空间。完成任务不仅给我带来了面向对象知识上的收获,更提高了我面对复杂项目时化繁为简的抽象能力和对自己编写代码的测试能力,同时也磨练了面对ddl时的意志。

但是后半学期的学习中,在被大多数同学吐槽的jml和uml中个人体验有所下降。u3中拘泥于“规格与实现分离”,为实现同学之间的区分度导致算法的难度大大增加,与之匹配的是题目数据量与时间复杂度的限制并不严格,虽然最后一次作业中顺利通过了强测,但在截止日前确实对“最小环”有较多的考虑。同时u3的实验任务量大,上机时间短,很难完成任务;u4中指导书题面的表述零碎,模糊且有误导性,带来了痛苦的体验。

时光飞逝,我仿佛还记得大二上的自己虽然没抢到cpp还是跟着做先导课作业的样子,一转眼之间oo却已经结课了。总的来说,oo的体验是痛并快乐着的,在未来相当长的一段时间里,我都会回想起自己绞尽脑汁完成oo作业,debug的样子。

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

444

社区成员

发帖
与我相关
我的任务
社区描述
2023年北京航空航天大学《面向对象设计与构造》课程博客
java 高校 北京·海淀区
社区管理员
  • 被Taylor淹没的一条鱼
  • 0逝者如斯夫0
  • Mr.Lin30
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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