何為物件?
真世界件中任何一事物都是物件(object), 人是一個物件, 桌子是一個物件, 車子也是一個物件,
一個物件內會有那些東西, 狀態(state)及行為(behavior),
狀態是什麼? 以人為例, 名字, 性別, 膚色, 身高...等皆是人所擁有的狀態.
行為又是什麼? 一樣以人為例, 跑, 走, 吃東西, 喝水...等動作皆是一個人所擁有的行為.
人可以定義成一個類別(class)叫人類,
將上面的說明轉換成程式,
狀態便是程式中的變數(varialbe, 官方稱為field),
行為便是程式中的方法(method),
定義方式如下:
08 |
void setName(String name){} |
10 |
return float kilometer; |
12 |
void eat(String food){} |
若要使用 Human類別, 必須先將 Human類別實體化,
2 |
Human Taiwanese = new Human(); |
在 HumanDemo裡 Taiwanese是 Human類別的實體(instance),
當一類別被實體化後, 便可使用該類別中所定義之變數及方法.
object與instance可能是困擾程式設計類書籍譯者最多的名詞,在大部分的文章中,一旦翻譯成中文之後,即使將object或是instance都譯為「物件」,在語意上多半不會造成困擾(我自己也常這樣做),但如果細究起來,我認為其實object與instance是有所不同的。
object應該是泛指某一物件;而instance通常是特別指某一類的其中之一個。也就是說,出現instance的場合多半都會指明所屬的類別,比方說"a instance of Car class";而出現object的場合,多半不會特別指明其所屬類別,或者無法指明所屬類別,比方說"delete all objects in the collection"。
好,如果是這樣,那麼object與instance究竟應該如何翻譯呢?我個人的建議是object就簡單翻譯為「物件」,這也和一般稱「物件導向程式設計」相符;而instance如果審視上下文,有必要區別出來時,就翻譯為「某某類的(一個)實體」,否則可以一樣翻譯為「物件」即可。
5.更多內容:轉自搞笑談軟功
- Object:An object is characterized by a number of operations and a state which remembers the effect of these operations.(p.44)
- Class:A class represents a template for several objects and describes how these objects are structured internally. Objects of the same class have the same definition both for their operations and for their information structures.(p.50)
- Instance:An instanceis an object created from a class. The class describes the (behavior and information)structure of the instance, while the current state of the instance is defined by the operations performed on the instance.(p.50)
小新本人不負責任翻譯:
●物件:物件是一個已被定義好的一系列功能與狀態。
●類別:類別是提供物件建立的樣板(template)雛形架構,一個類別可以建立出多個名稱不同的物件(objects),這些源於相同類別所建構出的名稱不同物件其架構相同、功能也相同。
●實作:實作專指由一個類別產生出的物件,這個類別由於描述此實作的結構(information屬性與behavior行為),而實作當下的狀態則由在實作上面的操作(operation)來決定的。
另外,這是下面同學(SuperMan)的詮釋
OOSE那本書這個地方寫得非常好,應該說它是經典啊:D
我個人的看法:
其實Object本身來說,就是把一堆資料與相對應處理的程式作組合,變得好像是一個角色一樣(叫它Role-Play Oriented好像也沒啥不好?)
所以我想instance本身來說,它想強調:
我是範本文件生出來的新文件
而Object本身代表的是:
可以編輯的文件
而Class則是:
範本文件
所以instance與object當然不一樣囉~
因為白馬非馬(無誤)
咳,正經點,應該說:
instance強調是從class範本生出來的副本
object強調有血有肉有狀態的抽象實體化資料結構及程式碼
而這裡所提到的instance是指an instance of a class,所以它當然是個object
一點murmur :P
留言列表