当前位置: 首页 > 编程学习 > 软件工程 > 面向对象 > 正文

面向对象构造与设计第一次总结

2018-04-22 来源:博客园/swearitagain

第一次作业:多项式运算

第一次作业是一个简单的多项式计算,然而对于完全没有接触过面向对象甚至java语言的我来说并不轻松。好在经过一个星期的恶补java语言,我最终还是写出来了一个假面向对象的多项式运算java程序。

类图:

由类图可以看出该程序结构简单,Tuples类中只有一个将字符型的多项式转化为二维数组的方法,而所有对数据的处理和管理都在主类中进行。这两个类共同处理公共的多项式数据,导致每个类的职责不明确,不具有自包含性。好在每个类中的方法的分工职责比较明确,没有出现单个方法规模过大的问题。

Bug分析:

这次程序唯一的bug在于正则表达式的一个小错误,数字位数上的限制不正确导致不输入数字也能通过正则匹配。

第二次作业:单部电梯(FAFS策略)

这一次作业对面向对象的要求高了很多。先从类图开始分析。

类图:

大致思路如下:主类的三个方法依次为读入数据、检查数据合法性以及报告错误;主类读入数据之后调用Manage类,后者的process方法通过对下层的四个类的方法调用,对数据队列进行处理并输出。电梯类(Elevator)存有电梯运行状态的属性,和每层的请求情况,以及查看、修改这些状态和请求的方法;楼梯类(Floor)同样存有每一层的请求情况和查看、修改这些请求的方法;请求队列类(RequestQueue)中唯一的属性是请求队列,类中有对队列元素操作和检查同质请求的方法。请求队列中的每一个元素都是请求类(Request)的实例,每个请求拥有类型、楼层、方向、时间四个属性和获得这些属性的方法。

从类图中可以看出我最大的问题在于Manage类只有一个方法,而这个方法的用途包含了遍历请求列表,处理电梯状态等。其次我将计算电梯状态和输出电梯状态放在了一个方法中。这些设计导致代码耦合性太高,逻辑不清晰。同时第一次作业中暴露的问题仍然存在,类和类之间并不独立。

OO度量方面分析:

可以看到在主类和请求队列类中的块嵌套深度偏大,还需注意减少嵌套深度。