444
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
本单元重点是正向建模与开发,课程组旨在教会我们先做设计,再做实现的习惯,同时引入了通用建模语言UML。经过三次作业的练习,我确实加深了先做设计再做实现的印象,也更加熟悉了UML框架,但客观上而言我认为今年课程的第四单元整体体验并不佳。
本单元训练内容在一个迭代开发的图书管理系统上进行,第一次作业的整体需求还较为清晰,但第二次作业的迭代上我认为出题层面上是有一定问题的,对于细枝末节的要求有些过于繁琐了,以至于直接带来两个问题:1.指导书很难将需求描述清楚,以致讨论区答疑帖楼层的暴增; 2.在设计上也体现不出其意义,比如对输出顺序的各种要求,十分繁琐同时也很难体现于设计层面中,且由于过多的细节要求分散精力,反而让人无法集中于架构层次的设计上。第三次作业的话,相比之下迭代又显得过于简单,就不过多评价了。
第一次作业中由于只有一个图书馆,于是广泛应用了单例模式建模,提供了很多全局访问点,所以相对来说图中的关系箭头会很少;同时也将一些类之间相似的行为抽象为接口,比如自助机和借还台都可借还,就抽象出一个Registerable
,后勤处、自助机和借还台都可以被整理,就抽象出一个Collectible
第二、三次作业差异不大,由于加入了校际借阅,第一次的单例模式应用范围大大减少,虽然需要很繁杂,我还是尽量按着高内聚,低耦合的原则设计,设计了一个超集
Library
,承担一个接口层的任务,其他部门之间的通信都需要经过Library
提供的方法,而Library
本身几乎不进行任何实际业务上的处理,只负责把对应的数据经过一定处理发给对应的部门,从而很好的降低了部门间的耦合度。
在追踪关系上,一遍写过去是很难保证代码设计和UML模型设计有很好的一致性的,很多想法都是写着写着才觉得可能那样处理更好,于是又返回去改UML设计图,归根到底还是设计经验不足造成的。
刚刚接触面向对象课程,设计层面经验不足且没有先做设计再实现的意识,草草开始,最后这一单元迭代起来很痛苦,也出了不少bug,感觉是成绩最不理想的一个单元
开始有意识的去做一些设计,整体效果还不错
本单元强化设计与实现的分离思想,从课程组下发的框架代码中学习了设计经验
比较系统的练习了架构设计,确实感受到经过一学期的学习架构设计能力的提高
第一、二、四单元基本都直接应用的讨论区同学发布的评测机
第三单元自己写了评测机
学习了递归下降法和多线程编程基础,学习了很多面向对象的思维模式,最重要的是认识到了设计的重要性。