443
社区成员
正向建模(Forward Modeling)是一种建模方法,用于描述系统的输入和输出之间的关系。在正向建模中,我们首先确定系统的输入变量,并基于已知的物理规律、统计模型或实验数据来构建一个模型。然后,通过该模型来预测系统的输出结果。正向建模通常用于理解和解释系统的行为,并用于预测未知条件下的输出。它是一种从因果关系的角度来建立模型的方法,通过对输入变量的控制和调整,可以预测系统的响应。
在本单元中, 正向建模需要我们在编写代码之前做好对类图、状态图、时序图的设计,以避免大规模的重构,并且,绘制可视化的uml图有助于梳理各个类之间的交互,理清思路。但在实际完成时,最终的代码设计和UML模型设计难免有些分离,因为有些交互的问题难以在模型设计时候就能预料到,在编写业务代码时候还需要灵活变通来实现一些模块功能。
类图
状态图
时序图
synchronized
以实现不同电梯线程间的互斥访问临界资源。线程终止上在调度器内设置一个标志变量,实现当输入终止时电梯线程自动终止。本单元作业相比第一单元,各个类之间的依赖性降低,功能独立性上做的比较好,尤其是Elevator
类和Person
类,由于在设计上功能就独立于调度器,每次更改要求都只需稍微调整即可,而调度器的改动也主要在于每次使用的调度算法不同,主要功能上变化不大,这次作业没有重构的情况,而是能在上一次作业基础上增加功能并修改少部分相关代码实现,是相比于第一单元最大的进步,也体现了对OO方法的进一步理解。经历一个学期面向对象课程,我的收获主要有三个方面:面向对象思维能力、码力、自我检测能力。
首先,面向对象思维能力是这门课程的核心要求,对我来说也是最大的挑战。在之前的学习中,我主要接触的是面向过程编程,尽管在寒假时预习了java语言,但在实际编写程序时仍然倾向于使用面向过程的思维方式。然而,通过这一学期的训练,我逐渐能够自然而然地运用面向对象的思维方式来分析问题和设计架构。相较于面向过程编程,面向对象更接近人类的思维模式,这在编写大型程序时显得尤为重要。面向对象编程更容易进行大中型程序的设计,编写过程中也不容易出现错误。而面向过程编程由于各部分关联性太强,常常出现一个地方出错牵一发而动全身的情况。通过面向对象思维的训练,我能够更好地设计程序的架构,减少错误的出现,并且在出错时更容易定位和解决问题。这对于编写高质量的代码和保证程序的可维护性具有重要意义。
其次,码力的提升也是这门课程带给我的重要收获之一。从每次作业发布到提交的时间一般只有五天,实际编写代码的时间只有一天多。考虑到架构设计和代码检查的时间,实际敲代码的时间更加有限。然而,通过面向对象的训练,我发现自己的编码速度有了显著提升。在完善架构设计的情况下,我能够快速而准确地编写代码。现在,基本上能够在一晚上的时间内完成500行以上代码的编写。这对于我来说是一大进步。
最后,我在自我检测能力方面也取得了显著的进步。之前,我的测试主要依赖oj的反馈信息,自己进行的测试相对较少。然而,在面向对象课程的训练中,我开始更加全面地考虑测试方面。我有意识地进行边界测试、压力测试和功能覆盖性测试,并且学会了使用自动化测试和单元化测试的技巧。这些能力的提升使得我能够更全面地测试我的代码,提高了代码的正确率,有时甚至能够一次性地编写出没有错误的代码而通过中测。
这些收获将对我的软件开发能力产生积极的影响。