2024_BUAA_OO_UNIT4总结

在第四单元中,我们主要围绕图书馆系统,借助UML图进行设计,然后再进行开发。

正向建模与开发

本单元的主题是UML建模。我们主要学习了类图、状态图和顺序图。通过在实现前进行详细设计,可以帮助我们更好地进行系统开发。

类图

类图描述了系统中的类、接口及其之间的关系,包括继承、实现、关联和依赖等。类图可以分析系统的静态结构,识别类与类之间的关系,从而确保系统的设计符合需求。

状态图

状态图描述对象在其生命周期中的各种状态以及状态之间的转换。通过状态图,可以了解对象在不同条件下如何响应事件、如何从一个状态转换到另一个状态。对于复杂逻辑,如嵌入式系统或实时系统,状态图能够帮助设计和验证系统的行为。

顺序图

顺序图展示了对象在特定时间顺序下的交互过程,特别是方法调用和消息传递。顺序图可以清晰地展现不同对象之间方法调用的顺序和协作过程,帮助设计和验证用例的实现,确保系统的行为符合需求。

代码设计和UML模型设计分析

在三次作业中,我通常只进行大概的设计,例如确定类和基本的协作关系,之后在完成代码后再进行详细补充。

第一次作业

这次作业实现了一个简单的功能,主要是完成图书馆中不同部门的协作。尽管书籍会在不同部门之间调度,起初所有的容器都放在Library类中就可以实现,但最后考虑到拓展性,为每个部门都创建了类。

请添加图片描述

第二次作业

在第一次作业的基础上,这次作业实现了续借和图书漂流功能,并新增了UML状态图设计。我新增了一个漂流处类,用于实现这一功能,同时修改了Book类的属性,以处理日期相关操作。

第三次作业

这次作业新增了信用分系统。我在原来的基础上进行了修改,记录图书捐献人等信息,同时根据要求增减信用分。

架构设计思维的演进

第一单元第一次接触递归下降方法,增强了层次化设计思维,建立了表达式、项和因子的层次关系,从而在迭代开发时没有太大的困难,较好地完成了任务。

第二单元接触多线程,实践了多线程代码的编写,需要首先明确了多线程的协作关系,然后再进行设计,尽可能保证线程安全,避免死锁和轮询。

第三单元参考JML规格,选择合适的数据结构和算法实现。

第四单元借助UML进行大体设计后再编写代码,可以保证质量。

四个单元测试思维的演进

第一单元在教程指导下尝试写测评机(虽然后续没有迭代开发),结合基础数据进行测试。

第二、三、四单元借助数据生成器,通过大量随机数据确保大部分情况下的正确性,同时手动构造数据进行性能测试与正确性测试。

第三单元按照要求对某个方法进行了JUnit测试,虽然比较繁琐,但能够更容易发现方法中的一些问题,同时确保符合JML的要求。

课程收获

通过OO课程的学习,我了解了面向对象设计的一些经典概念与方法,熟悉了Java语言,接触了多线程编程、JML和UML等。每个单元的迭代开发,让我能够写出设计更好、更有层次的代码。从OOpre到正课,确实花费了不少时间。对我个人而言,OO课程在每个单元提供不同主题的同时,也帮助编程基础较为薄弱的同学增加了代码量,建立了基础的编程思维,对大部分同学还是有帮助的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值