這一章節我們來討論一下怎麼理解物件?
1.服務提供者
物件:**於「object」,中文說的比較抽象,個人更傾向於台灣香港的譯法「物件」,個人實實在在的感覺,不用那麼虛,當然,如果叫例項也是比較好理解。
物件,我們可以想象成服務的提供者。它包含了一組資料以及一些可執行的方法。
例如:
package com.ray.ch01;
public class bird
public void setname(string name)
private void say()
public static void main(string args)
}
在上面的**裡面得出:
bird,我們稱為類,其實它就是我們自己定義的資料型別,對映實際世界裡面的「鳥」。
在main方法裡面的bird1和bird2,我們稱之為物件,或者例項,或者物件等等,這兩個例項屬於了bird這個資料型別,裡面含有name這個屬性,還有say這個方法。
這裡,我們可以把bird1看作服務提供商,這個物件給我們提供say這個執行的方法。
2.分解物件
上面提到服務提供商,那麼我們可以引入下面例子。
例如:黑白雙方在設計五子棋時,可分為行為是相同的黑白雙方,負責繪製畫面的棋盤系統,負責判定犯規、輸贏等的規則 系統。第一類物件(玩家物件)負責接受使用者輸入,並告知第二類物件(棋盤物件)棋子布局的變化,棋盤物件接收到了棋子的變化就要負責在螢幕上面顯示出這種 變化,同時利用第三類物件(規則系統)來對棋局進行判定問題的步驟中的行為。
又例如:在分析學生管理系統,第一類物件是使用者,負責輸入資料,第二類物件是顯示物件,賦值顯示返回,第三類物件是邏輯處理物件,主要負責處理資料。
3.高內聚
既然上面提到了分解物件,那麼必須提到高內聚。
高內聚:從功能角度來度量模組內的聯絡,乙個好的內聚模組應當恰好做一件事
我們下面給出反面例子:
package com.ray.testobject;
public class bird
private void fly()
}
上面的例子很明顯,sing這個方法應該屬於歌唱家的,而fly是屬於鳥的,因此這個類的內聚不高。由於內聚不高,因此當呼叫sing的方法的時候,就可能耦合bird這個類,造成以後維護的麻煩。
總結,這一章節介紹了物件作為服務提供者使用,並且延伸到分解物件和內聚。
這一章節就到這裡,謝謝。目錄
chap12 物件識別(岡薩雷斯)
1模式和模式類 模式即描繪子的組合,模式類是乙個擁有某些共同性質的模式族。用機器完成的模式識別包括對不同的模式分配各自所屬類的技術 這種技術是自動的並且盡可能地減少人的介入。2基於決策理論方法的識別 使用決策理論方法的識別是基於使用決策函式的識別 匹配 基於匹配的識別技術通過乙個原型模式向量表示乙個...
西行漫記(12) 物件,結束與開始
昨天是object bootcamp的最後乙個session。時間過得真快,一轉眼三周都快過去了。object上到最後,讓我想起了一件很久遠以前的事情 變化點 不變點分析。第一次看到這個概念是在design patterns explained裡面,但真正寫程式的時候很少真正用這種分析思路,更多的是...
西行漫記(12) 物件,結束與開始
昨天是object bootcamp的最後乙個session。時間過得真快,一轉眼三周都快過去了。object上到最後,讓我想起了一件很久遠以前的事情 變化點 不變點分析。第一次看到這個概念是在design patterns explained裡面,但真正寫程式的時候很少真正用這種分析思路,更多的是...