BUAA 00 2024 Unit4 及课程总结

张金涛-22373311 学生 2024-06-14 15:04:41

一.Unit4正向建模与架构设计

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

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

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

 本单元题目背景是一个小型的图书管理系统,支持借书、续借、预定、还书、捐献等请求。

于是很自然的 Library 和 User成为了两个核心的交互类。

在实现过程中,显然可以发现借还,预约,存放,漂流等行为都涉及到书本的地点,于是抽象出一个Place接口。那么BrOffice,ApointmentOffice,BookShelf,DriftCorner只需要实现该接口即可处理书本的各种行为。即使后续再出现书本的其他行为,也可以实现新的类,具有很好的扩展性。

二.四个单元中架构设计思维的演进

第一单元:
本单元的类更大程度上是“数据的集合”,即相关特征聚合的产物。表达式、因子、多项式等显然是不同层次的架构,要求我们用递归下降的思维,为不同层次的表达式构建处理方法。

第二单元:多线程的交织
本单元引入了多线程的编程方式,使我认识到类也可以服务于某一特定的功能(如线程类),从而实现功能和数据相分离。本单元的架构重点在于理清线程同步之间的互斥关系。

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

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

三.四个单元中测试思维的演进

在整个的OO课程中,我尝试并使用了多样的测试方法。

测试的目的是尽可能提高程序的可能正确率。在我们作业中,我们应该对充分要求自己程序的正确性,性能达到最好。但在以后的编程中,我们要兼顾测试的效率和成本。

  • 构造简单的数据,针对题目中要求的各种情况,进行测试,看看行为是否正确
  • 思考一些边界情况、极端情况,构造一些极端的数据,对代码进行边界测试、压力测试。
  • 自动化生成数据,构造评测机,或者像Unit3中学的那种参数化Junit测试,在IDEA中自动构建大量数据测试等
  • 对比较容易出错的部分进行瞪眼法,检查各种情况是否出现问题

四.课程收获

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

  • 理论知识:掌握了面向对象编程、多线程、JML、UML建模等理论知识。什么是面向对象,面向对象就是把问题分离开来,分而治之,并把分的过程封装。多线程,JML,UML则是让我们学会了三大本领。
  • 架构设计:学会了利用UML建模进行系统的架构设计,提高系统的可扩展性、可维护性和性能。
  • 测试能力:增强了测试思维,掌握了单元测试、自动化测试等技能。
...全文
85 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

301

社区成员

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

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