面向物件程式設計(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) 代碼重用性搞,可靠性高,開發效率高,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/68943.html
標籤:C#
