oo第一次博客

 1.第一次做业: 在一个java文件中有三个不一样的类:class inputstring \ class jisuan \java

Public class caculate.正则表达式

Inputstring类主要解决输入字符串及对字符串进行语法匹配检查的问题。属性个数有一个方法个数有四个,分别进行字符串的赋值,字符串的返回,去除空格和语法检查,其中语法检查的方法规模较大。前三个方法没有涉及控制分支,由于都是必然操做。最后的方法有6个控制分支,经过这六个分支排除了不合法的输入及报告错误。数组

类的总规模在50行左右。架构

Jisuan 类主要解决对输入的合法的多项式进行计算的问题。有两个属性,分别是字符串和保存结果的数组。有两个方法分别负责数组的初始化和对多项式计算。第二个方法的规模较大,第一个方法很简略基本能够忽略其规模,也没有分支控制语句由于也是必然操做。第二个方法有3条分支控制语句判断符号,幂数重复的检查。模块化

类的总规模在70行左右.工具

Caculate类调用前两个类的方法实现最终的完整的多项式计算的功能。规模很小,无分支控制语句。spa

优缺点评价:最大的优势是正则表达式的运用,极大地完成处理要求的同时,精简了代码,简化了问题省了大量的时间精力去设计其余部分。代码的模块化实现得好。设计

缺点是代码部分地区稍显繁琐,存在进一步简化的可能。blog

 

Bug分析:因为运用了正则表达式较好地解决输入端匹配的问题,因此未发现bug。接口

发现bug策略:可将全部不合法输入列举出来列成表格,而后以交叉联合的方法进行排列组合使用穷举的方法完备地发现可能存在的bug。固然在阅读代码的配合下可将一些明显的不会产生bug的输入选择剔除表项,进一步地缩小搜索范围便于更快地定位Bug。

 

 

2.第二次做业:我建了6个public类:Elavator \ Floor \ main \ Request \Requestqueue \Scheduler

Elavator类共有2个属性,5个方法,分别实现返回时间,楼层,电梯运动状态,给楼层赋值,计算上下楼层所需时间并更新当前楼层的功能。负责计算的类规模较小,有三个控制分支。

Floor 类有一个属性,有一个方法,该方法规模很小无控制分支,负责返回楼层。

Request类有4个属性,6个方法,分别实现返回目标楼层,时间,请求类型 ,电梯运动方向,对这些变量的赋值和计算赋值。其中负责计算的方法有三个控制分支。规模较小。

Requestqueue类中有2个属性,3个方法,方法规模都很小,只负责返回请求,计数及将新的请求加入到队列。

Scheduler类中有2个方法,其中一个用于创建队列处理输入有14个控制分支,规模较大有100行左右,另外一个用于判断输出有2个控制分支,规模较小在20行左右。

Main类规模很小,是调用了Scheduler类中的方法。

类之间的关系:Scheduler类调用了Elavator类,Request类的方法实现输出。

方法之间的关系::Scheduler类的scheduler方法分别调用了Elavator类的用来返回计算时间,电梯运动状态,楼层的三个方法,Request类的用来返回时间,请求,计数的三个方法。

优缺点:优势是设计的较为合理,模块化好。能较好地实现设计要求。

缺点:应使用正则表达式处理输入,精简代码的同时减小错误的发生。

Bug分析:输入的数字为字母时会发生crash,没有考虑这种状况。

 

 3.第三次做业创建了7个类Elavator \ Floor \ main \ Request \RQueue \ Foolscheduler \ ALS_Scheduler \ Moveable:接口

Elavator类未改。

Floor类未改。

Main类调用ALS_Scheduler方法实现完整功能。

Foolscheduler类未改

Request类有6个属性12个方法。在第二次做业的基础上加了8个方法用来返回时间,目标楼层,队列情况,请求类型等信息。还加了tostring方法(未用)。

ALS_Scheduler类有4种属性2种方法:dispath 和 setqueue 规模较大都在100多行。

Moveable接口有两个方法,用于时间和电梯情况。

RQueue类有2个属性,7个方法。

类图:

 

 

 

 

感想与体会:经过三次做业,我以为前期有效的设计能够为后面的开发减轻很多负担,要尝试着去找到符合问题自己的模型并将反映到代码上。要学着去找到那些有效的工具,好比:正则表达式等等。整体来说代码具体的实现能力必需要为上层的架构服务,这样的设计才是符合工程须要的。因此在从此更加地要注意前期的设计。

相关文章
相关标签/搜索