OO第四单元总结及课程总结

OO第四单元总结及课程总结

一、前言

  紧张刺激的OO“昆仑课程”接近尾声,经过一个学期的学习,我的收获和感触颇多,借此博客作业的机会,对自己OO这门课程做一个总结。本博客主要有以下五个方面,一是第UML单元的作业总结,二是课程期间架构设计及OO方法理解的演进,三是测试理解与实践的演进,四是自己的课程收获,五是给课程的三个具体改进建议。

二、第四单元作业总结

(一)第十三次作业

 1.任务摘要

  实现一个UML类图解析器,可以通过输入各种指令来进行类图有关信息的查询。

 2.要点分析

  理解UML类图的几个关键类型对象,并通过一系列数据结构来管理这些对象,完成查询。

 3.架构设计
 (1)主要思路:

   根据各类UML元素的职能,按照逻辑关系将其整合,构建出类似类图的结构,用Hashmap这一容器存储各类UML元素的信息并实现UML元素之间的索引交互。

 (2)类图:

(由于图片较大,看不清的话可以右键将图片转到新标签页,以下皆是)

  分析:构建了MyClass类和MyInterface类,各自包含Attribute和Operation,由于Operation与其参数Parameter是包含关系,因此创建MyOperation类,以Parameter为成员变量。其中,每个MyClass类和MyInterface类可以包含多个MyOperation类,这些底层模块的上层联系在MyUMLInteraction类里构建。

 (3)方法复杂度分析:

   分析:分析复杂性比较高的几个方法,其中MyUMLInteraction的构造方法复杂度最高,原因是在构造方法中我写了三个循环,将各类UML元素elements[i]中的信息提取出来并存储到相应的数据结构中,所以设计复杂度iv(G)高,同时,有许多复杂的判断语句和if语句,导致圈复杂度v(G)较高。

 4.程序bug

 (1)一个由于粗心导致的非常愚蠢的错误。在MyInterface类里存储MyOperation的HashMap未实例化,导致要往里存东西的时候产生异常报错。

 (2)在查询类实现的全部接口时,由于对接口的多继承理解不到位,采用一个fatherID变量存储,在出现某个接口继承多个其他接口的时候就会导致漏掉某些接口。修改方法为:每个MyInterface类用一个HashMap存储与其有Generalization关系的其他接口的ID,查询的时候遍历所有“父”接口。

(二)第十四次作业

 1.任务摘要

  在上次作业基础上,扩展解析器,使得能够支持对UML顺序图和UML状态图的解析,并能够支持几个基本规则的验证

 2.要点分析

  理解UML顺序图和状态图的几个关键类型对象,并通过一系列数据结构来管理这些对象,完成查询。理解类图几个基本规则的原理并实现其验证。

 3.架构设计

 (1)主要思路:

   类似上次作业,增加顺序图和状态图这两个相对独立diagram的结构,存储关键UML元素的信息,完成新增的查询指令。同时,在上次类图的模块中增加三条检查规则,检查重名、循环继承和重复继承。

 (2)类图:

  分析:与上次的类图相比新增了顺序图SubMap类和状态图StateMap类,这两个类几乎独立于类图相关的那些类,作为新的模块与MyUMLGeneralInteraction中构建出联系。值得一提的是,上次作业的架构并不好,封装性不强,很多代码都是在顶层类中完成的,导致这次作业产生了超行问题,其实应该将类图有关的所有代码都封装起来,从而使整个架构变得整洁。这次作业,与顺序图。状态图有关的许多操作都放置在了类自身里,而MyUMLGeneralInteraction类只负责调用方法并抛出异常。

 (3)方法复杂度分析:

  分析:除了由于设计架构(在构造方法中直接提取信息)导致的难以降低的复杂度以外,这次作业有刻意降低其他方法的各类复杂度,比如简化了条件表达式、使用更为简洁的代码、令函数携带参数 - 使用代参函数,强调函数的复用性等方法。

 4.程序bug

 (1)程序超时,产生CPU_TIME_LIMIT_EXCEED

 (2)检查R003时,应注意重复继承的类的子类也通过Generalization关系产生重复继承。

 三、架构设计及OO方法理解的演进

  回首课程整个学习过程,我的架构设计和OO方法理解的发展大概有三个阶段。

  • 第一阶段为“思维转变阶段”,通过学习大一的C语言程序设计课程和数据结构课程,我初步建立起面向过程编程思想,首次接触面向对象编程,第一步需要进行编程思维的转换:在分析问题时,学会把构成问题的各个事物分解成各个对象。
  • 第二阶段是“动手实践阶段”,在把问题分解成对象后,尝试在编程时具体实现:对象作为程序的基本单位,将程序和数据封装其中,以提高程序的重用性,灵活性和可扩展性。在这个阶段,设计时争取遵循七大原则:SOLID原则(单一职责原则、开放关闭原则、里氏替换原则、接口隔离原则和依赖倒置原则)、迪米特法则组合、优于继承原则(合成复用原则)。同时,在架构设计方面,尝试运用24种设计模式。比如:工厂模式、单例模式等。
  • 第三阶段是“形成习惯阶段”,在一次次的作业中,用OO思想分析问题,欣赏学习他人优秀代码,努力形成面向对象编程的习惯,提高面向对象编程的能力,使自己的程序变得更好。

