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:依賴反轉原則 抽象不應該依賴於具體實現,具體實現應該依賴抽象。
最後關於電梯的規則可以使用一種設計模式:策略模式