旅店管理系統開發過程中的插曲1--什麼是物件 (轉)

worldblog發表於2008-01-24
旅店管理系統開發過程中的插曲1--什麼是物件 (轉)[@more@]

結束“旅店管理用例流程分析 ”之後,心裡真是有些忐忑不安,因為實在不知道下面接著改寫什麼,按著自己的推理把這一張的題目定義為“旅店管理系統中的類的概述”,去csdn看了一下前一章,果然出了問題,有兩位同行給出了回覆如下:

tobato (-7-16 20:41:55) 

插一句, 仔細看了一下,用例的寫法好像有問題。^O^
 
tobato (2003-7-16 20:39:26) 

呵呵,用例可以說和OO是沒有什麼關係的。 使用用例是為了更好的明白你要解決的問題。 但是解決這個問題的方法你可以用oo也可以不用oo.
 
dove_young (2003-7-16 16:05:24) 

還有,忍不住再提醒你一句: 到目前為止,你的這些東西和 OO 還沒沾上邊兒呢。 問題定義、流程分析,這些東西都既可以服務於 OO,也可以服務於非 OO。
 
dove_young (2003-7-16 16:02:33) 

結束了用例流程分析之後,我發現我陷入了一個困境,應為我根本不清楚用例這個詞彙的含義是什麼 ???? 不要這麼誇張吧?你這樣會把小朋友們嚇著的。 暈啊…… 


果然如此,菜鳥就是菜鳥,不過我還是要宣告一下,這是我第一次真正的設計一個東西,而且本人又非科班出身,所寫的內容都是事實,並非為吸引眼球而故作玄虛。用例這個概念也的確剛剛接觸到。可以說關於設計的一切都是初次接觸。所以絕對沒有嚇小朋友的心理,而且我真誠地希望自己能夠從這個系列中學到些什麼,最好其他人也可以學到些東西。所以在還沒有到達懸崖之前我還是要堅持下去,並且希望對設計有較深瞭解的同行可以給出更多的指點。謝謝諸位了。

在進入我們的正題之前我先說一下看了上次提到的“Building user interfaces for -oriented systems”(world.com/javaworld/jw-07-1999/jw-07-toolbox.html">)又給了我很多困惑和疑問。

其中第一個困惑就是Allen Holub(“Building user interfaces for object-oriented systems”和“OO設計過程”的作者)非常重點地提出:我們進行的是OO的設計,而不是CB(class-based)的設計(We're doing object-oriented design, not class-based design)。本來要把下一節的的標題作為“旅店管理系統中的類的概述”現在看來要改為“旅店管理系統中的的概述”了。也許這看起來是無關緊要的,但是既然Allen Holub明確地提出這一點,我想他必有自己的意義在內(想來也是正確的,以前使用時使用的方法絕大多數都是類方法也就是靜態方法,根本沒有體現出OO)。他在文中提到“我們在執行期所使用的是一組物件,而不是類(物件的描述)(what you have at runtime is a bunch of objects, not classes -- animals, not their descriptions)”

接下來的問題更加讓我無法承受(真的要嚇小朋友了):Allen Holub 對於物件的定義進行了全面的否定。他認為物件是一個能力(capabilities)的集合,是由它可以做什麼來定義,而並非由他怎麼做來定義--資料是怎麼做的一分。他認為物件絕非是一個資料結構(其中包括了一組方法用來運算元據結構)[1]。Allen Holu使用更切合實際的術語將物件定義為:一個物件是由他所接受和傳送的訊息定義,處理這些訊息的方法組成了這個物件唯一的與外部的介面[2]。

第三、Allen Holub認為,OO的好處在於是一個程式更容易開發和維護,同時提到多層結構並沒有做到這一點(我一直認為多層結構的一個好處就在於提供了更好地維護方案)。關於這一段的原文找不到了,但是說得蠻有道理的。

......

Allen Holub為OO的系統作了一個標準(只提供英文):
1、All data is private. Period. (This rule applies to all implementation details, not just the data.)
2、get and set functions are evil. (They're just elaborate ways to make the data public.)
3、Never ask an object for the information you need to do something; rather,ask the object that has the information to do the work for you.
4、It must be possible to make any change to the way an object is implemented, no matter how significant that change may be, by modifying the single class that defines that object.
5、All objects must prov their own UI.

看來需要學習的還很多,估計旅店管理系統以後的幾篇可能是關於Allen Holub理論的文章。謝謝大家的支援。

 

[1]You may have read in a book somewhere that an object is a datastructure of some sort combined with a set of functions, called methods, that manipulate that datastructure. Balderdash! Poppycock! First and foremost, an object is a collection of capabilities. An object is defined by what it can do, not by how it does it -- and the data is part of "how it does it."
 
[2] In practical terms, this means that an object is defined by the messages it can receive and send; the methods that handle these messages comprise the object's sole interface to the outer world.

待續

版權所有:idilent 網站轉載請註明作者 其他轉載方式請與作者聯絡(to:idilent@.com.cn">idilent@yahoo.com.cn)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998299/,如需轉載,請註明出處,否則將追究法律責任。

相關文章