跳到主要內容

發表文章

目前顯示的是有「OOP」標籤的文章

Java-物件導向介紹(3)

此篇文章來探討,程式語言中的類別是甚麼? 類別: 1. 概論: 類別 (class) 像是一個模子一般,同一個模子做出來的東西都有著一致的特性。 Java 是以 class 的語法結構來封裝 (encapsulation) 一般化的描述。若用類別產生出來的東西稱為一個實例 (instance) 、物件。 類別可定義為: 類別就像是一張藍圖般,其中定義出屬性及方法合稱為特性 (features) ,任何用這張藍圖產生的物件都有著一樣的特性,但是物件間的狀態則可能有所不同。在物件導向的技術裡,類別除了是物件的一般化描述外,類別也是一種分類 (categorization) 的方式。 2. 抽象化: 發現類別成員 - 現實生活物件的抽象化 (1) 雖是同類物件的一般化描述,但是 每個物件都有一份屬於自己的屬性及方法 ;在程式裡,利用類別 (class) 來模擬物件時,各別的物件除了保有自己所屬資料外,方法是所有同類物件所共有的。除此之外,程式設計時,軟體的類別還可以定義不屬任一物件所獨有,而是該類別所共有的資料,稱為 class variable ( 若針對物件本身所屬的資料稱為 instance variable ) 。這個 class variable 有個特徵:當任何一個物件改了它後,其他物件一旦用到這個資料的話,一定是用到更改後的資料。 (2) 甚麼時候用到 class variable ?當用來 描述某一個狀態的屬性,對所有物件而言都是相同的 ,就可以將這個屬性定義成 class variable 。如,程式裡設計了一個腳踏車的類別,而預期所有用該類別生產出的實例 (instance) 都一定有兩個輪子的話,就可以將輪子的屬性狀態設為 2 。如果將那個屬性用 instance variable 來做的話, 100 個物件就必須保有 100 份的 instance variable ,對系統資源浪費。 (3) 在物件導向思維裡,根據系統的需要,程式設計師將真實世界裡物件的屬性及方法中挑選適合開發需要的過程稱為 abstract ,這個字一般翻成抽象化 ( 摘錄、節錄及篩選 ) 。 例如,同樣是一個用來表示「人」的物件,用於人事薪資系統與用於醫療作業系統時,顯然在這兩個不同的系統裡,「人」的類別應該會有不同的屬性與方法;比如說,在醫療作業系統裡可能會有...

Java-物件導向介紹(2)

這篇文章來探討"物件",物件到底是何物?有甚麼特點? 物件: 1. 物件可以用兩個向度來描述,狀態與行為: (1) 狀態 (state) : 用來描述物件的 靜態資訊 ,例如表示 汽車的油量值 。物件的狀態是透過一個以上的欄位 (field) 、屬性 (attribute) 所構成。將一個物件的所有屬性目前的情形組合起來便稱為物件的狀態。    狀態注重的是 目前的情形 ,因此當欄位、屬性的內容有了修改,就表示物件的狀態也跟著改變。 (2) 行為 (behavior) : 用來描述物件的動態服務,例如表示汽車的發動功能;通常也稱作是 operation( 操作 ) 、 service( 服務 ) 或是 method( 方法 ) 。 物件可定義為: 物件具由一定的結構 (structure) ,這個結構是由欄位、屬性 (fields, attributes) 與行為 (behaviors) 所組成的一個單元;物件透過屬性來表現其所特有的特性而呈現其位於某一時點的狀態 (state) ,並透過行為方式來表現其能力;其中屬性與方法合稱為該物件的特性 (features) 。 2. 物件的合作 : 程式中常常有需要同時動用到多個物件才能完成任務,例如一個 Point 點的物件與一個表示 Line 線段的物件,這樣才能算出兩點構成的線段到底有多長。 3. 物件的溝通 :各個物件之間互動攸關彼此合作的成效,互動就是要求互動的物件,傳遞給與之互動的另一物件一道「訊息 (message) 」。簡單說就是方法的呼叫,例如, Main() 方法,呼叫 Console 的 WriteLine() 方法。   要求互動者、接受溝通者及一道訊息的溝通過程,稱之為「訊息傳遞 (message passing) 」。訊息順利傳遞,在程式語言裡稱作參數 (parameters) ,而傳遞參數的過程,稱為參數傳遞 (parameter passing) 。 4. 物件程式化 :在 OOP 世界裡,將變數 ( 狀態 ) 與函數,將這兩項以一個稱作 class 的結構封裝 (encapsulation) 起來,成為物件的一般化描述,變數而稱為 欄位 (field) ;函數,則被稱之為 運算 (operations) 、方法 (methods) 。前述欄位、運算與方...