OOA(面向对象分析) 分析甲方需求,通常需要画一些类图。
OOD (面向对象设计) 搭建一个框架
OOP(面向对象编程) 实现出来
主要是考察设计出类和方法,以描述生活中真实的对象。一般做OOD题目,5-7个类差不多,而且到问清楚需求可能已经到Core object的时候可能已经过了10分钟
解决方案:(来自九章)
5C分析法:
1.碰到一个题目的时候,一定要先沟通,不能盲干,3W原则(What是什么[提出名词进行询问],How规则,Who主体)
OOD的思考:不去思考怎么把车开到停车场,而是考虑有量车来了,然后停车场返回一个车位。
例如让你设计一个电梯系统,你可以考虑是什么样的电梯,电梯的调度规则是什么,主体以实际设计的系统为主(这样的效果就是你的系统主要方法都以这个类为中心)
2.定义一些核心类,并分析对象关系[哪里对象是其他对象的数据成员,对象之间一对多,多对多的关系](从核心名词开始考虑,然后考虑输入,输出)
3.研究一些用户案例(用一句话说出这个类要做什么事情),这个过程能够理清楚自己遗漏的对象(想象对象可以执行的关键动作,这样可能发现自遗漏的对象)
对于System : handle requset
对于elevator: 接收外部的请求,接收内部的请求,开门,关门,检查重量(这样是不是违反了单一职责原则?)你觉得作为面试官,还需要实现什么功能吗?
对于Button :按下按钮
4.画类图,呈现出你的方案
5.检测自己的设计(SOLID原则)
I:接口分离原则 不应该强迫一个类实现它用不上的接口
D:依赖反转原则 抽象不应该依赖于具体实现,具体实现应该依赖抽象。
最后关于电梯的规则可以使用一种设计模式:策略模式