BUAA-OO-2023 第四单元总结

杨承钊-21373472 学生 2023-06-20 18:59:33

 

单元回顾

本单元重点是正向建模与开发,课程组旨在教会我们先做设计,再做实现的习惯,同时引入了通用建模语言UML。经过三次作业的练习,我确实加深了先做设计再做实现的印象,也更加熟悉了UML框架,但客观上而言我认为今年课程的第四单元整体体验并不佳。

本单元训练内容在一个迭代开发的图书管理系统上进行,第一次作业的整体需求还较为清晰,但第二次作业的迭代上我认为出题层面上是有一定问题的,对于细枝末节的要求有些过于繁琐了,以至于直接带来两个问题:1.指导书很难将需求描述清楚,以致讨论区答疑帖楼层的暴增; 2.在设计上也体现不出其意义,比如对输出顺序的各种要求,十分繁琐同时也很难体现于设计层面中,且由于过多的细节要求分散精力,反而让人无法集中于架构层次的设计上。第三次作业的话,相比之下迭代又显得过于简单,就不过多评价了。

 

架构设计

第一次作业中由于只有一个图书馆,于是广泛应用了单例模式建模,提供了很多全局访问点,所以相对来说图中的关系箭头会很少;同时也将一些类之间相似的行为抽象为接口,比如自助机和借还台都可借还,就抽象出一个Registerable,后勤处、自助机和借还台都可以被整理,就抽象出一个Collectible

 

第二、三次作业差异不大,由于加入了校际借阅,第一次的单例模式应用范围大大减少,虽然需要很繁杂,我还是尽量按着高内聚,低耦合的原则设计,设计了一个超集Library,承担一个接口层的任务,其他部门之间的通信都需要经过Library提供的方法,而Library本身几乎不进行任何实际业务上的处理,只负责把对应的数据经过一定处理发给对应的部门,从而很好的降低了部门间的耦合度。

 

在追踪关系上,一遍写过去是很难保证代码设计和UML模型设计有很好的一致性的,很多想法都是写着写着才觉得可能那样处理更好,于是又返回去改UML设计图,归根到底还是设计经验不足造成的。

本学期架构设计思维的演进

表达式单元

刚刚接触面向对象课程,设计层面经验不足且没有先做设计再实现的意识,草草开始,最后这一单元迭代起来很痛苦,也出了不少bug,感觉是成绩最不理想的一个单元

多线程单元

开始有意识的去做一些设计,整体效果还不错

JML单元

本单元强化设计与实现的分离思想,从课程组下发的框架代码中学习了设计经验

UML单元

比较系统的练习了架构设计,确实感受到经过一学期的学习架构设计能力的提高

测试

第一、二、四单元基本都直接应用的讨论区同学发布的评测机

第三单元自己写了评测机

课程收获

学习了递归下降法和多线程编程基础,学习了很多面向对象的思维模式,最重要的是认识到了设计的重要性。

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

444

社区成员

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

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