OO第四单元作业总结

一、本单元两次作业的架构设计  

1.第一次作业

1.1UML图

    

1.2类介绍

1.2.1容器类:

包括AssociationContainter, AssociationEndContainer, AttributeContainer, ClassContainer, GeneralizationContainer, InterfaceContainer, InterfaceRealizationContainer, OperationContainer, ParameterContainer。负责存储要解析的UML图中的所有元素,并为相应的元素声明与解析该元素相关的函数。

1.2.2解析类:

MyUmlInteraction类,本项目的主要功能实现类,调用容器类存储UML图中的元素,调用容器类中声明的方法实现相关函数。

1.2.3主类

Main类

1.3主要思想

首先为相应的元素新建对应的容器类,容器类可采用ArrayList存储,如此可利用容器存储解析的UML图的所有元素。

然后依次实现各指令,即完成各函数。对于继承获得的方法、属性统计等,利用宽度优先遍历即可比较简单的实现。

2.第二次作业

未完成

二、四个单元中架构设计及OO方法理解的演进

1.第一单元

  主要还是面向过程编程,OO思想体现的并不是特别明显,但也有一些OO的影子。 

  采取的主要架构是由多项表达式到单项表达式到基本因子(常数、幂函数、正余弦函数),将一个多项式拆解成多个单项式相加的形式,再将一个单项式拆解成常数*幂函数*正弦函数*余弦函数的形式,然后对该单项式进行求导,把每个单项式求导结果相加即为多项式求导的结果

2.第二单元

  多线程作业对OO思想的要求比较高,从本单元也真正开始OO编程。

  主要架构分为三个类:调度器、电梯、输入。调度器类:内含三个ArrayLIst分别存储所有请求、电梯内的请求、可被捎带的请求。一个请求经历的路径为所有请求——可被捎带的请求——电梯内的请求——完成。输入类:线程类,输入请求,并将请求存储到调度器类内的可被捎带请求ArrayList。同时确定程序终止的条件。电梯类:线程类,实现电梯的基本功能:静止、上行、下行、开门、关门、进人、出人。电梯每个循环依次完成下人、刷新可被捎带请求序列、上人、电梯运行。电梯运行前需要判断电梯是否需要停止运行,停止的条件为电梯内没人、没有可被捎带的人、所有请求中没有使电梯先上再下或先下再上的。针对不同作业只需要增补一些判定、函数即可。

3.第三单元

  本单元我认为是OO思想体现最明显的一个单元,三次作业也层层递进,只需要利用继承上次作业,然后再补充一些方法就可完成本单元作业。

  主要架构是路径到无权图到有权图,在相关图中实现与该图相对应的方法。

4.第四单元

  本单元思路很清晰,就是利用容器类存储相关元素,然后针对相应的方法对相关的元素进行适当处理即可。

  架构为一个解析类——多个容器类。具体方法如上所述。

三、四个单元中测试理解与实践的演进

  从第一单元只会看代码尝试、对拍器碰运气,到后来针对不同测试点进行压力测试、特例测试等等,对测试的理解越来越深刻。在测试过程中,不仅仅是为了找错,还有理解别人的代码架构和算法,从中吸取知识,提高自己的变成能力。

四、课程收获

  首先是掌握了Java这门语言,而且学会了阅读语言自带函数的实现过程。

  其次理解了面向对象,掌握了面向对象编程的方法。

  此外,还学会了如何去测试一个程序,提高了自己的测试能力。

  最后,提高了自己的抗压能力。在每周一个项目的压力下,熬夜、改Bug、看代码成了常态,但经历过才知道这一切都是值得的。

五、课程具体改进建议

  1.实验课改进。这学期感觉实验课很迷糊,在对相关知识还不是非常理解的情况下就去进行实验,效果并不是很好,对于能力提高也没有很大的帮助。是否可以将实验课放在本单元的第二个周?

  2.减少互测屋成员数量,我认为4人左右(包括自己)比较合适。在互测过程中,我发现要看7个人的代码并理解这个工作量有点大,有很多人甚至直接使用对拍器并不去看其他人的代码,这样的测试其实没有多大意义。

  3.强测可单独选择进行,可以在一个人中测结束后选择是否强测,若选择则进入强测,此后至bug修复不可提交代码。这样可以让大家对互测屋有更加清晰的认识,同时对于bug较多的选手有更长的改代码的时间。

posted @ 2019-06-24 12:15  无奈的小Jerry  阅读(139)  评论(0)    收藏  举报