BUAA-OO-第四单元总结暨全课程总结

全伟业-22371393 学生 2024-06-14 17:37:40

面向对象课程第四单元总结暨全课程总结

前言

最后一个单元的oo迭代从代码角度开发来说相较于前三个单元更为简单,但要求画UML类图、状态图以及顺序图。本单元无互测。
//终于oo也要结束了

第四单元总结

最后版本迭代的UML:

img


img

第四单元架构设计

如类图中所示:
对于一切书籍的调度和分配设立了统一的最高单位:Library
在Library类中设置了许多参数作为容器,起到各个部门的作用:

  • BorrowAndReturn:借还处,模拟借还处的行为,处理借还的书籍和借阅失败的书籍
  • Bookshelf:书架
  • DriftCorner:图书漂流角
  • ReservationDesk:预约处,这里涉及到储存为某用户预约的书的相关调用
    对于能够调度书的单位我们还设立了:
  • User:用户,代表申请借还和预约的学生
  • BookMes:里面储存着书籍的信息,包括除了书籍本身还有借阅时间,根据不同的实例化方式,还有非正式书籍的捐赠者等信息,便于信息的流动
    在历次的迭代之中,UML也随之变化。架构最初的建立由UML指导,但之后的改动会反映在UML上。此时也可以分辨出修改的合理性。

架构设计思维的演进

U1的设计是递归下降,尽管有oopre的基础,但是第一单元的整体设计依然是较为混乱,想到哪写到哪,很多地方在刚写完都出现了很多的漏洞,互相之间耦合程度过高,相互调用导致CTLE,互测也被测出了bug
U2是电梯的多线程,刚开始对于死锁,线程安全等问题理解不够深刻,经常出现bug,但在架构设计上比U1成熟了很多
U3是根据JML设计来在合理的时间复杂度内完成自己的实现,由于这个是根据JML来辅导的,所以从官方给的架构设计上学到了很多,更加加深了对高内聚低耦合的感念的理解,这里应该是一次对架构设计思路的一次蜕变个人认为
U4更像是对个人架构设计能力的一个小测验,本次是没有任何提示的完全按照自己的思路去设计架构,并且是先画出UML,根据自己的UML来写代码,再在过程中逐步修改更新自己的UML类图等,第二次由于更新了官方包和新的续借等要求,所以对于白天和黑夜的整理要相对于第一次有所变化,因为首次实现是成功做到了高内聚低耦合(个人认为),因此在迭代的过程中非常顺利,只需要小小改动一下操作的位置。

测试思维的演进

最开始只是靠特殊数据和自己编造数据来进行手动测试,但也就是U1的第一次作业,在后来的学习中就是利用编写的评测机进行大量数据的强测去找bug,虽然但是,由于构造的伪随机性,一些比较特殊的极限样例是很难构造的,需要在提供数据时特殊考虑加入其中(并用来互测)。

课程收获

相较于oopre,oo课程的代码量更大任务更多,但每次成功完成时总有一种喜悦感,自己亲手参与架构设计尽管在任务量和debug上存在难度,但整体过程还是并不枯燥的。在本学期课程的学习中,自己的代码编写、架构设计和调试能力都有了大幅的提高,大量时间的投入还是收获满满的。

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

301

社区成员

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

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