Next: p67
結構性特質(真實世界) → 屬性(物件導向)
決定物件可能的狀態
行為性特質 → 運算 p50, p65
決定物件可能的行為
- 物件可能是主動(擁有控制或初始活動,可以向其他物件請求服務)或被動(除非收到主動物件的控制,否則無法向其他物件請求服務)的
- 物件可能是持續性(persistent, those in database?)或暫時性(transient)的
- 物件是類別的一個實例
- 物件
- 將知識封裝於屬性中,並將技術封裝於運算中 p89
- 連結是關聯的實例
- 集合(aggregation) has-a
- 「寬鬆」包含
- 組合(composition) contains-a
- 「緊密」包含,有共同的生命週期
- 一般化(generalization) is-a-kind-of
- superclass, supertypes (seems to be like interface?) p77
- 提供代換(substitution)的能力:一個子類別的實例可以代替一個需要超類別實例的地方。但反向不行。
- 多型(polymorphism)
- 讓一個介面擁有多個實作部分。
- 重載(overloading)
- 讓一個運算擁有相同的名稱、不同的特徵、不同的實作、甚至不同語意的能力。
- 比如多種型態都要進行 + - * /,+ - * / 即是透過重載來滿足需求。
- 有特定目的的多型。
- 讓一個運算擁有相同的名稱、不同的特徵、不同的實作、甚至不同語意的能力。
功能驅動模式圖適合程序元素多於資料元素的領域
資料驅動模式圖適合商業或資料庫系統(資料元素多於程序元素)
物件導向模式圖可表示實體、相互關係、發生的事件
物件導向
抽象性:為了集中對於某個主題的注意力,建立某個層次的詳細說明。
對於某個主題,在更高層次的抽象中,其敘述較為細密而詳盡;在較低層次的抽象性中,則較為粗糙而簡略。
封裝:將類似資料的元素及類似程序的元素包裝在一起