OO第四单元总结报告

康硕-22230615 学生 2024-06-12 23:17:16

总结本单元所实践的正向建模与开发

在本单元的面向对象课程中,我们学习了如何使用UML(统一建模语言)进行正向开发,并将其应用于一个小型图书管理系统的开发。

首先,我们进行需求分析,确定了系统需要实现的主要功能:
借书,还书,查询,预约,预约取书,续借,图书漂流和图书整理等

在明确需求后,我们使用UML类图对系统进行了设计。类图定义了系统的主要类及其属性和方法,并描述了类之间的关系。
为了更好地描述系统中各对象的状态变化,我还使用了UML状态图。状态图主要展示了对象在不同状态下的行为和状态转换。

在完成UML设计之后,我就根据图进入开发阶段。我们按照设计的类图和状态图进行编码,实现了系统的各项功能。虽然后续设计中还在不断对类图状态图进行修改完善,而且这次作业感觉使用UML并不是很成功,但也并不是全无收获,这让我对统一建模语言有了初步了解,丰富了自己的编程手段。

总结本单元作业的架构设计,并对比分析最终的代码设计和UML模型设计之间的追踪关系

img

类图设计:由于我在本单元大部分采用单例模式,大部分类都是静态类,抽象出方法对外提供,因此类之间并没有太多关联等关系,类图的联系也相对比较简单。

img

状态图设计:状态图主要是关于图书的转移过程,对应类的方法主要依据状态图设计,但在实际编写代码中,为了迎合题目中的一些细节要求,还需要在具体实现时加以更改。对于每个地方都单独设一个类并采取单例模式,模拟图书馆情景且方便实现。具体的所有方法都在类图中展示。

总结自己在四个单元中架构设计思维的演进

在第一单元中,由于是初次接触oo,且迭代的过程让我害怕后续会重构,所以一开始时显得特别谨慎,仔细学习了递归下降的算法,了解了每个类的作用后才开始实现,为后续可能会加入指数等内容提前做好准备,而后续内容的加入,我也是在尽量不更改之前的架构基础上添加内容,符合迭代的思想。比如第二次加入exp类,第三次加入求导类。

第二单元中,我也是先以思考为主,尽量确保后续代码不需要更改,一开始由输入类对waitQueue进行添加,schedule类根据请求指定的电梯Id进行分发,对于电梯的设计,我将每个电梯作为线程,而每个电梯有自己的策略类,策略类负责控制电梯的行为,电梯作为载体进行运行,策略类不单开线程;后来在迭代过程中加了resetQueue,加入双轿厢电梯类等,在不改动源代码的基础上继续迭代。

对于第三单元,架构思路即按照JML语言,对于架构方法等并没有改动,只是加入部分属性以维护一些值。最后第四单元架构在上一问题中已经回答。

总结自己在四个单元中测试思维的演进

对于测试,在四个单元中主要还是采取评测机测试的方式,以这种方式能够全面地检测程序的问题,且还能调整数据强度进行强测,以测试程序性能,毕竟在第二单元中还需要电梯运行尽量快。除此之外也会进行手动构造数据进行针对性测试。在第一单元主要是测试正确性,保证式子符合要求且无括号,且还需要对长度(性能)进行检测。第二单元是多线程检测,需要多次检测以验证是否有线程安全问题,且也应进行性能检测,检测电梯的运行速度、耗电量等信息。第三单元进行了白箱检测,为不同方法单独写了juint测试,并自己编造特定数据进行测试,最后第四单元并没有单独进行测试,通过了中测后就没有进行测试。

总结自己的课程收获

一年的oo终于是落下帷幕,从一开始不知道java是什么,到现在能够独立根据要求完成架构设计、代码编写和测试,oo的课程虽然在许多周给了我不小的压力,让我熬了很多个夜,让我经历无数的破防瞬间,但无数的吐槽最终换来的是我认知的增长、编程能力的进步。接触了面向对象语言之后让我感觉在应对有些问题时,多了些解决的思路,让我在应对更复杂的问题时,学会先思考架构,避免后续大量的更改,一个好的架构能够让后续的环节变得清晰且简单。最后,感谢oo团队(老师及助教)这么长时间的付出,课程的不断优化改革也让我们的体验感越来越好,最后,祝oo课程越来越好。

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

301

社区成员

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

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