一.两次作业
UML语言介绍:统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。在uml中不用关注细节而只要关注对象的属性,操作,状态,时态等就可以了。
第一次作业:我将输入进行了树状存储,首先要将元素分类,第一层:类和接口,第二层,属性操作参数等。还有一类为类间关系,继承关联等,这类用数组单门存储。这样结构很清楚了,写起来也比较容易。
第二次作业:增加了三个需求:输入检查、状态图查询、顺序图查询,其中输入检查是对类图进行输入检查,主要是检查类图的模型有效性,状态图和顺序图则是新的UML图。可惜,并未完成,原因在于没有把题意搞清楚。
二.四个单元及oo方法理解
第一单元:第一单元作业是关于多项式求导,依次为幂函数求导,三角函数求导,复合函数求导。第一次作业是第一次接触并没有想太多,只写了一个类,过程也十分简单,就是合并同类项之后输出时,系数为指数,指数为指数减一,并没有想过后续的作业,只想着能解决问题就好。第二次作业时发现,第一次作业完全没用了,只能重写,但我仍不死心,第二次作业的元素有x,sin,cos三个,所以我就自己推导了一个a*x^b*sin^c*cos^d的一个公式,照着这个写,倒是也写出来了(原谅我的无知);第三次作业发现,第二次作业也不能用,这才死心,这时候的架构是将因子,项,表达式各写了一个类,不过出现了循环嵌套的情况,我又单门写了一个类来解决这个问题。
第二单元:第二单元作业是多线程电梯,没想到的是第一次作业就是多线程,第一次作业虽然简单,但是我对多线程理解还费了不少时间,明白原理之后就轻松多了。第二次作业,是捎带电梯,如果没有限定运行时间的话,利用轮询其实难度骤减,可惜。只好换了种思路,用一个数组存储电梯要停的楼层,我叫运行队列,剩余的存到我叫等待队列,也就是说当有输入时判断是否进入运行队列否则进入等待队列,这样大大减少了时间复杂度。第三次作业,为多电梯捎带,难点在于三部电梯的调度策略。总之作业写的很糙,不过我还是学到了很多,把常见的事物作为作业对象,让人很容易想明白。
第三单元:这个单元简单来讲,就是照着规格写代码,这次作业利用了很多图论算法,简单来讲就是用oo写数据结构。不过只要是代码那一定离不开算法,数据结构的,重要的是如何选择一个高效的算法。
第四单元:这个单元简单来讲就是照着类图写代码,需要我们自己封装一些类。第二次作业对题意理解要求高。
三.测试理解和实践演进
以前就是简单的测评机测评。
第一单元和以前相差不大,就是要写好正则表达式,以及尽可能的想到多的情况。
第二单元真正体现了测试的重要性,要通过一些方法来进行定时输入。
第三单元测试代码有没有符合规格。
四.课程收获
通过这十几次代码作业编程能力有了提升;java语言越来越熟练;测试方法更加多样;北航计算机系难
五.建议
互测人数较多,一个一个测的话太费时间了;其实相当一部分同学在之前是没有接触过java的,能否在大一的时候有个先导课呢;在前几次作业能否宽容一下,毕竟是第一次接触这门课程。