- 一、Unit4 总结
- 正向建模与开发
- 架构设计
- 二、OO 课程总结
- 架构设计思维的演进
- 测试思维的演进
- 课程收获
一、Unit4 总结
正向建模与开发
- 正向建模与开发是一种自上而下的设计过程。它从需求分析开始,然后进行系统设计,最后实现系统。这个过程强调从问题域的角度出发,通过建立模型来描述系统的结构、行为和关系,并将这些模型转化为可执行的代码。
- 在本单元的三次作业完成中,我们需要实现一个能够满足预约、续借、漂流等需求的小型图书馆系统。在这个过程中,UML图可以作为一个重要的工具,帮助我们建立类图、状态图、顺序图等正向开发的模型,并以此为依据进行程序的开发设计,帮助我们更好地理解和解决复杂的问题,提高软件的质量和开发效率。
架构设计

- 总共有 9 个类,包括图书馆、借还处、书架、预约处、漂流出、用户 6 个地点以及一些辅助类。整个架构依据书的去向搭建,比较清晰、易扩展。
二、OO 课程总结
架构设计思维的演进
第一单元:表达式化简
- 在第一单元的学习过程中,递归下降算法的掌握无疑是最具挑战性的部分。一旦理解了递归下降算法的精髓,便能自如地构建出表达式、因子、幂函数等类的框架,并且清晰地勾勒出它们之间的相互关系。这样的架构不仅逻辑清晰,而且具有很强的扩展性,为未来可能的需求变更和功能扩展提供了便利。
- 然而说来惭愧,这种架构设计的形成可能并非完全出于我的主观意愿。在很大程度上,它是我在学习算法过程中,通过观察和模仿前人而逐渐形成的。不过通过这样的模仿和实践,我不仅学会了如何构建有效的程序架构,还学会了如何在现有知识的基础上进行创新和改进。
第二单元:多线程电梯
- 第二单元引入了多线程编程。本单元在架构设计方面不仅要可扩展性,还要设计好整个一连串的生产者消费者模式形成的流水线结构,实现多线程的功能。这种编程方式要求我们在功能和数据之间实现分离,同时也要求我们密切关注线程间的同步和互斥关系,以避免潜在的并发问题。尽管这一单元的难度有了显著提升,但它也极大地锻炼了我们的逻辑思维能力,并使我们掌握了多线程——这一强大且实用的编程工具。
第三单元:JML
第四单元:UML
- 第四单元的重点是UML。课程组要求我们掌握正向建模与设计的思想,能够使用UML图辅助我们进行程序设计。在这个单元中,我体会到了预先设计好一个架构的重要性。这样可以将复杂的问题分解成简单的小问题,使其易于理解,准确指导接下来的具体实现和拓展。当然,我并没有能力在一开始就设计出一个很好的架构,只能边写边改,这是一个不断在学习和实践中积累经验的过程。至少我相比这学期刚开学时在架构设计方面已经有了很大进步了。
测试思维的演进
我主要学习了以下几种策略来进行代码测试:
- 构造简单的数据:我会针对题目中要求的各种情况,构造一些简单的数据进行测试。这种方法的目的是检查代码的行为是否符合预期,以确保代码的基本功能正确无误。
- 边界和极端情况测试:我会深入思考一些可能出现的边界情况和极端情况,然后构造一些极端的数据进行测试。这种方法的目的是对代码进行边界测试和压力测试,以确保代码在各种极端情况下都能正常工作。
- 使用 DPO 评测机:在此也要想搭建评测机的大佬们表示衷心的感谢。
课程收获
在我学习OO课程的过程中,我收获了许多宝贵的经验和技能:
- 学习了各式各样知识:怎样处理高并发的多线程问题,怎样阅读JML、绘制UML,良好的代码风格与合理的设计模式,以及如何设计架构以获取较好的可扩展性等等等等。这些知识为我在编程领域的进一步发展打下了坚实的基础。
- 收获了解决问题的经验:我学会了如何在面对陌生的领域时,去搜集资源、合作讨论、请教老师与助教,最终学习到知识,并将这些知识应用到实际问题中去。这种能力对我在未来的学习和工作中解决问题将大有裨益。
- 锻炼了抗压能力:在面对高强度和高难度的任务时,我会回想起在OO课程中设计架构、编写代码、debug的经历(尤其是多线程单元),这些经历给我增添了一份信心,使我相信自己有能力应对挑战。
这些收获不仅提升了我的技能和能力,也丰富了我的学习经验,使我更有信心面对未来的挑战。我将珍视这段OO之旅,期待在未来的学习和工作中取得更大的进步。