1、本单元两次做业的架构: 算法
本单元两次做业的架构基本是一致的,因此两次做业的架构就一块儿说了。编程
为了不查询时出现同一个结果反复计算的状况(连续两次查询一个类的顶级父类,若是咱们在查询的指令中来计算其父类,那么就须要进行两次重复的计算。)然而若是咱们在实现Umlniterface接口的时候,就根据已经解析好的elements信息来把可能会被查询的全部数据都提早算出来存好,查询的时候就把他提取出来就能够了。多线程
基于这种考虑,这两次做业我采用了这样的结构:首先,用一个类来实现官方给出的接口,这个类只有接口给出的查询功能。至于具体要查询的内容,须要另外建立一个类,这个专门用来存放和构建各种查询会用到的hashmap。架构
2、我对面向对象概念理解的演进:异步
面向对象课程的第一单元,是和咱们之前学的c语言这样面向过程的基本无差异的内容,这一单元中,主要仍是在熟悉c语言的语法结构,但同时,在第一单元三次做业的不断重构和优化的过程当中,我也慢慢体会到面向对象的封装性的好处,这个好处有两个方面,首先,一个具备良好封装行的代码,比较容易修改,由于不一样类之间不少内容彼此之间是不可见的,这带来的好处就是,你在修改一个类时,不用考虑另一个类的太多牵扯;其次,两外一个好处就是,良好的封装性通常也就意味着一个优秀的架构,一个优秀的架构能让你在写代码时思路更清楚,同时写出来的代码也更具可读性,具备更良好的可修改行。第二单元的做业,专一于多线程,这是我以前从未接触的一种编码思路。第三单元是jml语言的学习,经过这一单元的学习,我体会到了在编写一个工做量比较大的代码时,如何与人协做,固然,在这一单元的代码性能要求也是我以前没接触过的,在写这一单元的做业时,我学习了不少优化性能的算法。第四单元是uml的学习,这一单元感受上做业的内容,重点和难点都不在uml上,而是统计uml的算法,本质上和第三单元没太大差异。性能
3、课程收获学习
面向对象课程给我最大的收获有两个方面。首先,面向对象是一种不一样于我以往所学习的编程思想,他是针对的不是事件执行的过程,而是参与事件执行的对象。好比电梯从1楼到5楼的过程,以面向过程的思路来看待这件事儿,就是单纯的电梯前往乘客所在的楼层——>电梯开门——>乘客进入电梯——>电梯关门——>电梯运行到目的楼层——>电梯开门——>乘客出电梯,这样一个事件的完整执行过程,然而若是从面向对象的角度来思考这一过程,就要分为两部分来思考——乘客和电梯,乘客有名字,出发楼层和目标楼层等属性,以及进出电梯的方法,电梯有停靠楼层的属性,以及向上下运行,开关门的方法。而后用电梯对象和乘客对象的这些属性和方法来组成整个事件。测试
面向对象给个人另一个收获,是对于多线程的理解。多线程对于我来讲是一个全新的概念,线程之间同步异步,交互以及死锁,是一种全新的写代码须要考虑的因素。优化
4、对课程提出的几点建议编码
(1)首先是对于互测环节的一点吐槽(针对第三单元),因为第三单元互测的数据量都很大,因此从数据从数据上很难找到本身程序中在强测以前就没找到的问题。并且,更为重要的一点是,不少bug是性能上的问题,这个优化要知足大佬们数据的要求真的很难,就出现了被狼人狂刀而没法自救,心态炸裂的问题。
(2)而后是关于强测数据点给分的问题,因为不少时候强测数据都会不可避免地对一个问题进行反复测试,这样就会出现因为一个bug而却是全盘崩溃的局面,建议debug阶段,对于强测部分的debug,若是是合并修复,可以返回多一点儿的分数。