公司招聘項目經理的一道面試題

 

題目:在一個農場裏有農場主和奶牛,農場主每天爲奶牛擠奶;現在把農場主和奶牛分別看作是一個對象,你認爲應該把擠奶這個屬性分配農
場主還是分配給奶牛比較合理?

首先這是一道關於面向對象編程的問題,主要考察你對面向對象的理解程度,所以應該用面向對象的思維方式來思考這個問題
觀點不外乎有以下兩種:

觀點1:分配給農場主;

觀點2:分配給奶牛;

首先我們來看第一種觀點:這種觀點認爲“擠奶”這個過程是由農場主來完成的,所以理所當然應該是農場主的屬性。

如果你這樣想的話那就中了主考官設下的圈套,其實這道題目真正考察的是當是你設計程序的時候有沒有考慮到它的可維護性和擴展性;

其實完全可以把這個問題抽象成另外一種模型:“擠奶”這個屬性是奶牛的,但是可以由農場主這個對象去調用它。這樣的話如果以後業務有變更,比如說農場引進了一套自動化的擠奶設備,那麼就可以由設備去調用奶牛“擠奶”這個屬性。以後奶牛由別人飼養了,也可以調用這個屬性。

關於編程建模中這樣的例子還有不少,比如員工工資問題,公司有老闆和員工,按照我們日常經驗理解,給員工加薪是老闆說了算的,所以“加薪”這個屬性 應該是分配給老闆這個類,但是如果這麼做的話也犯了和上面同樣的錯誤,因爲工資是員工這個類的數據,所以最好由自己內部的屬性和方法來處理它,別的類如果 要修改它的數據可以調用它自有的方法。這樣才能做到高內聚,低耦合。這也是程序可維護和擴展的前提條件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章