第三章 建立物件導向的程式設計思想
主要知識點:
1、理解物件導向程式設計的基本思想。
2、掌握物件導向程式設計的一般方法。
3、能夠運用Java語言編寫簡單的應用程式。
學習目標:
掌握物件導向程式設計的基本思想
解釋:程序導向程式設計 從解決每一個步驟入手,適合於解決比較小的簡單問題;物件導向程式設計的設計方法則是按照現實世界的特點來管理複雜的事務,把它們抽象為物件,把每一個物件的狀態和行為封裝在一起,透過對訊息的反應來完成一定的任務。
物件導向程式設計方法主要解決兩個方面的問題:
(1)避免程式的重複利用,共享程式碼,增加程式的開發速度。
(2)降低維護難度,將具有獨立性的程式碼封裝起來,在修改部分程式程式碼時,不會影響到程式的其他部分。
3.1 物件導向的思想
3.1.1 物件導向的基本概念
物件導向的程式設計語言必須有描述物件以及其相互之間關係的語言成分。歸結為以下幾類:系統中的一切皆物件。物件是什麼?物件是屬性及其操作的封裝體。主要概念如下:
(1)物件:從簡單的整數到複雜的飛機等均可以看作是物件,不僅表示具體的事物,還可以表示抽象的規則,計劃或事件。
(2)物件的狀態和行為:數值是物件的狀態,操作是物件的行為。物件實現了資料和操作的結合,使資料和操作封裝於物件的統一體中。
(3)類:具有相同或相似性質的物件的抽象就是類。
(4)類的結構:客觀世界中存在若干類,這些類中存在一定的結構關係。通常有兩種主要的結構關係,即一般與具體、整體與部分的結構關係。類中操作的實現過程稱為方法,一個方法包括方法名、引數、方法體。
(5)訊息和方法:物件之間進行通訊的結構稱為訊息。
3.1.2 物件導向思想的基本特徵
1、唯一性:每個物件都有唯一的標識,標識不會改變,不同的物件不能有相同的標識;
2、分型別:具有一致的資料結構(屬性)和行為(操作)的物件抽象成為類。任何類的劃分都是主觀的,但必須與具體的應用有關;
3、繼承性:子類自動共享父類資料結構和方法的機制,這是類之間的一種關係;在類層次中,子類只繼承一個父類的資料結構和方法,則稱為單一繼承,子類整合多個父類的資料結構和方法,則稱為多重繼承。
4、多型性:相同的操作、函式或過程可作用於多種型別的物件上並獲得不同的結構,不同的物件。
3.1.3 物件導向思想的基本要素
1、抽象:抽象是指強調實體的本質,內在的屬性。使用抽象可以儘可能避免過早的考慮一些細節。
2、封裝性:類定義將其說明與實現,顯式地分開,其內部實現按其作用域提供保護。物件是封裝的最基本單位,封裝防止了程式相互依賴性而帶來的變動影響。面相物件的封裝比傳統語言的封裝更加清晰。
3、共享性:???
3.2 物件導向的程式設計方法
3.2.1 物件導向程式設計的基本步驟
物件導向程式設計通常要經過9個步驟:
(1)分析確定在問題空間和解空間出現的全部物件及其屬性;
(2)確定應施加於每個物件的操作,即物件固有的處理能力;
(3)分析物件間的聯絡,確定物件彼此間傳遞的訊息;
(4)設計獨享的訊息模式,訊息模式和處理能力共同構成物件的外部特性;
(5)分析各物件的外部特性,將具有相同外部特性的物件歸為一類,從而確定所需要的類。
(6)確定類間的繼承關係,將各物件的共同性質放在較上層的類中描述,透過繼承來共享對共同性質的描述。
(7)設計每個類關於物件外部特性的描述。
(8)設計每個類的內部實現(資料結構和方法)
(9)建立所需的物件(類的例項),實現物件間的聯絡(發訊息)。
3.3.2 主要概念解析
1、物件、類和訊息
物件是變數和相關方法的集合,其中變數是物件的狀態,方法表示物件所具有的行為。也就是說物件導向的程式設計實現了對物件的封裝,使用者不必關心物件的行為是如何實現的。
2、繼承
透過物件、類,可以實現封裝,透過子類則可以實現繼承;
3、抽象與介面
抽象化的概念被提出,是為了降低程式版本更新後,在維護方面的負擔,使功能的提供者和功能的使用者能夠彼此分開,各自獨立,互不影響。介面定義了功能數量、函式名稱、引數順序等。是一個宣告屬性、事件和方法的程式設計結構。只提供定義,並不實現這些成員,而是留給使用者自己擴充。
4、多型
透過方法過載和方法覆蓋來實現多型。首先一個類中可以包含多個重名的方法。但是引數不允許完全相同。其中方法過載可以具有多個相同名字的方法,透過引數來區別哪一個方法。在方法覆蓋中,子類可以實現父類的某些方法,使其具有自己的特徵。
3.3.3 類的實現
一個類包含類宣告和類體兩部分內容。
1、類宣告
一個最簡單的類宣告如下:
public class simple { }
2、類體
類體中定義了類的所有屬性(變數)和類所支援的方法(函式),通常屬性在方法前定義。例如:
class 類名{ 屬性宣告; 方法宣告; }
3、屬性
最簡單的屬性宣告格式為:
型別 屬性名;
注意:在方法中宣告的區域性變數是不同的,區域性變數的作用域只是方法內部。使用final來宣告一個常量。常量通常使用大寫字母來定義;
習題
一、簡單題
1、物件導向思想有哪些基本特徵?
2、物件導向思想包括哪些基本要素?
3、物件導向程式設計需要哪些步驟?
4、什麼是類?類由哪些成分構成?
5、解釋以下概念:類、物件、繼承、封裝、抽象。
二、操作題
1、定義一個類Person,並設定若干成員變數和成員方法;
2、定義一個類Teacher,並設定若干成員變數和成員方法;
3、分析Teacher和Person的關係;