OO第四单元单元总结

余国帆-21373253 学生 2023-06-20 18:55:18

OO第四单元单元总结

(一)正向建模与开发

首先我们明确正向建模的定义:先设计并构建抽象模型,再依据抽象模型建立实体。在程序设计方面即指先建立程序整体的描述图,也就是我们这一个单元的训练当中所接触并训练使用到的UML图了。

在接触过真实的大项目之后,我个人深刻地体会到,正向建模在工程中是一件很常见且必要的事情。对于动辄上万行代码的大项目而言,总共参与的人数多,逻辑复杂,如果不提前进行建模,工程必然会进度缓慢,结构混乱。

而在此前的专业课学习中,我们从未涉及过逻辑复杂到需要提前建模,因此对于此次作业有所不适应,因为习惯了边写代码边思考逻辑关系。而本单元作业就是强制让我们提前构思好逻辑。而除此之外,UML图的编写也要求我们更多的将重点放在类与类之间的关系上,而不是每个类部分的细节,否则沉湎于细节之中只会在写代码时反复修改图,造成效率的低下。

(二)本单元作业的架构设计

本单元中,考虑到任务逻辑较为复杂,我尽量对任务中的要求和功能拆分出尽量多的类,降低代码的耦合度,以此降低修改功能时的难度。

hw13

按照任务需求,对于图书馆的每个部门和职位我都单独建立了类用于模拟:自助机器AutoMachine,书架BookShell,图书馆自身Library,借还管理员BorrowAdministrator,预定管理员ReserAdministrator,以及任务要求的书籍Book和学生Student。而为了管理输入的操作,并进行全局控制,我增加了操作Operation类和调度控制类Schedule
这样我可以完全一步一步模拟任务中的需求和书籍走向,并不存在逻辑上的难点。也因此,各个类之间的关系较为简单,可以很好的用UML类图提前设计:

img

hw14

本次作业新增了校际借阅系统,但在hw13的基础上并不难增加,主要是借还流程描述较为复杂,无法准确理解流程。而理解流程后真正改变的地方并不是很多,我仅增加了图书管理处BookManager这一个类。

hw15

本次作业只新增了超时惩罚机制,仅仅只需要在Book类中加入时间相关属性和处理函数即可,改动量相当小

(三)本单元总结

本单元作为本学期的最后一个单元,与考期高度重合,的确给我造成了不小的压力,但也让我切身体会到了正向建模的实际操作和应用,学到了许多。

(四)四个单元中思维演进

架构设计思维演进

第一单元是基于递归下降法的面向对象程序设计,由于初次接触面向对象程序设计,对于java代码的编写也还不够成熟,我采用的是课程组已经写好的架构,在那基础上进行开发,属于是被课程组扶着完成了第一个单元的设计。

第二单元的重点在于多线程,而由于笔者此前接触过多线程,对于多线程编程时可能遇到的一些问题都有所了解,因此更多的将时间放在了降低类之间的耦合度,让代码更加简洁明了上。

第三单元中几乎不存在架构问题,基本上就是翻译JML语言,在翻译完成后对于性能低下的算法进行改变。

第四单元,如上文中提到的,架构思路就是尽可能模拟图书馆的运行策略,将每一个部门都设置为一个类,这样设计高内聚低耦合,修改起来也更加方便

测试思维演进

第一单元,主要考虑用数据生成器生成大数据和随机数据,然后手搓边缘数据和特殊数据

第二单元,主要是在用大量随机数据测试准确度的前提下,用特殊数据测试电梯性能并加以改善

第三单元由于时间原因,我未能做出过多测试,仅仅使用了同学的测试器

第四单元中主要是针对逻辑和输出的测试

总的来看,我所掌握的数据测试方法无非就两条随机生成的大规模数据手动生成的极限数据和边缘特殊数据

(五)课程收获

本学期oo对我来说痛苦多于收获,由于竞赛和各方事务繁重,每周留给oo的开发时间都较为有限,因此对我的学习能力和抗压能力提出了极高的要求。

尽管如此,我仍在课程中感受到了面向对象这一编程思想的伟大之处,也学会了递归下降,多线程,JML,UML等方法和技巧,收获匪浅。仅仅遗憾于每次作业都只能浅尝辄止,不能更深入的了解每一个单元背后更进阶的技巧,也无法过多打磨自己的代码。

感谢课程组和助教们,基本上每次作业能够及时反馈和修改指导书,助教们也能及时回复同学们的疑问,让我每次作业开始动手时,基本不存在争议内容,也感谢友善的大佬和同学们,愿意分享自己的测试机和思路,多次救我于水火之中。

最后,祝OO课程越办越好。

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

444

社区成员

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

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