BUAA-2024春-OO-第四单元总结

1.正向建模和开发

正向建模和开发是指在建立一个系统、产品或项目时,从头开始进行设计和开发的过程。这种方法通常涉及从概念和需求的阶段开始,逐步演进到具体的设计、开发和实施阶段。在正向建模和开发中,重点在于明确定义目标,并通过系统化的方法逐步实现这些目标。

本单元使用的是UML(Unified Modeling Language,统一建模化语言)来进行正向建模与开发,在三次迭代开发中,我们用类图、状态图和顺序图实现了正向建模的工作,并在此基础上,完成了图书管理系统的开发,并在开发过程中结合实际问题对模型不断地进行调整。

2.本单元作业框架设计

类图:
类图
在三次作业中,我的结构都以图书馆为核心,将图书馆与书架、借还处、预约处、图书漂流处、人相关联。在运行时,图书馆处理每一条输入命令,负责找到命令中要求的图书,将其分配到正确的地方,并统一管理所有的图书信息。而Book类中储存图书的所有信息,例如借阅日期、借阅时限、预约日期等,方便图书馆根据这些信息对对应的图书进行移动。

代码设计和UML模型设计是一个互相追踪并互相完善的过程。例如在UML模型设计之初,我的构思是图书馆管理书架等每个地方,所以只是一种单向的关联关系。但是在具体代码实现中,预约处等地方对某本书进行操作后需要改变对应Book类对象的一些属性,这个过程需要根据命令要求从图书馆管理的所有Book对象中找到正确的Book对象。在这个过程中,可以将Library类比成一个图书查询系统,任何地方都可以通过查询这个系统来访问图书信息,并修改系统中的信息。所以在这种代码设计下,UML图中图书馆与其他的一些地方呈现出了双向的关联关系。

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

3.1 U1(表达式化简)

在第一单元中,我们接触的是一种“递归下降”的层次化设计的思想。完整的表达式是非常复杂,所以我们需要使用适当的层次结构将复杂的表达式分解成多个简单的单项式,将复杂的问题分解成多个简单的问题。这非常考验我们能够清晰地设计每个层次的能力。

3.2 U2(多线程电梯问题)

在第二单元中,我们实现了一个多线程的电梯系统。在多个线程之间,我们要保证线程对共享资源的互斥访问以实现线程安全,同时需要设计多个线程之间的同步关系,让在等待的线程被另一个线程所唤醒并在运行后释放之前获得的锁,防止死锁的产生。这培养了我在并发环境下的架构设计和性能调优能力。

3.3 U3(以JML为基础的社交系统)

在第三单元中,我接触的规格化设计的思想。通过JML规格来约束每一个类中的属性和方法,以确保每个方法实现的准确性。使用规格化语言,贯彻规格化设计的思想,可以清晰地定义代码设计的要求,对复杂的需要多人合作的项目也大有帮助。

3.4 U4(UML正向建模和图书馆管理系统开发)

第四单元锻炼的使我们模型化设计的能力。在代码开发之前就设计好整个程序的框架,建立对应的模型,在此基础上进行代码开发。这让我们摆脱了边写代码边设计的坏习惯,也大大减小了大量重构的可能,让我们将重点放在程序的结构设计上,而并非不断地计较每个程序细节的实现。

4.测试思维

在构造测试数据点中,需要考虑很多方面。
首先,我们要考虑数据的边界,这些边界数据可以暴露程序设计中的一些细节处理的问题。
其次,我们要增大数据的压力,进行大量数据的检测,因为一些问题只有在足够大的压力下才能暴露。
最重要的是我们要有自己编造数据的能力,通过编造特殊的数据点,以测试程序实现的每一个功能。

5.课程收获

oo课中让我收获最大的是第二单元中多线程设计的思想,让我接触了一个全新的设计模式。其次UML的学习也改变了我实现一个项目的思维,让我明确了系统设计的思维。
总的来说,面向对象设计课程的学习让我收获颇丰,虽然累了点,但大大加强了我的设计能力和代码实现能力,也为我未来面对更加复杂的项目打下坚实基础。

  • 32
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值