OO第四单元总结~~

紧张刺激的一学期OO课程结束了,咸鱼们留下了悲喜交加的泪水。在说这整个学期的OO感想之前,先总结一下第四单元学到的知识。



一、第四单元总结

  这一单元我们学习了UML有关的内容。 首先是理论课学习了什么是类图,类与类之间都有什么关系,怎样在类图中进行体现。实验课学习了如何使用StarUML绘制UML图。

  第一次作业只有关于UML类图的查询,但是这一部分我认为实现的难度还是很大的。主要是第一次接触这样的作业,对于UmlElement解析出来的各个元素里所包含的各个内容都不是很了解,所以这两次的作业都多亏了有大佬在评论区扫除疑惑。

  第一次作业的难度主要体现在这几个查询上:查找顶级父类、查找类实现的全部接口、查找所有不隐藏的属性(因为要包括父类继承来的属性)。

  在这里就使用了暴力递归,差一个类的时候一直往上循环去找它的父类,在每一个类的一次向上循环中,就拾取并保存其所有父类的所有信息,以便于后来查询,比如所有父类的所有属性、所实现的接口,所关联的类等。

  全部接口的实现需要用到bfs,不过为了简单起见,我使用了一个循环

  其中inter是这个类和其父类直接实现的接口,interGene是表示了接口继承关系的一个HashMap<String,Arraylist<String>>,前面是该接口的id,后面是其直接继承的所有接口的id。

这次的结构主要就是自己建立了一个Class类,把UML图拆分好的信息又组合在了一起,形成了一个整体,把所有信息都存起来的做法看起来直观明了,但是缺点是可能会有一点点占用空间。



  第二次作业新加入了顺序图与状态图的查询,我感觉这两个部分都比较简单,唯一有一点值得注意的是,对于状态图的求后继状态,如果能够回到自身,就要把自身也算上…

  第二次作业主要的难点是3个rule的检查,001的难点在于读题(QAQ),是查询自己关联对端所在end的名字,而不是自己类所在的end的名字(悲)。

  002和003本质上来说是一个套路。这里面类与接口、接口与接口、类与类,继承与实现,关系很复杂,直接想的话会很乱,所以这里我觉得直接把继承、实现两种关系抽象为一种关系,即一个图中两个结点的单向边关系,并且把类与接口当成一种相同的结点,如果是继承,就由子结点指向父结点;实现,就由实现者结点指向被实现者结点,(由于接口不能实现类,所以在002的循环继承检查中,类与接口的结点无法形成循环边,所以直接在一次建图中把所有的继承与实现的关系全部加入进去就可以)。

  接下来就是紧张刺激的dfs时间,对于002来说,对于每一个结点,看看其能否通过某一条路径回到自身,这里有一个因为dfs的写法导致的易错情况,就是如下图所示的关系,

  这里写的时候需要注意不能在BC之间循环往复,否则可能会爆栈(别问我怎么知道的),所以可以设置一个表示每个结点访问次数的变量,访问这个结点的时候,如果访问过一次,就直接return.

  003的写法和002几乎一样,改变的是结束条件,即对于每一个结点,用dfs遍历全图,每访问某结点,该结点的访问次数+1,如果访问到某个结点,发现之前已经访问过,就可以直接结束递归,说明本次的初始结点存在重复继承。



  这两次的整体架构是分模块,即类图查讯类一个模块,顺序图一个模块,状态图一个模块,check也可以单独取一个模块,该模块只保存自己需要的那些信息。



二、对于这一个学期的OO总结(接下来是小嘴抹蜜时间)

  有一句话我一定要讲:我要夸爆这一届OO课程的改革组!感觉整体的改变真的太好啦,不论是课制还是互测,和之前的比起来好得没话说,成功的将6系的一个祖传的怨声载道的课程变成了一个真正能学到知识、学习体验很好的课程。我觉得所有的地方基本上没有什么不好的,除了这个强测点扣分的bug在修复了之后还要再扣一次分,我留下了亿滴泪,就亿滴(大悲怆)。

  感觉这一个学期的OO做下来,收获真的是很多的。最明显的是我感觉我的代码能力和debug能力都有了质的飞跃。

  预习的单元熟悉了JAVA的语法。第一单元的实现中主要是对架构设计与方法上有了更多的认识。第二单元就是大家闻风丧胆的电梯了,记得第一次作业我写了一个完全不是多线程的“多线程”,所以导致我当时完全没有理解什么是多线程,到了第二单元和第三单元我才搞明白什么是多线程,怎么样去设计控制器,怎么样去规划共享资源,这都是我所学到的东西。第三单元JML语言的学习,让我们更好的规范了代码,而且这一个单元,我感觉在代码部分最重要的就是算法和数据结构的使用,在这些方面要用心思考,否则一不小心就会TLE了。第四个单元的UML是一个上手比较劝退,但实际上后面写起来还是蛮带劲的东西,主要是一开始拿到指导书和解析出来的一堆东西完全不知道那是什么…

  总之,一个学期的OO愉快的结束了,作为一个bug修复界面“大宝天天见”的鶸,我觉得我的分数可能虽然不会很高,但是我还是觉得这门课对于我来说意义非常大,每一个工程,每一次设计,每一次调试,对于我来说都是满满的人生经验(六月加急.jpg)。

  最后,祝OO越来越好~祝老师和助教大大们暑假愉快~

