面向對象程式設計(Object-Oriented Programming,OOP)是一種程式設計架構,同時也是一種程式開發的方法。對象指的是類的實例,它將對象作為程式的基本單元,將程式和數據封裝其中,以提高代碼的重用性、靈活性和擴展性。 1.1 面向對象概念 時間是由什麼組成的?現實世界是由一個一個 ...
面向對象程式設計(Object-Oriented Programming,OOP)是一種程式設計架構,同時也是一種程式開發的方法。對象指的是類的實例,它將對象作為程式的基本單元,將程式和數據封裝其中,以提高代碼的重用性、靈活性和擴展性。
1.1 面向對象概念
時間是由什麼組成的?現實世界是由一個一個對象組成的,例如看到的東西、聽到的事件、想到的事情,這些都是對象,也就是說萬事萬物皆對象。不同的對象,既相互獨立,又相互聯繫,人們面向的世界是“面向對象”的。
1.1.1對象抽象成類
對象(Object)抽象為類(Class)的過程,是在系統分析階段完成的。
1. 分析對象的特征
對象是人們要分析的任何事物,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件,不同的對象呈現不同的特征。由於對象反映了現實世界,人們通過面向對象的方法就可以找到合理地解決問題的方法。怎麼區分這些對象呢?就是分析與系統相關的特征,包括狀態(靜態特征)和操作(動態特征)。如圖1-1所示為對象的部分特征的分析。
狀態:用於描述對象的靜態特征,表示對象“是什麼樣子”。對象的狀態用一些數據來描述,在程式中稱為欄位或屬性。
操作:用於描述對象的動態特征,表示對象“能做什麼”。對象的操作用於改變對象的狀態,對象的操作就是對象的行為,在程式稱為方法或函數。
對象實現了狀態和操作的結合,使狀態和操作封裝在一個對象之中,如圖1-2所示。
2. 對象抽象成類
抽象就是從特定角度出發,從已經存在的事物中提取現實世界中某事物的關鍵特征,為該事物構建模型的過程。對同一事物在不同的需求下, 需要提取的特征可能不一樣。得到的抽象模型中一般包含:狀態(屬性)和操作(方法或函數),這個抽象模型稱為類。
現實世界中的事物都可以抽象成應用系統軟體中的對象,提取出人們所關註的對象,對這些對象再分析與應用系統相關的特征,對不同特征的對象進行分類,把具有相同或相似的對象進行歸類,即抽象成類,如圖1-3所示。
例如,要研發一款學校管理系統軟體,依據學校彙總的對象特征,分為人、場館、物品、課程等類別。學校中的“人”,根據特征可分為管理人員、教師、後勤人員、學生等類別,這種“類別”在面向對象中稱為“類”。類是具有相同狀態和操作的一組對象的集合
類是對象的抽象,僅僅是模板,比如說“人”類。對類進行實例化得到對象,對象是一個一個看得見、摸得著的獨一無二的具體實體,一個對象具有唯一的狀態和操作,如圖1-4所示。
面向對象技術利用“面向對象思想”去描述“面向對象的世界”。面向對象是把問題分解成各個對象,在系統分析階段把這些對象抽象成不同的類,建立類和描述這類對象在解決問題時的特征(狀態和操作),形成類模板。其中的操作,在類定義中是用方法來實現的
3. 課堂練習
【課堂練習1-1】指出下麵詞語哪些是類?哪些是對象?
筆記本電腦 院中的那輛白色轎車 員工 同事小李
汽車 大象 我家的小狗 越野車
我的手機 我選的本學期的課程 我選的C#課程 教師
【例1-1】 使用面向對象的思想描述並抽象出學生類。
功能描述:常用的學生信息有姓名、性別、年齡、班級等基本信息,學習完一門課程後需要參加考試,只有考試通過後才能進入下一門課的學習。請根據描述,從對象抽象出學生類。要求定義學生類,併在主方法中實例化學生對象。
思路分析如下。
1)分析問題:學生學習課程。
2)提煉對象:學生。
3)分析對象的狀態:姓名、性別、年齡、班級等。
4)分析對象的操作:學習、考試等。
5)定義類:學生類Student。
狀態:
姓名name
性別gender
年齡age
班級grade
操作:
顯示學習的課程Study(course),course是顯示的課程名稱
顯示考試的課程Exam(course,score),course課程,score成績
【課堂練習1-2】請使用面向對象的思想描述並抽象出“臺灣燒仙草奶茶連鎖店”的類。
功能描述:不同的“臺灣燒仙草奶茶連鎖店”具有相同的環境、奶茶品種、價格、服務等,顯示某編號奶茶店的信息。
【例1-2】 使用面向對象的思想描述長方體類。
功能描述:長方體有3條棱,分別叫作長方體的長,寬,高。用這3條棱既能描述一個長方體,也可以計算長方體的體積、錶面積。
思路分析如下。
1) 分析問題:用長方體的3條棱就能描述一個長方體,計算長方體的體積、錶面積。
2) 提煉對象:長方體。
3) 分析對象的狀態:長,寬,高。
4) 分析對象的操作:計算長方體的體積、錶面積。
5) 定義類:長方體類Cuboid。
狀態:
長length
寬width
高height
操作:
計算長方體的體積Cubage,長方體的體積=長×寬×高計算長方體的錶面積TotalArea,長方體的錶面積=(長×寬+長×高+寬×高)×2
1.1.2 由類創建對象
在編程階段,由類模板生成(或創建)對象(實例),如圖1-5所示。
類是對象的抽象,而對象是類的具體實例。類是抽象的,不占用記憶體,而對象是具體的,占用存儲空間。類是用於創建對象的藍圖,它是一個定義包括在特定類型對象中的方法和變數的模板。例如,由“人”類創建“劉強”“王芳”對象,如圖1-6所示。
類是具有相同狀態(特征)和操作(方法或函數)的一組對象集合。類是對象的類型,不同於基本數據類型(例如,int類型),類具有操作。對象是一個能夠看到、摸得著的具體實體。
1.1.3 對象之間的通信
對象之間的通信稱為消息,如圖1-7所示。在對象的操作中,當一個對象的消息發送給某個對象時,消息包含接收對象去執行某種操作的信息。發送一條消息至少要包括說明接收消息的對象名、發送給該對象的消息名(即對象名、方法名)。
面向對象的思想就是以對象為中心,先開發類,然後實例化對象,通過對象之間相互通信實現功能。
1.1.4 面向對象開發的特點
面向對象開發就是採用“現實模擬”的方法設計和開發程式,面向對象是把問題分解成各個對象,描述這個對象再解決問題時的狀態和操作,面向對象技術利用“面向對象的思想”去描述“面向對象的世界”。面向對象開發主要特點如下。
1) 虛擬世界和現實世界的一致性。
2) 客戶與軟體開發工程師交流更順暢。
3) 軟體開發人員內容交流更順暢。
4) 代碼重用性搞,可靠性高,開發效率高。