第一次做业是多项式计算,只使用了一个多项式类。第一次接触面向对象的程序,还比较生疏,不是很能理解面向对象的思想。将读入,处理,计算,都放到了main函数中,结果main函数写的过于冗余。正则表达式
这是第一次做业的度量分析,分析发现第一次做业的main函数,写的过于复杂,没有体现出面向对象高内聚,低耦合的思想。函数
我在第一次做业中创建了两个对象,polyNow和polyAns,每次将新的多项式 polyNow 经过poly类的add或者sub方法加或者减到 polyAns 中。最后polyAns中存放的即为最后答案。测试
在读入方面,我使用了正则表达式来判断是否合法,以后再用正则的find方法来获取各个多项式。spa
在作第一次的程序时,曾出现过当读入层次复杂,项数多,个数多的多项式时,会出现程序爆栈的问题。经检查后发现是正则表达式过于复杂,致使迭代层数过多,以致于崩栈。以后采起了将读入的字符串分割后再进行正则表达式匹配的方法,解决了问题。设计
第一次做业,互测时主要从测试对方输入格式是否判断正确的方面来测试。测试各类特殊状况如前导零,正号等。3d
第二次做业,我对面向对象的思想有了必定的理解,将整个电梯程序分红了6个类,电梯类负责控制电梯状态,楼层类负责控制楼层内外的按钮和指示灯,请求类负责解析请求,请求队列类负责对须要执行的请求进行存储,判断等,最后经过电梯控制类来对各个类进行交互协调,进行电梯的调度和楼层灯的控制。对象
对于电梯的调度方法,我使用了两个队列,一个队列用来储存执行队列,一个队列储存还未发出的请求。当执行队列为空时,从请求队列中取出一个合法请求加入执行队列。当电梯运行时,判断当前过程当中有那些请求被发出,并判断是不是同质指令,而后将合法指令加入执行队列。最后更新电梯状态,而后取出执行队列第一个命令继续运行。blog
第二次做业写的比较顺利,在作出正确的设计后,写完后没什么bug了。易错的地方可能在一些电梯开关门的边界处理。队列
第二次做业,我写了一个自动生成随机输入数据的程序,而后经过批处理指令来将本身的程序和对方比对。然而没跑出对面什么bug。。字符串
第三次做业在第二次做业上加入了捎带的功能。
对于新加入的捎带功能,个人理解是:由于在每次电梯运行过程当中,必定会捎带运行中电梯内发出的指令的最高层。因此我将每次电梯运行再也不以主指令为单位,而是在每次运行中,找到当前方向上能捎带的最高层,当次电梯运行就从当前楼层直接运行到最高层,而且将这一次运行中须要捎带的请求转化为此次运行中须要停靠的楼层。
因而一次运行流程就转化成:首先寻找本次运行方向上的最远楼层,而后在运行过程当中判断同质指令,并将各个停靠的楼层的请求输出,而后再执行下一条指令,进行下一次运行。
这一次在作做业的过程当中,我在电梯开关门的过程当中的同质指令判断有些问题,在对边界问题进行分析后解决了问题。
对方在数字前的正号的判断处理出现了问题,其他在程序运行方面没有出现什么bug。
经过这三次的oo做业,我对面向对象的思想有了更深入的认识,了解了高内聚低耦合的设计理念。在第三次做业中,我对于程序的设计还不是很完善就草草开写,然而我在写完以后发现本身的设计有着许多没法解决的问题,致使我又对程序进行了从新设计并书写。但愿本身在之后作做业的过程当中,更重视本身的设计,先设计好再开写,每每会事半功倍。
祝你们假期快乐,oo加油!互测能少点戾气多点和谐~祝oo课程能顺利运行