面向对象第四单元总结

面向对象第四单元总结

本单元架构设计

Homework 1

UML图

分析

本次作业主要是对类图的解析,我在架构上对需要存储信息的结构比如UmlClassUmlInterfaceUmlOperation等进行了建模,在UmlInteraction中进行数据的处理和建模,并且在底层结构建模后第一次访问时相关信息时进行数据处理并存储,因为类图在建立后已经固定,这样不用每次访问时都重新计算,节约很多时间。

问题

本次结构的最大问题是没有考虑后续的拓展情况,以为后续的还是在类图相关上进行拓展,导致没有分出一个类来单独进行类图的建模,导致在第二次作业出现了状态图和顺序图后导致都在一个类中进行建模,过于臃肿。

bug

本次公测爆了几个点,是由于操作CLASS_ATTR_VISIBILITY访问类的属性可见性,在找不到相关属性时会报异常AttributeNotFoundException,即类中不存在属性,传入参数应该一直是开始访问的类和属性,但我的在查询到父类时就会传入父类的名字。

Homework 2

UML图

分析

本次作业相较上次就是添加了状态图和顺序图,图的建模工作和类图的基本相同,在自己构建的类里存储相关信息便于访问,状态图和顺序图的相关信息访问和存储也比较简单,没有什么坑点。

问题

没有良好的设计三个图的结构,导致三个图混在一起,结构比较混乱,也导致UmlGeneration代码几百行,代码可读性极差。

Homework 3

UML图

分析

本次作业的拓展是增加了对三种图结构的检查,所以本身的结构不需要变化,由于三条指令都涉及类图的关系查询,于是我新建了一个Graph类,在建模时建一张类图的关系图,其中存储类与类的继承关系,接口与接口的继承关系,类实现接口的关系,这样查询较为快捷,不用一层一层调用类和接口的方法。

问题

与前两次作业的问题类似。

OO架构设计与方法理解

架构设计总结

在面向对象四次单元作业的磨砺下,我对架构设计的理解有了很多新的认知。从第一单元三次作业,三次重构,到第四单元每次对上一次的代码基本完全不改动进行新的拓展,我也渐渐理解了架构设计的重要性和其中的魅力,因为重构真的是一件很难顶的事情,而在公司中软件开发重构肯定也是非常差的选择。所以,在每次作业开始前,都应该先对架构进行设计,一个优秀的架构在写代码时也会很快并且出现的问题较少,更防止出现写到一半发现想错了,然后再对已有的代码进行修改。

本学期还有一个很大的收获就是学到了很多全新的设计模式,其实也算是很多不同的架构思想,包括很常见的消费者-生产者模式在os理论课中也用了很多,感觉OO课学的很多思想不只是在写java代码中会用到,获益匪浅。

方法理解演进

本课程最重要的还是对面向对象思想及方法的学习,我最先学习到的是类之间的继承关系,类与接口的实现关系,多态,封装等等,我理解的对象就是对数据和相关方法的包装,类与类之间的各种关系包括关联、泛化、聚合、组合、依赖等等都是对象之间的交互。第二单元多线程的交互是我第一次接触同步互斥的代码实际实现,也感受到了多线程的思想,面向对象的方法对我的影响都是潜移默化的。

OO测试理解与实践

本课程我最大的遗憾就是没有进行充分的测试,因为我总觉得靠逻辑的斟酌可以代替测试,事实证明我还是太垃圾了。良好的软件设计应该包括架构设计,代码实现,软件测试各个部分,测试是软件设计中必不可少的一部分,在后续的其他课程学习中,我应该加强测试这一部分的付出。OO中测试我主要学会了自动化测试和Junit的同时使用,自动化测试从随机的角度进行大量的样例测试,Junit则从人为的角度设置一些边界的样例进行鲁棒性测试,但我还是经常修复bug,说明测试还是没有做到位。

课程收获

  • 面向对象的思想初步有所了解。
  • 学会了java代码的简单实现,能够使用IDEA实现代码并进行测试。
  • 了解了多种设计模式,并实现并使用了其中几种设计模式,包括工厂模式、生产者-消费者模式等等。
  • 学会了Junit这个插件对写好的代码进行测试,感觉十分方便。
  • 第三单元学习了规格,通过JML初步了解了规格的设计和使用及其重要性。
  • 在多次互测中(主要是前几次,后面就读不动了)阅读同屋其他同学的代码,提高了自己的阅读能力,也学到了很多优秀的设计。
  • 第四单元对UML图的解析让我对类和接口之间的关系加深了理解。
  • 弱侧一直WA看不到数据、公测爆炸、互测捅刀,锻炼了优秀的抗压能力,感觉以后进入社会很有用。
  • 收获真的蛮多的......

课程改进建议

  • 实验课没有反馈有点伤,主要也不知道理解的对不对,不一定必须看到多少分,但可以给一份标准答案以供参考。
  • 感觉互测大家都是自动化测试,不知道是否符合设置互测的初衷。
  • 其实没啥建议,我感觉OO很多地方已经做的很不错了,本课程体验真的不错。

OO课程体会

诚实地说,OO课绝对是我上过收获最大的课之一,是真的学会了很多东西,所以也十分感谢助教和老师们对本课程所付出的努力。其实在上面向对象之前,我从各种渠道了解到OO的标签是熬夜、互捅、任务量大等等,在一学期的课程结束后,这些标签完全没有问题,但是角度过于片面。OO其实很多样化,尤其是讨论版上大家各种思想,研讨课上大佬对自己见解的分享,互测时可以看看别人的代码架构,虽然强测时常常爆红会有点难受,但其实根本无伤大雅,重要的还是对知识的学习和理解。本学期的OO课由于疫情的原因也是全部远程完成,但完成度很高,也确实符合专业课的设置,非常棒!!

原文地址:https://www.cnblogs.com/djz666/p/13126704.html