Tuesday, April 10, 2012

Object = Data + Methods | 筆記:松本行弘的程式世界

物件是變聰明的資料,物件 object = 資料 data + 方法 methods。

用具體的三次元的物體去比喻物件的話,它就好像是一個雙格的櫃子,一格放著資料,另一格放著方法。不管櫃子跑去到哪裡,格子內的東西都會跟著一起走。

上圖表達雙格櫃子的概念,同時,也是 Ruby 物件的語法小抄。裡面記錄了各種格式寫法,包括物件 ID、字串 string / 數字 number / 陣列 array / 雜湊 hash / 類別變數 class variable / 實例變數 instance variable、物件方法 methods 等。

所謂的物件 object,其實是物件實例 object instance 的簡稱。

所謂的物件實例,指的是物件類別 object class 生出來的的子子孫孫們。用 Matz 的說法,類別和實例的關係,就像是模子和人形燒,實例是從類別的模子中印出來的人形燒。

對於大部分的物件導向語言來說,物件是採用上述的人形燒模式,但是,少數的物件導向語言,如 JavaScript ,它的類別和實例的關係,不是模子和人形燒,而是漩渦鳴人和影分身的關係。此時物件的類別不叫做類別,而叫做原型 prototype。