Object Oriented
Programming/物件導向程式語言(二)
許裕永 著
物件導向最基本的觀念,就是先分析要解決的問題,找出所有和解決問題有關的資料,再將資料依其性質分類為各個不同的物件;也就是分析出解決問題所需要的物件。
換個角度來看,就是以物件為單位,分析出問題的解決方案。
所以資料的群組就是所謂的物件(Object)。在物件導向中,有時我們稱呼這個資料群組為實體(Instance)。實體這個稱呼,是相對於類別(class)。
什麼是類別(class)?
類別是一個型別(type)。就像int、doubue、boolean、char 等等的型別一樣,可以用來宣告變數,可以用來作為資料強制轉型
(casting)時的依據。只不過, int、doubue、boolean、char 這些型別是預設的基本資料型別(編譯器認識它們)。而每一個類
別是由設計師自行依照需求,全新開發的一個型別。
什麼時候開發類別?
因為有物件的需求,所以開發類別。以物件導向的觀念,完成專案分析後,將會分析出許多物件。將這些物件依性質進行歸類(分成不同的package)之後,便可以開始進行類別的開發。
類別和物件是什麼關係?
物件是類別的實體(Object is an instance of a class)。實體指的是實際存在的東西。
有一隻狗在叫 = 有一隻型別為狗的東西在叫 = 有一個東西(實體存在的東西),它的型別是狗,它在叫。
你在路上隨時可以看到一堆狗 =
你在路上隨時可以看到一堆型別為狗的實體 = 你在路上隨時可以看到一堆物件,那些物件的型別是狗。
你是人 = 你是一個 名字叫作人的型別 的實體物件。
你不是人 = 你不是人那個型別。
物件?名稱?類別?
大家好,我是許大笨。
許大笨是我的名字。我屬於人那個型別(類別)。
我是一個名字叫作人的型別(類別)的實體(物件)。我的名字(名稱)叫許大笨。
等一下若有人開門進來,我要叫它許大呆。
這一句話若以程式語言撰寫,可以寫成:
人 許大呆=等一下開門進來人。
人 許大呆 => 用人這個型別宣告一個名稱(變數)。
等一下開門進來的人 => 等一下開門進來的物件必須擁有人的型別(必須是人)。
若不是人的型別的物件,將會造成指派錯誤。
人是型別(類別),它用來宣告變數及作為物件型別辨識的依據。
許大呆是名字(變數),它用來代表擁有人的型別的物件。
真正的物件是等一下開門進來的東西。
類別用來宣告變數,及作為物件型別辨識或轉型的依據。
變數用來代表型別相當的物件。(用某一型別宣告的變數,只能代表擁有該型別的物件)
物件指的是實體存在的東西,看得到、摸得到。(在叫的那一隻、你、我以及等一下開門進來的人)
物件導向的初學者的第一要務,就是把物件、名稱及類別,這三個要素的定位搞清楚。
我不是人,我是一個實際存在於自然環境中的實體,我屬於人這個分類,我的類別是人,我是人這個類別的實體物件。
你也不是人,你也是一個實際存在於自然環境中的實體,你也屬於人這個分類,你的類別也是人,你也是人這個類別的實體物件。
我和你都是人這個類別的物件。
我的名字是許大笨,你的名字是許大呆。許大笨代表我,許大呆代表你。
但名字只是代號,在特定的環境中,只要有明確的宣告及指派,一個物件不見得只能有一個名字。就像你在使用網路的時候,在不同的環境中會使用不同的名字來代表你一樣。
所以物件是實體;類別是型別;名稱是代號。
沒有留言:
張貼留言