1. 程式人生 > >十一、java面向物件程式設計(類、物件)

十一、java面向物件程式設計(類、物件)

那麼,人類思維的抽象性,即這些抽象概念,如何轉換應用到計算機的軟體開發中呢?或者說軟體設計、程式設計中如何體現出符合人類思維習慣的程式設計模式呢?人類思維的抽象性與面向物件的程式設計方法如何對接呢?

這裡接著上面對“車”的分析,前面的“車”為一個抽象出的概念,“車”具有相關的屬性和方法,通過“車”這個名稱、屬性和方法可以將車的本質定義出來,就和其他的概念可以區別開來。同樣在軟體開發中,假設現在有個“汽車銷售系統”,這個系統跟“車”有關,相應的我們就稱呼前面各種抽象出的概念稱之為 “類”,“類”有名稱、屬性和方法,這個類就和其它的“類”區別開了,簡而言之,就是軟體系統中將人類思維中的各種“概念”稱之為“類”。

在jav面向物件的程式設計中,類也是一種特殊的資料型別,比如第一個程式 HelloWorld中,就建立了一個簡單的類HelloWorld,你可能會有疑問,這個“類”與前面說的概念扯不上關係啊!呵呵,這個類,我們不妨稱之為 “打招呼”類,這個類只有一個主方法,那就列印輸出一句話。比如中國人見面經常問道“吃了嗎”,而美國人見面經常說“今天天氣真好!”
實際上從使用軟體的使用者角度來說,使用軟體的核心過程抽象出來就是兩個方面,即:資訊的錄入與儲存、資訊的讀取與顯示。而對於軟體設計者來,抽象出來的過程還包括一個方面,即資訊的處理。
比如使用搜索引擎的過程,對於使用者來說就是:
1、進入搜尋頁面,輸入關鍵詞 ,單擊“搜尋”按鈕。這就是資訊的錄入。
2、頁面彈出相關搜尋連結,使用者單擊某個連結進行相關網頁檢視搜尋內容。這就是資訊的讀取與顯示、
對於程式設計者來說其過程是:
1、設計讓使用者輸入搜尋關鍵詞的頁面(這可以設計個“關鍵字”類)
2、使用者單擊“搜尋”按鈕後,根據使用者輸入的關鍵字,通過相應的搜尋演算法到資料庫中將相應的連結資訊以跟關鍵字符合度按照條目的方式顯示在頁面中共使用者選擇。(這可以設計個“搜尋”類)
3、使用者單擊某個連結後找到相關頁面去。(這可以設計了“連結”類)

當然這是抽象出來的過程,實際的搜尋引擎程式是很複雜的,但在程式設計時可以將複雜的運算和處理過程用簡單的抽象語言描述出來,以方便軟體的分析和設計,通過這種方法能夠大大降低軟體設計的難度,同時也很便於日後的維護和拓展,就如同建築框架定好後,細節可以不斷完善。

又比如“圖書借閱系統”主要由那些功能呢?可以做出如下分析:1、與“圖書借閱系統”相關的人員有 圖書管理員、借閱者2、聯絡圖書管理員和借閱者的就是圖書。相應的至少應該有三個類:圖書管理員類、借閱者類、圖書類 圖書管理員類包含了姓名、年齡、電話等屬性,以及新增借閱者、刪除借閱者等方法。 借閱者類包含了姓名、年齡、電話等屬性,以及註冊借閱者、登出借閱者等方法。圖書類包含了書籍名稱、出版時間、價格等屬性,以及查閱圖書、借閱圖書、歸還圖書、登出圖書等方法。在這裡,分析圖書借閱系統的類時,可以通過所有涉及到系統的人、物以及他們之間的關係和行為的流程進行一定的分析從而設計出類,類的屬性就是系統所要處理的資訊,類的行為就是如何進行資訊處理的方法,類分析清楚了,軟體系統基本上就成型了。四、物件的理解類是一個抽象出的概念,如同上面的圖書借閱系統中的圖書類,該類是一個模板。而圖書有成千上萬種,每一本書都是一個具體的物件,即使是相同的兩本書也要有不同的圖書編碼,以示區別,在實際借閱圖書的過程中,處理的必然是一本本圖書,即具體的物件,而不是一個巨集觀的“圖書”類(概念)。因此在實際的程式設計和處理中,當定義好了圖書類後,在進行相應的處理時,比如將類例項化為物件,也就是具體的某本書,而不是圖書類。因為我們不可能將每本書都建立一個類,這樣反而將問題複雜化了。舉例:定義一個Book類,定義類的屬性 BookName,例項化類的兩個物件b1、b2,並列印物件的屬性值。