我發現,截至目前為止,並沒有介紹一本真正適合初學者的軟體入門書籍。事實上,要寫好一本所謂的「物件導向」基礎入門書,並不容易。執筆者除了觀念要透徹,用字遣詞也要言簡意賅,能用簡單的方式表達複雜觀念。

《Object-Oriented Methods》絕對是留名軟體青史的代表性著作。許多讀者對於閱讀原文書籍會有恐懼感,但本書的用字遣詞相當淺顯易懂,即使英文文法不好,仍然可以毫不費力地閱讀。如同作者所說,本書的讀者程度,並不需要具備任何的前置知識,包括程式語言等。

弄清楚術語定義,才能紮穩物件導向基礎

本書共分為六大部分,最後一部分為附錄,其中最值得推薦的是附錄D,附錄D以論文的型態闡述分類的關係,以及一般化/特殊化、功能/屬性/角色……等分析過程中經常運用的基礎技能。

第一章是泛物件導向系統的概念性介紹。前兩部分是基本物件導向的基礎知識,分別介紹物件的結構(Structure),以及物件的行為(Behavior)。第一部分可以精讀,有助於奠定紮實的理論基礎。舉例來說,我們經常說某某專案正在開發的是物件導向式系統,但能否明確說明分析的物件從何而來?能不能定義出什麼是物件?看似簡單的問題,如果基礎知識不夠紮實,依然能考倒許多軟體人員。

第二章開宗明義指出,物件源自於概念(Concept),「An Object is anything to which a concept applies. It is an instance of a concept.」(物件是概念可以應用的任何事物,它是概念所呈現的個體)。由此可以得知,「物件」與「個體」(Instance)二者意義其實是相同的。將「概念」作為認知的對象時,所產出的「個體」即為物件。但概念會牽涉到人們對於觀點、角度等認知的差異,而有不同的體認。

例如,站在遊客的角度,森林裡面的樹木,是一個個的「個體」,他會從樹木之外的角度,欣賞樹木的茂盛與宏偉,是一種整體性的認知;但站在植物學家的角度,他要研究樹木的結構,會把樹木分為「樹幹」、「樹枝」、「樹葉」、「樹根」等數個組成樹木的「物件」,從結構的觀點研究樹木的內部組成。這同時也代表,雖然物件到處都有,但並不是任意地將物件「塞」入軟體系統內就行得通。物件導向的設計,必須將問題領域(Problem Domain)的概念,明確地呈現與對映(Mapping)至軟體系統內,而如何正確地捕捉(Capture)問題領域的概念成為物件,是軟體設計最重要的基本技能與素養。

建立起分辦物件與類別的能力之後,便能進一步了解類別之間的3種關係:關連、整體/局部、一般化/特殊化。

透過關連,我們可以分析類別的相依性(Dependency),以了解耦合(Coupling)的程度;透過整體/局部,我們可以封裝(Encapsulate)細節,並以整體的服務呈現給Client;透過一般化/特殊化,我們把相同的部分抽象出一般化類別,而把特殊或需要擴展的行為,分別實現在特殊化的類別,造成所謂多型(Polymorphism)的效果(這也就是所謂的繼承)。

再來論及的是物件的行為面。從對於狀態(State)的說明到狀態的轉移,而發生轉移的觸發(Trigger)就是所謂的事件(Event),所以,當然就會需要了解到事件的種類、事件的處理等,這也是目前元件化系統,在動態期間常會用到的機制,在設計上是相當重要的範疇。

第三~五部分,分別介紹物件導向分析的說明、設計與實作的考量等較為進階的議題,由於涵蓋範圍太過廣泛或不夠周延,建議瀏覽過即可,如有需要,再參考其他專書深入研究。

從觀念層面釐清你對物件導向的疑問

本書除了UML設計圖外,還有許多生動有趣的插圖,佐以解釋主題的呈現。建議你不要抱著從「用」的角度來看待此書,因為它不一定能馬上應用在現實的工作上。如果好奇:為什麼主流程式語言,都採用物件導向式的實作機制?為什麼系統分析/設計也強調物件導向思維?物件導向到底可以解決什麼樣的軟體設計議題?還有,當你真正有志於從事軟體專業之路時,本書絕對是修習基礎內功的聖典。

 

Object-Oriented Methods: A Foundation, UML Edition (2nd Edition)

James Martin,James J.Odell /著
Prentice Hall PTR出版
售價:86.65美元
Amazon四顆半星

作者簡介

王克明

台北工專五專部電子科畢業。現於HSDc軟體設計顧問團隊擔任架構師/顧問/講師。興趣為整體架構性的思考與學習、期貨投機操作與閱讀。

相關連結

軟體設計必讀經典(1)以簡約之道介紹UML最實用的部分
軟體設計必讀經典(2)物件導向分析與設計入門
軟體設計必讀經典(3)洞悉易學難精的Use Case
軟體設計必讀經典(4)知易行難的極致軟體製程
軟體設計必讀經典(5)用科學化方式搞懂設計模式
軟體設計必讀經典(6)RUP活用,也可以是敏捷開發
軟體設計必讀經典(7)重構讓程式回到應有位置
軟體設計必讀經典(8)由生活出發,輕鬆領會物件導向
軟體設計必讀經典(9)優質使用者介面,源自好的狀態圖設計
軟體設計必讀經典(10)幫助SA紮穩UML底子的實務手冊
軟體設計必讀經典(11)反覆測試與修正,讓錯誤消失
軟體設計必讀經典(12)強化結構分析,跨越產業鴻溝

 

熱門新聞

Advertisement