原文地址:https://www.cnblogs.com/ziyeryyyyyyyy/p/11076528.html

时间: 2024-10-03 22:55:06

OO第四单元总结~~的相关文章

oo第四次博客总结

一.测试与正确性论证差异对比 测试,顾名思义,就是用一些有意义或无意义的输入去检测程序的正确性或鲁棒性,因其直观明了所以在写简单的程序时我们能迅速找出bug并加以解决.并且,这种方式是绝对客观的,只要和正确结果不匹配那么程序就一定存在一些问题.测试最大的缺点便是无法完全覆盖所有情况,即使很大的测试数据也可能跑不出来某些细微的bug,但这种bug有可能是致命的. 正确性论证则是从代码逻辑角度去分析代码,它的好处便是可以完全覆盖程序的所有情况并加以分析,只要分析不出错就能保证程序不出错,但这种方法的

规格化设计——OO第三单元总结

规格化设计--OO第三单元总结 一.JML语言理论基础.应用工具链 1.1 JML语言 ? JML(java modeling language)是一种描述代码行为的语言,包括前置条件.副作用等等.JML是一种行为接口规格语言 (Behavior Interface Speci?cation Language,BISL),基于Larch方法构建. ? 通过使用JML,我们可以忽略一个类.一个方法内部的具体实现,专注于描述方法的预期功能,从而把过程性的思考延迟到方法设计中,扩展了面向对象设计的原则

OO第三单元总结 JML

OO第三单元总结 JML JML语言的理论基础.应用工具链情况 JML是一种形式化的,面向JAVA的行为接口规格语言,它结合了Eiffel的契约方法和Larch方法,以及细化演算的一些元素,有着坚实的理论基础. JML最主要的语法有前置条件,后置条件,不变式,通过这些语法对输入和输出进行约束,也就是达成了一种契约.当模块实现后,只要输入输出满足这些约束表达式就满足了规格的要求.JML主要使用java的语法,除此之外还有自己的一些语法,比如/forall,/exist等等,来实现对输入输出的约束.

【面向对象】第四单元总结——UML

本单元构架设计 统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法.UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效. 本单元作业的主要内容是对UML类图.状态图和时序图进行解析和查询,并依照某些规则对UML类图进行检查.其中,课程组已经做好了将原始UML导出

第四单元练习题

<<<第四单元练习>>> 1.在student用户下执行find /etc -name passwd 命令,并管理其输出要求如下: * 显示所有正确输出,屏蔽错误输出 * 保存正确数出到/mnt/find.out,错误数出到/mnt/find.err中 * 建立/mnt/find.all文件,并且保存所有输出到此文件中 * 再次保存所有输出到/mnt/find.all中,并且保持源文件内容 * 屏蔽此命令的所有输出 * 显示此命令的所有输出并保存输出到桌面上的任意文件中

第二本书 第四单元总结

####################################第二本书 第四单元#############################################一.分区划分fdisk /dev/vdbThe device presents a logical sector size that is smaller thanthe physical sector size. Aligning to a physical sector (or optimalI/O) size b

第三、四单元总结

######第三单元###### ########################man命令########################### man  -->manual        ###man是手册缩写 man man               ###查看man命令的帮助 man passwd            ###查看passwd命令的帮助 man的级别 1        系统命令 2        系统接口 3        函数库 4        特殊文件,比如设备文

第四单元 &nbsp; 输出重定向及文件名 / 文件内容的字符搜索

第四单元 1.在student用户下执行find /etc -name passwd 命令,并管理其输出要求如下: * 显示所有正确输出,屏蔽错误输出 [[email protected] Desktop]$ find /etc -name passwd 2 > /dev/null  ###/dev/null为文件不可回收垃圾箱位置 * 保存正确数出到/mnt/find.out,错误数出到/mnt/find.err中 [[email protected] Desktop]$ find /etc

十三,十四单元总结

######################################################################unit 13########################################################################################### #############如何安装软件####################################1.软件名称识别###[abrt-addon-ccp