BUAA OO 第四单元总结

正向建模与开发

在本单元中,我们主要的学习内容是利用UML进行正向建模并开发出一个小型图书馆系统。

UML(统一建模语言)是一种标准化的建模语言,用于软件工程的系统设计和文档编制。正向建模与开发是指从UML模型开始,逐步开发出实际的软件系统。

本单元要求我们先进行需求分析,确定系统需要实现的功能后,利用UML类图对系统的结构进行设计,之后再进行代码的实现。这是因为在分析需求进行建模的过程中,我们会对作业的要求有一个更加深刻的理解,在这样的理解的基础之上进行代码编写会让我们事半功倍。

在实际操作过程中,只需要先建立起一个大概的架构图就可以开始着手代码编写了,因为很多局部的细节只有在实现了一定基础的程序功能后才能找到最优的解决方式。也就是说,UML建模与代码编写是相辅相成的,前者为后者提供总体的框架约束,后者在实践过程中实现前者的细节。

架构设计

类图

顺序图

  • 最核心的类是Library,它读取并处理不同的请求,同时持有bookShelf、appointment、borrowAndReturn和bookDriftCorner等容器管理图书。
  • Students类用以管理涉及到的所有学生以及每个学生所持有的所有book。
  • BorrowedBook、OrderedBook和InformalBook在官方包提供的LibraryBookId的基础上分别增加了一些新的属性,用于在特定的场景下管理图书。

架构设计思维的演进

第一单元

第一单元的主题是表达式展开与化简,通过这一单元引入“递归下降”的思想,并让我们初步接触具有一定规模的面向对象程序的设计。

这一单元的作业内容主要是对于表达式的解析以及对Factor接口的实现,将复杂的Expr、Term和Factor解析处理得到一个个最小单元Mono,最后对这些单元进行统一处理。

通过这一单元的学习掌握了新的语法分析方法,同时也在OOpre的基础上加深了对于面向对象编程思想的理解。

第二单元

第二单元的主题是多线程实时电梯系统,核心在于处理不同线程之间的交互与协作,并确保程序在高并发输入下功能的正确性。

本单元提供了用于处理输入输出的官方包。三次作业都拥有InputThread、Schedule和Elevator三种核心线程,分别用于读取请求、分配请求以及完成请求。各个线程之间共享一个RequestTable的容器,各司其职地完成对于输入请求的处理。

通过这一单元的学习接触并了解了多线程相关内容,并在实际操作中有了自己的认识与理解。

第三单元

第三单元的主题是入门级 JML 规格理解与代码实现,要求我们根据已有的jml规格实现相应的方法,并保证正确性与一定的性能表现。

这一单元的作业在架构上没有什么难点,而是要求我们充分理解jml规格并进行充分的单元测试,保证覆盖到所有可能的情况。除此之外,在保证实现jml规格的前提下,个别方法的实现还对我们的算法设计能力提出了一定的要求。

通过这一单元的学习接触并体会到了契约式编程的特点,并且久违地重温了数据结构与算法。

第四单元

第四单元的主题是UML建模语言,要求我们利用 UML 实现正向建模与开发。

这一单元作业的特点是先进行总体架构再完成代码实现,主要锻炼我们对程序架构的设计和抽象能力以及UML建模能力。这样的流程培养了我预先进行架构设计的习惯,可以在架构阶段解决很多结构上的问题,为后续的编程扫清很多障碍。

测试思维的演进

第一单元

主要针对递归下降的思想生成一些复杂度尽可能高的数据,并利用评测机覆盖更广的范围。

第二单元

主要针对死锁、高并发的方向生成测试数据,测试电梯同步锁设置的正确性以及应对高并发输入的能力。

第三单元

主要利用Junit构造测试点,在Junit中可以使用随机算法生成节点,提高测试的覆盖率。另外,还需要检查每个方法的时间复杂度,尽可能地优化算法。

第四单元

本单元作业复杂程度并不高,正常根据指导书的要求进行针对性测试即可。

课程收获

OO这门课程在我心目中是大二“三板斧”中最实用的课程,也是我实际学习体验最好的课程。

不同于CO和OS,OO实打实地给了我一种能够学到实用技能的感觉,因此我对于这门课程付出了更多的时间与精力,而事实也证明了我的付出是完全值得的。在这门课程的学习过程中,我接触到了许多面向对象设计的思想和方法,极大地锻炼了自己的编程以及解决实际问题的能力,在一次次完成作业的过程中得到了极大的满足感与成就感,让我更加确信进入计算机学院是一个正确的选择。

最后,感谢课程组与助教团队的付出,使我能够在这一段学习旅程中收获满满。

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值