302
社区成员
本单元的任务是设计一个图书管理系统,模拟一个图书馆的图书借还、预约服务,在两次迭代中还增加了漂流角和信用积分体系。
与前面三个单元的内容相比,本单元最显著的变化是更开放的题目描述和更简单的实现难度。
本单元主要考察基于UML的正向建模能力。为了避免模糊的需求导致我们写出难以维护的代码,有时候我们需要在开发时先建立整体架构,遵循需求分析-系统设计-UML建模-代码实现的设计流程。
三次作业的实现内容分别如下:
本单元的内容比较简单,相信一张图足以说明架构设计的全部细节。
关于代码设计和UML模型设计之间的追踪关系,在第一次作业中UML建模起到的作用比较明显,而后两次增量开发的内容实在是比较少。第二次作业只增加了两个类,第三次作业更是一个类也没有增加,体现在UML上就是增加的内容有限,也许更大规模的增量开发能更好地体现出正向建模的优势。
UML状态图和顺序图在第一次作业完成,代码框架基本完成后才制作,属于先射箭后画靶,应该叫反向建模。
应该说在每个单元中都有演进,但各不相关,第一单元和第四单元的关系也许大一点儿。
“第一单元的主题是表达式解析,从中我学会了层次化设计的思想。”
“第二单元的主题是电梯调度,从中我学会了多线程程序设计的基本原理。”
“第三单元的主题是社交网络模拟,从中我学会了JML契约式设计。”
“第四单元的主题是图书管理系统,从中我学会了UML正向建模。”
学习JML对理解层次化设计究竟有多大帮助?可能你会说它们“是共通的”,那就是了。
对于互测:随机生成数据,生成大规模数据,手搓极端条件和边界条件数据
第三单元涉及测试的部分较多,让我对测试有了更深的理解:
就是第一小段里那四个“从中我学会了”的内容,加上“锻炼我们的编码能力,培养我们分析问题和自主解决问题的能力”。
不过说是面向对象,其实我觉得本门课真正围绕“面向对象”这一主题的内容甚至没有OOPre中多,我以为会学习一些设计模式之类的东西。
总之,“面向对象设计与构造”结束了,愿Java 1.8与你同在。