ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OO_第四单元总结

2022-06-24 21:06:57  阅读:141  来源: 互联网

标签:OO 测评 作业 第一次 JML 第四 单元


OO_第四单元总结

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

这次作业,我刚刚开始的时候还有些迷茫,通过阅读往届博客我大概了解到,需要先初始化读入的数据。所以我首先将三种图都进行了初始化,初始化其实就是将图进行分层次,先对同层次的元素类型进行构建,从高到低,初始化完,相对于就把图给建好了。然后就是各种查询,我将各种查询的主要部分都放在了图的类中,而不是放在Implementation中,因为图的结构完全存于class、interaction、region三大类中。

我的最终代码层次如下,其中将类图和顺序图的初始化拿出来了,主要原因是——超500行了...其实软件包中的一些类并没有什么作用,可以直接使用官方包封装的Uml,但是由于烤漆,我在后两次作业中并没有去改变。

二、在四个单元中架构设计思维及OO方法理解的演进

第一单元

第一单元其实给了我很大的恐惧(对OO这门课的恐惧),因为是第一次接触java,只在pre中对语法有一些初步的认识。当看到第一次作业时,我完全不知道如何下手,尝试用预解析方式但是又不甘心分数被折算90%,后来在实验课的基础上,我有了一些感觉,还有就是同学给的三句话“先去空格”“去+-”“解析”,突然让我对这次作业豁然开朗,然后花费了小半天的时间解决了第一次作业。由于第一次作业的结构还比较好, 后两次作业没有进行重构,而是在原来的基础上继续添加功能。到第三单元的时候,我感觉自己写出的作业已经比较完善了,有了一些层次化的感觉。我想这也是课程组所希望我们在这个单元学到的吧。

第二单元

这个单元主要是多线程的电梯作业,其让我对多线程有了更多的了解,从完全不懂到最后写出一个较好的花式电梯确实让人成就满满。我认为自己已经对死锁有了充分的了解,知道死锁是如何产生的,并且自认为自己不会发生什么死锁问题,但是当它在我面前出现的时候,“原来这样也会死锁!”让我措手不及。这次个单元的作业,也让我深深认识到了做测试的重要性,第一次作业并没有多大难度,并且我提前复习了多线程知识,自认为写得比较顺利,但是第一次作业却因为测试不充分导致巨大的问题,让我非常难受。但同时也让我开始学着写测评机。虽然第一次写的测评机可能还不是很好,但是已经可以基本实现自动化测试了。

第三单元

本单元相比前两个单元是最轻松的一个单元,在这个单元中我对JML规格有了较为清晰的认识,还记得老师上第一节JML规格课的时候我并不是很能理解它是干啥的,通过不断阅读JML手册理解基本语法后,接下来的工作就是按规格写代码,有些死板,但是确实在这个单元中,由于JML规格指导书的歧义少了很多(甚至几乎没有)。本单元最后的博客作业还让我们自己进行JML规格的撰写,我也从中发现,相比于看JML规格,写出一份完整的JML规格需要非常严谨和认真(比看JML难多了...)。

第四单元

这个单元主要是想让我们更清晰地理解类图、顺序图、状态图,当我们遇到它们的时候能够理解它们。相比于直接让我们画,我认为这个单元的作业让我更好地理解了这些图的结构,因为我需要在init的时候对其进行层次化,将其一层层嵌套,理解其中不同元素的关系。这次的作业可能没有第三单元那么多的数据结构了,但是需要我在对UML图的理解上下功夫,其实理解了图的关系,初始化之后的查询比第三单元还简单。

三、在四个单元中测试理解与实践的演进

第一个单元的时候我还不会搭建测评机,我的数据主要来源于手搓边界数据和朋友对拍。到第二单元的时候,由于第一次作业的打击,我开始尝试构造测评机,这也是我第一次开始构造测评机,可能还有些拙劣,但是可以基本实现自动化测试。在第三单元的时候,我偶然发现了wzk学长的测评机(谢谢学长),我进行了稍微的改动使之符合我们这次作业的要求便投入使用,不得不说学长的测评机使用感好好...其把测评和数据分成了两个份代码,使得测评部分代码可以重复使用,只需要更改数据生成部分便可以投入别的测试。

四、课程收获

本学期的OO课大大大大大大提升了我的代码能力,同时也让我对一些设计模式有了更深的理解,还有就是在撰写代码前考虑其可扩展性、可迭代性。可能刚刚学完OO,我也说不出太多的感受,毕竟现在的它在我的眼里还只是一门课程,但是我相信,在我未来的计算机生涯中,有无数需要它的地方,那时候我可能就能明白这门课对我而言的意义之大了吧。

引用牛助教的一句话:等着吧,好日子还在后头呢!

标签:OO,测评,作业,第一次,JML,第四,单元
来源: https://www.cnblogs.com/jiayi2002/p/16410168.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有