2024OO第四单元反思与总结

蒋孝淳-22373369 学生 2024-06-13 23:59:00

正向建模与开发实践

第四单元的主要任务是学习正向建模与开发,在这一单元的作业中,我们利用UML进行建模,先后绘制了类图、状态图、顺序图,然后将这些模型用代码实现。

正向建模是一种用于描述和分析系统或过程的建模方法,即从需求出发,设计系统的各个模块及其相互关系,从而生成系统模型的过程。

本单元的作业完成过程大概分为几个步骤:首先进行需求分析,将作业需要实现的功能进行总结归纳;然后进行结构设计,通过UML将结构进行图形化表达;最后进行代码实现,并在实现的过程中对结构图进行反思和修正。

单元架构设计

img

本单元题目背景是一个小型的图书管理系统,支持借书、续借、预定、还书、捐献等请求。
在实现过程中,意识到借还处、书架、预约处、用户都是书籍存放的“地点”,于是抽象出一个Place的接口,并配置了相应的访问方法、书籍放入和取出方法;Arrange类负责“统筹规划”,对于每一条指令,由Arrange类统一决定如何操作,并调用相应的方法进行处理。

架构思维演进

第一单元:面向对象“初始化”
本单元的类更大程度上是“数据的集合”,即相关特征聚合的产物。表达式、因子、幂函数等各类间关系清晰,易于维护,因而本单元整体难度较低,适于入门面向对象的编程方式;同时,本单元学习的递归下降的编程思想,使得复杂问题可以简单化,也有利于后续学习编译原理等课程。

第二单元:多线程的交织
本单元引入了多线程的编程方式,使我认识到类也可以服务于某一特定的功能(如线程类),从而实现功能和数据相分离;同时,在进行多线程编程时,需要时刻注意线程间同步互斥关系,类间关系变得复杂。总得来说,这一单元难度急剧上升,但也锻炼了思维,学习到“多线程”这一强大的工具。

第三单元:JML规格化描述
本单元主要聚焦在如何正确地理解和书写jml语言。课程组给定了大致的结构与方法的规格,只需要按照要求实现即可。当然,“规格与实现相分离”,在保证实现正确的基础上,要尽可能地优化性能,谨防TLE。

第四单元:UML正向建模与实践
本单元学习正向建模与开发,利用UML进行建模,先后绘制了类图、状态图、顺序图,然后将这些模型用代码实现。系统架构设计为程序实现提供了一个高层次的蓝图,将系统分解为若干模块,每个模块负责特定功能,有利于明确各模块的职责和边界,减少模块间的耦合。

测试思维演进

在四个单元作业过程中,采取了以下几种方式进行测试:

  • 手动样例测试:考虑边界情况的手动测试;
  • Junit测试:通过Junit框架编写自动化测试用例,对代码进行模块化的检查,确保模块的功能符合设计要求;
  • 自动测评机:自动运行一系列预设的测试用例,并比较实际输出与预期输出,能够高效地评估代码的性能和正确性,也可以兼顾与同学对拍的需求。

课程收获

通过2024OO课程的学习,我在面向对象的设计与开发方面有了全面的提升。具体收获如下:

  • 理论知识:掌握了面向对象编程、多线程、JML、UML建模等理论知识。
  • 架构设计:学会了利用UML建模进行系统的架构设计,提高系统的可扩展性、可维护性和性能。
  • 测试能力:增强了测试思维,掌握了单元测试、自动化测试等技能。
...全文
67 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

301

社区成员

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

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