301
社区成员
发帖
与我相关
我的任务
分享第四单元的主要任务是学习正向建模与开发,在这一单元的作业中,我们利用UML进行建模,先后绘制了类图、状态图、顺序图,然后将这些模型用代码实现。
正向建模是一种用于描述和分析系统或过程的建模方法,即从需求出发,设计系统的各个模块及其相互关系,从而生成系统模型的过程。
本单元的作业完成过程大概分为几个步骤:首先进行需求分析,将作业需要实现的功能进行总结归纳;然后进行结构设计,通过UML将结构进行图形化表达;最后进行代码实现,并在实现的过程中对结构图进行反思和修正。

本单元题目背景是一个小型的图书管理系统,支持借书、续借、预定、还书、捐献等请求。
在实现过程中,意识到借还处、书架、预约处、用户都是书籍存放的“地点”,于是抽象出一个Place的接口,并配置了相应的访问方法、书籍放入和取出方法;Arrange类负责“统筹规划”,对于每一条指令,由Arrange类统一决定如何操作,并调用相应的方法进行处理。
第一单元:面向对象“初始化”
本单元的类更大程度上是“数据的集合”,即相关特征聚合的产物。表达式、因子、幂函数等各类间关系清晰,易于维护,因而本单元整体难度较低,适于入门面向对象的编程方式;同时,本单元学习的递归下降的编程思想,使得复杂问题可以简单化,也有利于后续学习编译原理等课程。
第二单元:多线程的交织
本单元引入了多线程的编程方式,使我认识到类也可以服务于某一特定的功能(如线程类),从而实现功能和数据相分离;同时,在进行多线程编程时,需要时刻注意线程间同步互斥关系,类间关系变得复杂。总得来说,这一单元难度急剧上升,但也锻炼了思维,学习到“多线程”这一强大的工具。
第三单元:JML规格化描述
本单元主要聚焦在如何正确地理解和书写jml语言。课程组给定了大致的结构与方法的规格,只需要按照要求实现即可。当然,“规格与实现相分离”,在保证实现正确的基础上,要尽可能地优化性能,谨防TLE。
第四单元:UML正向建模与实践
本单元学习正向建模与开发,利用UML进行建模,先后绘制了类图、状态图、顺序图,然后将这些模型用代码实现。系统架构设计为程序实现提供了一个高层次的蓝图,将系统分解为若干模块,每个模块负责特定功能,有利于明确各模块的职责和边界,减少模块间的耦合。
在四个单元作业过程中,采取了以下几种方式进行测试:
通过2024OO课程的学习,我在面向对象的设计与开发方面有了全面的提升。具体收获如下: