BUAA_OO_第四单元总结

22371016-黄圣宇 学生 2024-06-12 10:47:26

BUAA_OO_第四单元总结

一、正向建模与开发

正向建模与开发是指从软件设计开始,通过建立模型和规格来开发软件系统的过程。其实在每次oo作业本人都是这个思路,都会先确定类、属性、方法,只不过是在脑子里构思没有落到实处。

在本单元的uml图中,可以按照指导书中的几个书籍所在地创建类,第一次作业创建了5个类,分别是Bookshelf、User、BorrowAndReturn、Appointment与Operation,各个类通过Operation关联在一起,从而避免各个类之间的连线, 减少工作量也较美观。

第二次作业加入了漂流角,类图中也加入了DriftCorner,第三次作业加入了信用分机制,这里大多数改动在于User类,增加了属性以及相应方法,未添加新的类。

 

 

 

二、架构设计与追踪关系

最终的代码设计和UML模型设计之间的追踪关系是指软件开发过程中,代码实现与UML模型设计之间的对应和一致性关系。在本次作业的中测中也会对代码实现中的类、接口、方法等应该与UML类图中的类、接口、方法等一一对应,并且保持一致做检验。

这里不得不吐槽一句,这个同类型错误能不能一次性报错完,提交一次报一个错,10次都不够交的,还好课程组大发善心加了无代价提交次数,算是弥补了一下。

 

 

三、架构设计思维的演进

 

第一单元:多项式化简

递归下降法:第一单元是从上向下设计代码,通过递归将复杂、多步骤问题转化为较简单、可一次性完成的子问题。

 

第二单元:电梯调度算法

第二单元第一次接触到了多线程问题,学习了synchronized锁并很浅的了解了自旋锁的原理。

算法:本单元接触了LOOK算法与影子电梯技术,其中LOOK算法即通过深克隆模拟电梯将要运行产生的代价,从而做到局部最优。

 

第三单元:基于JML的规格程序设计

本单元学习了JML语言的语法以及在其规范下的代码编写。

收获最大的在验证test部分,通过构造数据验证是否符合JML前置条件、后置条件等。

 

第四单元:UML建模

UML建模是正向思维的具象化,之前每次写代码都会耗大量时间构思代码结构,也怀疑过自己不如走一步看一步快,也怀疑是不是自己就是选择犹豫症,但这单元就很符合之前写代码的习惯,也认识到了这样编程带来的好处。

 

 

  • 测试思维的推进

 

第一单元:多项式化简

多项式的测试大多在考虑-1、()之间的组合上,捏一些短小的数据来测试。后续加入乘方后可以通过乘方套乘方的方式来观察是否爆栈或超时。

 

第二单元:电梯调度算法

由于多线程运行结果的不确定性与不可复现性,一些测试点需要重复上千次才能碰巧遇到那个自己错误的地方,但这也是多线程需要重点关注的读写互斥问题。当时解决方法是在if内上锁后再进行if判断。

在其他测试方面本人主要用print直接输出一些信息来观察,后来接触到了可以通过日志形式代替简单粗暴的print。

 

第三单元:基于JML的规格程序设计

本单元主要是类比图,在test测试时构造全零图、完全图、以及两点间有边的概率为10%、20%……,即可通过中测的测试。这里采用的是随机random来生成数据,当然也可也手搓数据,但是可能遇到没有考虑到的情况而比较麻烦。

 

第四单元:UML建模

本单元的测试主要围绕最终的代码设计和UML模型设计之间的追踪关系展开,代码本身的测试倒是比较容易。强测中出现了一次错误即未考虑已预约并且无在架余本数无法再预约的情况。

 

课程收获

这学期的学习确实让我收获颇丰。通过课程的内容,我深入理解了面向对象编程的核心概念,包括封装、继承和多态,掌握了类和对象的使用,以及如何提高代码复用性和抽象思维能力。我还学习了设计模式,了解了生产者-消费者模型、工厂模式、单例模式等常用模式,这些模式为解决特定问题提供了通用模板,提高了我的问题解决能力。

前两单元在多项式化简和电梯调度算法的学习中,我掌握了递归下降法和多线程编程,解决了复杂问题的实现和调度。第三单元在基于JML的规格程序设计中,我学会了如何使用规格语言来描述程序的行为,并通过测试验证程序的正确性。第四单元在UML建模方面,我学会了使用UML可视化系统设计,提高了代码设计的效率和质量。

除此之外,我还学会了测试思维的推进,学习了如何进行有效的测试,包括针对不同单元的测试方法和策略,以及如何解决测试中遇到的问题和错误。通过不断的实践和总结,我提高了自己的编程能力和问题解决能力,为将来的软件开发工作打下了坚实的基础。也很感谢课程组设计的内容时的思维递进以及难度递减以契合我们的学习进度。

...全文
36 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

301

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