2013年11月6日 星期三

Object-Oriented Programming/物件導向程式語言(三)
 
許裕永 著
 
類別用來宣告變數,及作為物件型別辨識或轉型的依據。
變數用來代表型別相當的物件。
物件指的是實體存在的東西,看得到、摸得到。
 
所以物件是實體;類別是型別;名稱是代號。
 
物件在那裏?
剛才論述的,是自然界的物件。所以才會說物件是實體存在的東西,看得到、摸得到。
物件導向是把資料群組模擬為物件,藉以分析問題。
程式語言撰寫的程式碼由執行環境執行,程式執行時,資料儲存於記憶體,所以我們可以假設,儲存資料的記憶體區塊為我們所謂的物件
 
物件是怎麼產生的?
物件是類別建構出來的。
用類別建構物件。
這兩句話,我們時常可以在論述物件導向的文章中看到。不能說這種說法不對,只是過於簡潔,容易造成錯覺。
我習慣用自己的說法:
既然我們假設儲存資料的記憶體區塊為我們所謂的物件,那麼這些記憶體區塊,自然是由執行環境配置並把資料儲存進去的,所以我想說「物件是由執行環境建構的」
 
物件的產生和類別有關嗎?
物件是類別建構出來的。
用類別建構物件。
這兩句話,我不是很喜歡的原因,就是它們會讓我們誤以為類別是物件建構時的原料,從而產生一個類別產生一個物件的錯覺。
在我的論述中,物件建構的原料是記憶體。
 
執行環境依照類別的說明(宣告),配置適當的記憶體空間,並將指定的資料儲存至記憶體中,便是建構物件。
在此論述中,類別只是執行環境建構物件時的說明書(規格書)而已
 
假設我擁有一條製造桌子的全自動化的生產線,有人向我下訂單要一百張書桌,我該怎麼做?
第一、 向訂貨人確認書桌的需求,例如:桌面的長度、寬度,木板的材質及厚度,桌子的高度,是否裝設滾輪等等。(分析解決問題的資料)
第二、 依照成品的需求繪製樣品圖並製訂規格書,確認每一張書桌所需的原料,訂定組裝流程。(依物件需求開發類別)
第三、 依照規格書的記載,調整生產線的機器。(執行環境載入類別中的宣告)
第四、 將原料投入生產線,開始生產。(執行環境依照類別的宣告,配置適當的記憶體空間,並將指定的資料儲存至記憶體中)
最後,在這個假設中,生產出來的書桌,會具有相同的規格。
 
類別決定了物件的規格,但它不是建構物件的原料,它只是說明書。
每一個物件都是獨立的個體,彼此沒有關係。
物件和類別的關係是型別的歸屬(我是人)。但不是主從的關係。
 
 

沒有留言:

張貼留言