oo第一次博客
1.第一次作业: 在一个java文件中有三个不同的类:class inputstring \ class jisuan \
Public class caculate.
Inputstring类主要解决输入字符串及对字符串进行语法匹配检查的问题。属性个数有一个方法个数有四个,分别进行字符串的赋值,字符串的返回,去除空格和语法检查,其中语法检查的方法规模较大。前三个方法没有涉及控制分支,因为都是必然操作。最后的方法有6个控制分支,通过这六个分支排除了不合法的输入及报告错误。
类的总规模在50行左右。
Jisuan 类主要解决对输入的合法的多项式进行计算的问题。有两个属性,分别是字符串和保存结果的数组。有两个方法分别负责数组的初始化和对多项式计算。第二个方法的规模较大,第一个方法很简略基本可以忽略其规模,也没有分支控制语句因为也是必然操作。第二个方法有3条分支控制语句判断符号,幂数重复的检查。
类的总规模在70行左右.
Caculate类调用前两个类的方法实现最终的完整的多项式计算的功能。规模很小,无分支控制语句。
优缺点评价:最大的优点是正则表达式的运用,极大地完成处理要求的同时,精简了代码,简化了问题省了大量的时间精力去设计其他部分。代码的模块化实现得好。
缺点是代码部分地区稍显繁琐,存在进一步简化的可能。
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个方法。
类图:

感想与体会:通过三次作业,我觉得前期有效的设计可以为后面的开发减轻不少负担,要尝试着去找到符合问题本身的模型并将反映到代码上。要学着去找到那些有效的工具,比如:正则表达式等等。总体来讲代码具体的实现能力必须要为上层的架构服务,这样的设计才是符合工程需要的。所以在今后更加地要注意前期的设计。
浙公网安备 33010602011771号