关于“OO第四单元总结”这件事

22371207石伊聪 学生 2024-06-17 17:56:22

单元总结

本单元的任务是设计一个图书管理系统,模拟一个图书馆的图书借还、预约服务,在两次迭代中还增加了漂流角和信用积分体系。

与前面三个单元的内容相比,本单元最显著的变化是更开放的题目描述和更简单的实现难度。

本单元主要考察基于UML的正向建模能力。为了避免模糊的需求导致我们写出难以维护的代码,有时候我们需要在开发时先建立整体架构,遵循需求分析-系统设计-UML建模-代码实现的设计流程。

三次作业的实现内容分别如下:

  1. 第一次作业:图书借还、预约与领取、查询、图书整理、UML类图
  2. 第二次作业:续借和节约期限、图书漂流、UML状态图
  3. 第三次作业:信用积分、UML顺序图

架构设计

img

本单元的内容比较简单,相信一张图足以说明架构设计的全部细节。

关于代码设计和UML模型设计之间的追踪关系,在第一次作业中UML建模起到的作用比较明显,而后两次增量开发的内容实在是比较少。第二次作业只增加了两个类,第三次作业更是一个类也没有增加,体现在UML上就是增加的内容有限,也许更大规模的增量开发能更好地体现出正向建模的优势。

UML状态图和顺序图在第一次作业完成,代码框架基本完成后才制作,属于先射箭后画靶,应该叫反向建模。

课程收获

在四个单元中架构设计思维的演进

应该说在每个单元中都有演进,但各不相关,第一单元和第四单元的关系也许大一点儿。

“第一单元的主题是表达式解析,从中我学会了层次化设计的思想。”

“第二单元的主题是电梯调度,从中我学会了多线程程序设计的基本原理。”

“第三单元的主题是社交网络模拟,从中我学会了JML契约式设计。”

“第四单元的主题是图书管理系统,从中我学会了UML正向建模。”

学习JML对理解层次化设计究竟有多大帮助?可能你会说它们“是共通的”,那就是了。

在四个单元中测试思维的演进

对于互测:随机生成数据,生成大规模数据,手搓极端条件和边界条件数据

第三单元涉及测试的部分较多,让我对测试有了更深的理解:

img

(还是)课程收获

就是第一小段里那四个“从中我学会了”的内容,加上“锻炼我们的编码能力,培养我们分析问题和自主解决问题的能力”。

不过说是面向对象,其实我觉得本门课真正围绕“面向对象”这一主题的内容甚至没有OOPre中多,我以为会学习一些设计模式之类的东西。

总之,“面向对象设计与构造”结束了,愿Java 1.8与你同在。

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

302

社区成员

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

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