OO第四次总结作业

一、第四单元两次作业的架构设计

第一次作业

本次作业要求对于类图进行解析,因为刚开始对于整体框架没有一个十分清晰的认识,因此在实现的时候主要部分都放在myumlinteraction中处理了。

说一下自己的思路,对于输入进来的数据进行分类存储后把每个类中的属性和操作以及接口中的操作这些相互关系确定好,然后分别进行相应的查找处理,其中在查询继承关系的时候我使用了floyd,可以在初始化时就计算好以后直接查找,虽然速度有点慢都是方法已经直接封装好,直接调用就行。

这次作业因为没有捋清楚整个逻辑框架,因此基本都是在一个类里面完成的因此造成了这个类过于冗长,在第二次作业中注意到了这一点进行分类处理。

  

第二次作业

这次作业需要在第一次作业的基础上完成对于状态图和顺序图的检查。

这次作业在MyUmlGeneralInteraction这个类中分别分成状态图,顺序图和类图交给不同类进行处理。这个类只处理check部分的三个方法和一些相应的数据。

其他部分都交给下属的三个专门的类来分别处理。

总结:

这两次作业都有一些细节的地方需要注意,比如一些映射关系(类和属性、操作),这个时候因为我自身的操作关系,类里面如果没有属性和操作时会出现空指针,这个在两次作业中都坑了我。此外,真想剁手,自己测试时候打的输出再最后交的时候忘记删了,导致第一次崩了(哭泣)。

 

二、总结四个单元的设计架构

第一单元:初识魔鬼OO,在java都不会的情况下直接开始正则,想起来第一次作业直接在构造函数里打了几百行代码,现在看来真的是一座shi山。后面两次经历了划分方法,划分类的过程,开始了解OO的含义。

第二单元:魔鬼电梯调度,这个单元主要考察的是调度算法,第一次作业可以简单实用多线程处理,第二次以后加一个调度器,对于请求队列进行分配,而电梯里面有相应的等待队列和电梯内部队列,通过调度器实现各电梯之间调度和分配。这个单元开始了解OO的一些设计模式,同时在总结作业中开始了解高内聚低耦合的含义。但是在具体实现的时候为了解决互斥问题,仍然存在一些公用的地方。

第三单元:算法单元?被floyd支配的单元,需要我们掌握一些优化时间的算法。这一单元的主要目的是让我们了解JML,我们可以通过JML的语法规则编写代码同时JML是一个框架结构型语言,在做工程任务时,这样的方法可以使各成员分工明确,这也是OO所希望的。在编写这一部分代码的时候,因为课程组已经帮我们实现了大部分代码我们只需要完成相关的方法就好,因此在整体架构上也更符合OO的思想,每一块之间以接口连接和传参。

第四单元:相比于JML语言,现在更多的是用UML这样图形化的语言来帮助我们完成工程任务,而我们学习了解UML能够读懂它的每个部分所代表的含义,也是这个单元的关键。虽然涉及的代码方面,更多的是一些检查和统计,但在这过程中,代码风格相比于第一次作业真的已经好了很多。

这四个单元从不同方面带我们了解并理解OO,同时在此过程中非帮我们学习java,让我们在一个个单元的递进中不断加深对于OO的认识,并在自己的代码中不断优化设计框架。

 

三.总结自己在四个单元中测试理解与实践的演进

第一单元刚开始的时候并不会打评测机,连生成数据都是手打的,这在测试中更多的是按照自己所设想可能存在的bug或者阅读他人代码的方式找,但是这样的效率很低,同时效果也不是很好。因此,在大佬的帮助下,开始了解如何自己打评测机,并在第一二单元的测试中发挥了一定的作用。在编写评测机的过程中,第一单元主要是用对拍器和python库的方法;第二单元则对于输出进行一些简要的判断,比如进出楼层和要求一样,电梯楼层以及运行时间不能炸等等;第三单元更多的根据生成数据进行自测,因为中测真的很弱,随机生成的数据在一定程度上可以帮助我们找到自己的bug,同时多数据的测试和对拍也是自己debug的方法之一。第四单元更多的是对于UML中一些特殊情况的判断和处理,因此更多的是根据自己所能想到的bug点进行画图测试。

通过这四个单元关于测试的理解和时间,我认为最有效的办法是写代码之前充分考虑并相应的编写相关的评测机,然后在打完代码之后投入评测机,进行大量数据的测试,然后在此基础上可以自己想一些可能的bug点进行自测。

 

四.总结自己的课程收获

 

说到收获,第一想法肯定是除了C终于学会一门其他语言的基本编写了,当然这只是OO收获的附加产物。这门课既然叫面向对象,我们当然要学会面向对象的思想,虽然在很多方面还是没有特别理解或者说还是不能在自己编写代码时体现出OO的思想,但是看着第一单元到第四单元的进步,还是比较满足的。回顾整个过程,一次次的ddl中学会了如何在压力中前进;在一次次的强测互测崩盘时学会了坚强;在一次次的作业中学会了成长;在一次次的重构中变得不那么绝望。这一切的收获,应该感谢老师和助教们不辞辛劳的改革和对我们不停吐槽的包容。

 

五.立足于自己的体会给课程提三个具体改进建议

首先我觉得既然课程是OO第一部分应该让我们充分了解OO的思想,因此需要一份很好的代码帮助我们理解,比如第三部分填写代码部分我们可以放在第一单元。

开始时上机课难度较大,比如刚刚学完的知识紧接着上级就要求手写代码可能难度较大,建议降低一些难度或者给出一些示范(其实在后面几次作业中以及难度有所降低)。

希望互测设计更为合理,互测有部分的目的在于看懂其他同学的代码,但是一份没有注释的代码真的很难看懂,同时也会出现为了防止被看懂代码随意篡改变量名的情况,因此希望加强对于注释的要求。

转载于:https://www.cnblogs.com/zhouyiwyz/p/11073314.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值