BUAA_OO_2022 第四单元总结

BUAA OO UNIT4

第四单元架构分析

第四单元主要是对UML的解析,总体而言需要注意的是对题目中描述的方法的理解,以及合适的数据类型的选择。由于是迭代开发,这里呈现的是第三次作业中的各类中的各种元素。

 

属性的编写

对于各个UMLElement中的各种属性,我采用的是HashMap存储属性id和对应的属性本身。若有需要根据属性名称查询具体属性的方法,则添加以name为key的HashMap,以ArrayList存储属性。这样可以解决大部分的查找问题。

第一次作业解析类图的相关元素,主要难点是耦合度的计算,根据对图的理解也可较为方便的解决。

第二次作业添加了顺序图和状态图,难点是对各元素涉及到图相关算法的实现。

第三次作业添加了规范性的检验,难点是R003、R004循环继承和重复继承的判断。也是图的相关知识的体现。

checkstyle

本单元作业中最大阻力就是类行数超标,不得不将其中的方法提取出来,在单独的方法类中实现。其实这样强迫自己对结构有更好的认识,让整体分布清晰,自己对错误的检查十分有利。本单元采用两个方法类,其一是对元素输入解析方法以及查询方法的综合,其二则是对Rxxx错误类型检测中方法的综合。

总体而言,第四单元颇似第一单元的再现与拓展,体现了面向对象封装、继承、多态的特征,也充分展现图论相关知识。

OO课程总结

对我而言,本学期oo课程可以说是每周一次的磨炼。在磨炼中不断找到面向对象的内涵和精髓。

UNIT 1

第一单元是对表达式的解析,从开始接触面向对象时不知所措,对于题目无从下手,到最后的从容。在这一单元中主要使用的是递归下降解析表达式,第一次作业对方法的使用有偏差导致第二次作业时重构相应内容。第二次作业预判了第三次作业中嵌套括号的解析,相对而言最为轻松。这一单元是对面向对象的全面理解,充分展现了面向对象的知识。

UNIT 2

第二单元是通过电梯调度实现多线程机制。这一单元中最大的问题就是对线程互斥以及死锁的解决,死锁的排查是我在这一单元中解决最多的问题。对于调度相关策略,我使用的是look算法,在第二次作业中横向电梯调度没有转化好导致不少bug,甚至影响到第三次作业的实现。在环形电梯调度的过程中,我使用的是对随机分配人员,没有出现较大问题。

UNIT 3

第三单元主要是在JML规范下编程,只需要在已有架构下填写并实现相关函数即可。本单元最大的困难可能就是对JML语言的理解,由于语言本身的特性,JML对于图论等内容的描述有些过于繁琐,在解析过程中受其困扰。相关算法倒是比较熟悉,算是对数据结构课程的复习和补充。

UNIT 4

第四单元是对UML的解析,将UML描述内容重新编成一张“网”,我觉得是对第一单元的扩充,对于经历一学期面向对象内容而言,这一单元的实现相对轻松,找准每个类中需要包含的内容,能够很好的实现相应算法。

测试分析

本学期oo课中主要的测试方法还是构造随机数据进行测试,但是由于每次作业完成的时间较晚,对于自己代码的测试不太够。

课程收获

OO课程首先是给我带来了每周一次的磨砺机会,这种被作业反复追赶的感觉从未体会到。。。

OO课程也让我学到了递归下降、电梯调度、多线程并发、JML书写、UML再现等知识点。让我感受到面向对象封装、继承、多态的具体含义。对于图论相关算法的理解和使用在oo课程中也得到了进一步的训练。

除此之外,我还感受到了一个好的架构应有的模样,好的架构能够让迭代开发更加顺利而不会出现中途多次重构的惨状。

课程建议

  1. 第一单元第一次作业相对而言是我做的最为痛苦的一次作业。对指导书描述不熟悉,对面向对象思维不熟悉,都让我在面对第一单元第一次作业时有些无力,有些无从下手。希望能够在第一次作业时多一些指导,但可能这也是希望我们能够在短时间内快速掌握相关技能,但不免有些过于激进。

  2. 对于研讨课相关内容,组内同学往往是在某个同学的带领下完成研讨,而研讨过后的总结等之类的内容基本上都是由一个同学完成,组内交流并不十分充分,在类似第二单元的讨论中,同学们的实现方法基本相同,每个人分享的内容也大体相同。在与其他同学交流过程中得知,某些组可能讨论大部分内容都由某一位同学完成。。这可能和同学们对研讨课重视不够有关,但是作为一门实验课,我认为安排交流空间对于完成总体实验有较大的帮助,特别是在单元较难时,好的分享可以提供另外一种思路。我认为可以增加研讨小主题或者课题,或许有可能在理论课时就将研讨主题发布?这样在研讨中能每个人都有自己不同的想法,组员能听到不同的东西。

  3. 最后是对评测机构建教程的补充,对于有搭建评测机想法但是没有什么实践基础的同学而言,希望课程组能够给一定的评测机搭建指导,以更好的优化自己的代码和开发水平。

posted @ 2022-06-29 10:38  tiderem  阅读(7)  评论(0编辑  收藏  举报