272
社区成员




正向建模,就是先用建模语言构造大致的代码架构,以及各个类之间的协作关系,之后再根据这些实现具体的代码。在开发初期,可以不用考虑代码的细节,着重把握整体架构,有利于架构的合理设计。
在本单元,我使用了正向建模与开发。在第一次作业时,我先画出了类图,随后根据类图编写代码。第二次作业,我根据要求修改代码,并绘制状态图。第三次作业,我根据要求修改代码,并绘制顺序图。经过这三次作业,我对基本的建模图有了初步了解,并体会到正向建模对开发的帮助。
以上是我本单元的最终架构设计。对于每个题目中出现的元素(书架、阅览室、预约处等) 我都建立了相应的类。相比于将这些地点作为book的一个参数,我的架构更加清晰,但也更加复杂。
最终的代码设计与类图基本吻合。第一次作业是先画图后写代码,后两次迭代均先修改代码再修改图。我的理解是,对于一些小改动和未确定的增减,没有必要先在图上改出来。等改动的代码没有问题了,再反过来修改图。
本学期作业主要是第三单元使用了大模型。第三单元因为描述众多但比较简单,适合使用大模型来减轻工作量。在大模型的使用上,一开始尽量不要提过高的要求,如“最优性能”,而是应该提供基本要求,让大模型生成出正确的能用的代码。在人工检查正确性后,针对某些需要优化的方法或结构,可以一条一条地让大模型修改。
对于一些大模型使用技巧,如“假如你是某某专家”,就我的实践来看和直接提问区别不大,用起来还别扭。只要要求明确,实现难度不高,大模型都可以很好地处理。
刚开始写的时候根本无从下手,递归下降啥的都不懂,看了很多学长学姐的博客才勉强完成第一次作业。第二次作业时花了很多时间理解架构,到完成时已经完全理解了。第三次作业完成得就比较简单。
第一单元不会什么测试,只会跑样例对比结果,然后反向分析。
根据实验代码,初步了解了生产者消费者模式。在此后的作业中,我都坚持将线程类和共享对象分得很清楚,因此避免了很多线程问题。我的同学有的将线程和共享对象混在一起,调试起来特别复杂,还很难调对。这让我意识到一个好的架构有多重要。
在这一单元,传统的调试在多线程中难以发挥作用。因此,我在调试中用得多的是“print”。
这一单元不太涉及架构设计。
这一单元调试比较简单。
这一单元能进行比较合理的架构设计,高内聚低耦合,进行功能的增添删改也比较容易。
本单元几乎没有出现bug。
经过四个单元的学习,我对面向对象编程有了更深的理解。一开始我并不能进行很好的架构设计,在main里写一大堆代码。后来学会了基本的架构设计,每个类规模都合适并且结构清晰。对于复杂的多线程,一开始我也是一头雾水,但是经过三周的煎熬,最终也是学会了多线程的基本编写和调试方法。总的来说,OO这门课上手难度还是比较大的,但收获也很多。