四、测试理解与实践的演进

  回顾课程整个学习过程,我的测试理解与实践大概有四点方法。

  • 第一点是“肉眼观察”,通过walk through发现程序中的漏洞,在面向过程编程时,这种方法还算有效,毕竟代码一步一步的过程很明晰,错误也很容易找到。但是在面向对象编程时就不是很好用了。
  • 第二点是“构造边界测试用例”,这种方法需要极高的逻辑性,需要对输入需求有充分的理解。
  • 第三点是“System.out”方法,在多线程单元,线程之间的关系错综复杂,传统的断点调试方法已经不适用,我回归到原始的输出调试,在可能的地方输出标志语句,使程序的运行过程可视化,从而发现问题所在。
  • 第四点是“JUnit单元化测试”,可以使用OpenJML、JUnitNG自动化生成测试用例,抛却底层实现,而是着眼于“输入”与“输出”的顶层正确性,不关心具体的代码实现。

五、课程收获

  • 第一单元是多项式求导单元,这一单元主要收获有:Java语言的初级编程技术、正则表达式匹配字符串、面向对象的思想、面向对象程序的构成、对象与类的概念、对象的特性、可变性、类的属性和方法、类的继承多态抽象等。
  • 第二单元是多线程电梯单元,这一单元主要收获有:Java系统概览、JVM的基本结构、内存划分、对象方法调用、利用JProfile对程序进行分析、多线程程序的概念、处理方法、多线程并发时常见的线程安全问题、线程安全问题的解决方法、如何进行安全的设计、OO程序的分析与设计原则等。
  • 第三单元是JML单元,这一单元主要收获有:规格的概念、JML语法、方法、类的规格、继承层次下类规格之间的关系、基于规格的测试方法、OpenJMLJUnit等测试工具的使用、数据抽象规格等。
  • 第四单元是UML单元,这一单元主要收获有:UML语言、UML类图、UML顺序图、UML状态图、程序系统的理解、描述、StarUML的使用等。

  早有耳闻OO课程会让大家苦不堪言,的确,看不懂指导书、写不出程序、强测炸掉没进互测、互测被人刀几十下,这些都是会让大家痛苦的东西,但是,痛苦能激励我们不断学习,如果每个人都做得很好,很水的过了这门课,短期内看起来很轻松幸福,但是从长远看,这些东西在你脑子里只是如一道流星一般划过,留下的只有美好的记忆而不是坚实的知识,而我们的OO,就像一块大陨石,狠狠地砸到你身上,不仅能把知识留下,还能砸出一个巨大的陨石坑,方便以后用知识对其进行填补(笑)。

六、课程建议

  1. 合理安排理论课和实验课的内容,尽量避免上午讲、下午实验的现象。
  2. 适当减少互测屋人数,个人认为四人一组为宜。如果可能的话,可以安排一个智能测试机器人,构成五人小组。
  3. 研讨课可以增加一个讨论时间,坐在一起的同学分小组讨论,这样同学们之间更方便直接地互相交流(因为站起来提问有时候会准备不够充分,而且不好沟通)。
  4. 建一个课程通知大群微信群,重要的通知(如时间节点啥的)发布在群里,因为同学们不可能天天守着课程网站的讨论区去看通知。

转载于:https://www.cnblogs.com/lwt-0521/p/11074609.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值