全文與附圖請參考:
http://www.hsdc.com.tw/modules/newbb/viewtopic.php?topic_id=155&forum=1&post_id=1078#forumpost1078

既 然,主流的程式開發語言,包括 Java, .NET(C#, VB …) 等,甚至連 PHP 這種 ”Script-based”,以網頁設計為主的描述性語言,都已標榜能實現所謂的 “物件導向(object-oriented)” 的開發模式,那麼顯然,軟體分析與設計、包括程式撰寫人員,都必須要能對以 “物件” 為單位的設計與開發,要能有其共識。但 “物件” 卻往往很難被界定與定義,具體的東西,如電腦、小狗、汽車、杯子、Xbox 360 …等,都是物件;但抽象的概念,如訂房、會議、訂購、保險、行動電話的簡訊 …等,也都可以是物件。具體的東西, 因為能看得到,所以看起來比較容易能找出 “物件”,但其實也很容易有 “茫點”,例如,”松樹” 是一個物件,還是多個物件? “樹枝”、”樹葉”、”樹幹”、”樹根” 是 “松樹” 的基本組成元素,它們是否也可以算是物件? 而抽象的概念,更是難以界定,若沒有足夠的抽象能力(抽象能力有時又要帶點創意與想像),實在很難捕捉看不著、摸不到的 “相”,將之定義為具體的(specific)物件。

“到處都是物件(everywhere is object)”,但沒有細心觀察與體會,以及把握最基本的判斷原則,並不容易發掘出對未來軟體設計時有助益的物件。什麼是最基本的判斷原則? 依據 J.Martin & J.Odell 對物件的定義:

“An Object is anything to which a concept applies. It is an instance of a concept.”
(物件是概念可以被應用的任何事物,它是概念所呈現的個體)。

由 此定義也可以得知,“物件” 與 “個體(instance)” 這兩個術語,其實是具同義詞性質的。將 “概念(concept)” 作為認知的對象時,所產出的 “個體(instance)” 即為物件。但概念會牽涉到人們對於觀點、角度等認知,而會有不同的體認。例如站在遊客的角度,他所看到在森林裡面的樹木,是一個個的 “個體”,會從樹木之外的角度來欣賞樹木的茂盛與宏偉,是一種整體性的認知;但站在植物學家的角度,他要研究組成樹木的結構元素,所以會把樹木分為 ”樹幹”、”樹枝”、”樹葉”、”樹根” 等多個組成樹木的 “物件”,從結構的觀點來研究樹木的內部組成。

這同時也就代表了,雖然到處 都是物件,但並不是任意地將物件給 “塞” 入軟體系統內,物件導向的設計,是將問題領域(problem domain)的概念,呈現與對映(mapping)至軟體系統內,那麼,如何正確地捕捉(capture)問題領域的概念成為物件,就成為是軟體設計 中,最為重要的技能與素養了。

例如,從業務操作人員(operator)最常溝通的術語,“訂購單(order form)”,軟體設計人員若不知如何正確捕捉概念術語,結果將 “訂購單” 視為是一個單一的物件,而將其設計至 “領域模型(domain model)”,乃至於 “軟體規格模型(software specification model)”。但,若是懂得從不同觀點與角度來觀察與思考的軟體設計人員,會發現到 “訂購單” 其實是一種 “UI(User Interface) 的呈現”,未來在軟體資訊系統中,是以如 “Web Form” 等實作技術來呈現訂購單的相關組合資訊(information),當分析 “訂購單” 的內部結構時,就會找出更具 “本質性(essential)” 的概念物件,包括 “訂購(order)”、”訂購細項(order lineitem)”、”項目(item)” …等確實能充分表達概念的物件。(往往這些概念物件,會成為資訊系統中間層(middle-tier)的企業物件(business object))。

物件的特徵(features)
既然物件是概念的具體呈現,那麼,每一個物件,必然有其特徵(features),而可以讓外界能辦識它。物件的特徵,包括兩個部分,屬性(attribute)與行為(behavior)。