版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第8章 面向對象方法學引論軟件工程導入請用C+、Java、C#等任意一種面向對象語言實現(xiàn)一個計算機控制臺程序,要求輸入兩個數(shù)和運算符號(+、-、*、/),得到結果。命名不規(guī)范做3次無用判斷除數(shù)是0?非字符?用計算機的思維思考不容易維護、修改和復用導入三國時期,曹操帶領百萬大軍攻打東吳,大軍在長江赤壁駐扎,軍船連成一片,眼看就要滅掉東吳,統(tǒng)一天下。曹操大悅,于是大宴眾文武,在席間,詩興大發(fā),不覺吟到:“喝酒唱歌,人生真爽”眾文武齊呼:“丞相好詩!”于是一臣子速命印刷工匠刻板印刷,一遍流傳天下。喝酒唱歌,人生真爽導入樣張給曹操一看,曹操感覺不妥當,說道:“喝與唱,此話過俗,應改為對酒當歌較好!”于
2、是此臣就命印刷工匠重新過來。工匠眼看連夜刻板之功徹底白費,心中叫苦不迭。只得照辦。喝酒唱歌,人生真爽對酒當歌,人生真爽導入樣張再次出來讓曹操過目,曹操細細一品,覺得還是不好,說:“人生真爽太過直接,應改為問語才夠意境,因此應改為對酒當歌,人生幾何?”當臣轉告工匠時,工匠暈倒喝酒唱歌,人生真爽對酒當歌,人生真爽對酒當歌,人生幾何?問題出在哪里?沒有活字印刷,要修改字,必須整個刻板都重新刻導入1.要改,只需要改要之字可維護性;2.這些字并非無用,完全可以在后面的印刷中重復使用可復用;3.此詩若要加字,只需另刻字加入就可以可擴展;4.字的排序可以橫可豎,移動活字即可靈活性好。喝酒唱歌,人生真爽對酒當
3、歌,人生真爽對酒當歌,人生幾何?導入完成一個windows計算器,剛才的代碼是否能夠復用呢?不能簡單的復制和粘貼,當代碼中重復的代碼多到一定程度,維護的時候,可能就是一場災難。編碼的一條原則是:用盡可能的辦法去避免重復。讓業(yè)務邏輯和界面邏輯分開,降低耦合度運算類讓業(yè)務邏輯和界面邏輯分開,降低耦合度客戶端代碼利用面向對象的“封裝”思想,完成了邏輯和界面的分離。但是如果增加一個開跟運算如何更改?讓業(yè)務邏輯和界面邏輯分開,降低耦合度運算類增加sqrt分支不足:1.需要其他未修改的加減乘除都來參加編譯;2.容易進行誤操作或篡改。將運算類進一步分解運算類將運算類進一步分解加減乘除類如何讓計算器知道用哪個
4、算法?實例化對象簡單運算工廠類實例化對象客戶端代碼修改加法功能:1.修改OperationAdd運算子類;2.修改運算工廠類。提綱面向對象方法學概述面向對象的概念面向對象建模對象模型動態(tài)模型功能模型三種模型之間的關系8.1 面向對象方法學概述概述出發(fā)點要點內(nèi)容優(yōu)點過程(1)出發(fā)點模擬人類習慣的思維方式 基于功能的分解 基于對象的分解 (機器世界的觀點) (客觀世界的觀點) (2)要點人的認識規(guī)律 對象-(分類) 類-(分層) 繼承- (交互) 消息通信 OO ( Object Oriented ) = Object + Class + Inheritance + Communication w
5、ith Message 面向對象 = 對象 + 類 + 繼承 + 消息通信(3)主要內(nèi)容整個軟件是由各種各樣的對象構成的;每個對象都有各自的內(nèi)部狀態(tài)和運動規(guī)律;根據(jù)對象的屬性和運動規(guī)律的相似性可以將對象分類;不同對象的組合及其間的相互作用和聯(lián)系構成了系統(tǒng);對象間的相互作用通過消息傳遞,對象根據(jù)所接收到的消息做出自身的反應。(4)優(yōu)點與人類習慣的思維方式一致穩(wěn)定性好可重用性好較易開發(fā)大型軟件產(chǎn)品可維護性好(5)過程結構化范型軟件生命周期(1)陳述需求階段(2)規(guī)格說明(分析)階段(3)設計階段(4)實現(xiàn)階段(5)維護階段面向對象范型軟件生命周期(1)陳述需求階段(2)面向對象分析階段(3)面向對
6、象設計階段(4)面向對象實現(xiàn)階段(5)維護階段(5)過程結構化范型軟件生命周期(1)陳述需求階段(2)規(guī)格說明(分析)階段(3)設計階段(4)實現(xiàn)階段(5)維護階段確定軟件產(chǎn)品應該“做什么”將產(chǎn)品分解為若干模塊,設計數(shù)據(jù)結構和算法(5)過程面向對象范型軟件生命周期(1)陳述需求階段(2)面向對象分析階段(3)面向對象設計階段(4)面向對象實現(xiàn)階段(5)維護階段確定對象對象是面向對象的模塊,因此分析階段就開始了結構設計的工作(5)過程兩種軟件生命周期對比結構化范型開發(fā)軟件,在分析階段和設計階段直接有很大轉變;分析階段的目的是確定產(chǎn)品應該“做什么”,而設計階段的目的是確定“怎樣做”,兩個階段有明顯
7、不同面向對象范型開發(fā)軟件,“對象”從一開始就進入了軟件生命周期,軟件工程師在分析階段就把對象提取出來,在設計階段對其進行設計。在整個開發(fā)過程中使用統(tǒng)一概念對象,階段間轉變比較平緩,減少錯誤。提綱面向對象的概念面向對象建模對象模型動態(tài)模型功能模型三種模型之間的關系8.2 面向對象的概念(1)對象 對象的理解 在應用領域中有意義的、與所要解決的問題有關系的任何事物都可以作為對象(Object)。 可以是具體的物理實體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。 例如,一名職工、一家公司、一個窗口、一座圖書館、一本圖書、貸款和借款等,都可以作為一個對象。 對象是對問題域中某個實體的
8、抽象,設立某個對象就反映了軟件系統(tǒng)保存有關它的信息并具與它進行交互的能力。8.2 面向對象的概念(1)對象由于客觀世界中的實體通常都既具有靜態(tài)的屬性,又具有動態(tài)的行為,因此,面向對象方法學中的對象是由描述該對象屬性的數(shù)據(jù)以及可以對這些數(shù)據(jù)施加的所有操作封裝在一起構成的統(tǒng)一體。對象可以作的操作表示它的動態(tài)行為,在面向對象分析和面向對象設計中,通常把對象的操作稱為服務或方法。8.2 面向對象的概念(1)對象對象的形象表示8.2 面向對象的概念(1)對象對象的定義定義(漢語字典中的定義) 被呈現(xiàn)的或被感官識別的物體。定義1(面向對象程序設計的角度) 對象是具有相同狀態(tài)的一組操作的集合。定義2(面向信
9、息模擬的角度) 對象是對問題域中某個東西的抽象,這種抽象反映了系統(tǒng)保存有關這個東西的信息或與它交互的能力。對象是對屬性值和操作的封裝。8.2 面向對象的概念(1)對象對象的定義定義3(形式化描述) 對象= 其中, ID是對象的標識或名字 IDentification MS是對象中的操作集合 Manipulation Set DS是對象的數(shù)據(jù)結構 Data Structure MI是對象受理的消息名集合(即對外接口) Message Interface8.2 面向對象的概念(1)對象對象的定義定義4(結論) 對象是封裝了數(shù)據(jù)結構及可以施加在這些數(shù)據(jù)結構上的操作的封裝體。 有唯一的名字來標識 向外
10、界提供一組服務 對象中的數(shù)據(jù)表示對象的狀態(tài) 對象的狀態(tài)只能由該對象的操作來改變 通過發(fā)送消息實現(xiàn)對象的通信 對象根據(jù)消息模式找出與之匹配的方法并執(zhí)行該方法來響應消息8.2 面向對象的概念(1)對象對象的特點以數(shù)據(jù)為中心。操作圍繞對其數(shù)據(jù)所需要做的處理來設置,不設置與這些數(shù)據(jù)無關的操作,而且操作的結果往往與當時所處的狀態(tài)有關。對象是主動的。為了完成某個操作,必須通過它的公有接口向對象發(fā)消息,請求它執(zhí)行它的某個操作,處理它的私有數(shù)據(jù)。實現(xiàn)了數(shù)據(jù)封裝。私有數(shù)據(jù)對外是隱藏的、不可見的,對私有數(shù)據(jù)的訪問或處理只能通過公有的操作進行。本質(zhì)上具有并行性。不同對象各自獨立地處理自身的數(shù)據(jù),彼此通過發(fā)消息傳遞信
11、息完成通信。因此,本質(zhì)上具有并行工作的屬性。模塊獨立性好。對象是由數(shù)據(jù)及可以對這些數(shù)據(jù)施加的操作所組成的統(tǒng)一體,而且對象是以數(shù)據(jù)為中心的,操作圍繞對其數(shù)據(jù)所需做的處理來設置,沒有無關的操作。8.2 面向對象的概念1. 類(class)現(xiàn)實世界中存在的客觀事物有些是彼此相似的,例如,張三、李四、王五雖說每個人職業(yè)、性格、愛好、特長等等各有不同,但是,他們的基本特征是相似的,都是黃皮膚、黑頭發(fā)、黑眼睛,于是人們把他們統(tǒng)稱為“中國人”。人類習慣于把有相似特征的事物歸為一類,分類是人類認識客觀世界的基本方法。8.2 面向對象的概念在面向對象的軟件技術中,“類”就是對具有相同數(shù)據(jù)和相同操作的一組相似對象
12、的定義,也就是說,類是對具有相同屬性和行為的一個或多個對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的說明。以上先詳細地闡述了對象的定義,然后在此基礎上定義了類。也可以先定義類再定義對象,例如,可以像下面這樣定義類和對象: 類是支持繼承的抽象數(shù)據(jù)類型,而對象就是類的實例。8.2 面向對象的概念2. 實例(instance)實例就是由某個特定的類所描述的一個具體的對象。類是對具有相同屬性和行為的一組相似的對象的抽象,類在現(xiàn)實世界中并不能真正存在。實際上類是建立對象時使用的“樣板”,按照這個樣板所建立的一個個具體的對象,就是類的實際例子,通常稱為實例。當使用“對象”這個術語時,既可以指一
13、個具體的對象,也可以泛指一般的對象,但是,當使用“實例”這個術語時,必然是指一個具體的對象。8.2 面向對象的概念3. 消息(message)消息就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。通常,一個消息由下述3部分組成:接收消息的對象;消息選擇符(也稱為消息名);零個或多個變元。4. 方法(method)方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務。方法描述了對象執(zhí)行操作的算法,響應消息的方法。在C+語言中把方法稱為成員函數(shù)。8.2 面向對象的概念5. 屬性(attribute)屬性就是類中所定義的數(shù)據(jù),它是對客觀世界實體所具有的性質(zhì)的抽象。類的每個實例都有自己特
14、有的屬性值。在C+語言中把屬性稱為數(shù)據(jù)成員6. 封裝(encapsulation)從字面上理解,所謂封裝就是把某個事物包起來,使外界不知道該事物的具體內(nèi)容。8.2 面向對象的概念在面向對象的程序中,把數(shù)據(jù)和實現(xiàn)操作的代碼集中起來放在對象內(nèi)部。一個對象好像是一個不透明的黑盒子,表示對象狀態(tài)的數(shù)據(jù)和實現(xiàn)操作的代碼與局部數(shù)據(jù),都被封裝在黑盒子里面,從外面是看不見的,更不能從外面直接訪問或修改這些數(shù)據(jù)和代碼。使用一個對象的時候,只需知道它向外界提供的接口形式,無須知道它的數(shù)據(jù)結構細節(jié)和實現(xiàn)操作的算法。8.2 面向對象的概念綜上所述,對象具有封裝性的條件如下:(1) 有一個清晰的邊界。所有私有數(shù)據(jù)和實現(xiàn)
15、操作的代碼都被封裝在這個邊界內(nèi),從外面看不見更不能直接訪問。(2) 有確定的接口(即協(xié)議)。這些接口就是對象可以接受的消息,只能通過向對象發(fā)送消息來使用它。(3) 受保護的內(nèi)部實現(xiàn)。實現(xiàn)對象功能的細節(jié)(私有數(shù)據(jù)和代碼)不能在定義該對象的類的范圍外訪問。8.2 面向對象的概念封裝也就是信息隱藏,通過封裝對外界隱藏了對象的實現(xiàn)細節(jié)。對象類實質(zhì)上是抽象數(shù)據(jù)類型。類把數(shù)據(jù)說明和操作說明與數(shù)據(jù)表達和操作實現(xiàn)分離開了,使用者只需知道它的說明(值域及可對數(shù)據(jù)施加的操作),就可以使用它。7. 繼承(inheritance)廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復定義它們。在面向對象的軟件技術
16、中,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機制。8.2 面向對象的概念面向對象軟件技術的許多強有力的功能和突出的優(yōu)點,都來源于把類組成一個層次結構的系統(tǒng)(類等級):一個類的上層可以有父類,下層可以有子類。這種層次結構系統(tǒng)的一個重要性質(zhì)是繼承性,一個類直接繼承其父類的全部描述(數(shù)據(jù)和操作)。繼承具有傳遞性。因此,一個類實際上繼承了它所在的類等級中在它上層的全部基類的所有描述,也就是說,屬于某類的對象除了具有該類所描述的性質(zhì)外,還具有類等級中該類上層全部基類描述的一切性質(zhì)。8.2 面向對象的概念8.2 面向對象的概念當一個類只允許有一個父類時,也就是說,當類等級為樹形結構時,類的繼承是單繼承
17、;當允許一個類有多個父類時,類的繼承是多重繼承。多重繼承的類可以組合多個父類的性質(zhì)構成所需要的性質(zhì),因此功能更強、使用更方便;但是,使用多重繼承時要注意避免二義性。繼承性使得相似的對象可以共享程序代碼和數(shù)據(jù)結構,從而大大減少了程序中的冗余信息。在程序執(zhí)行期間,對對象某一性質(zhì)的查找是從該對象類在類等級中所在的層次開始,沿類等級逐層向上進行的,并把第一個被找到的性質(zhì)作為所要的性質(zhì)。因此,低層的性質(zhì)將屏蔽高層的同名性質(zhì)。8.2 面向對象的概念使用從原有類派生出新的子類的辦法,使得對軟件的修改變得比過去容易得多了。當需要擴充原有的功能時,派生類的方法可以調(diào)用其基類的方法,并在此基礎上增加必要的程序代碼
18、;當需要完全改變原有操作的算法時,可以在派生類中實現(xiàn)一個與基類方法同名而算法不同的方法;當需要增加新的功能時,可以在派生類中實現(xiàn)一個新的方法。繼承性使得用戶在開發(fā)新的應用系統(tǒng)時不必完全從零開始,可以繼承原有的相似系統(tǒng)的功能或者從類庫中選取需要的類,再派生出新的類以實現(xiàn)所需要的功能。8.2 面向對象的概念8. 多態(tài)性(polymorphism)多態(tài)性一詞來源于希臘語,意思是“有許多形態(tài)”。在面向對象的軟件技術中,多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。也就是說,在類等級的不同層次中可以共享(公用)一個行為(方法)的名字,然而不同層次中的每個類卻各自按自己的需要來實現(xiàn)這個行為。當對象接收到發(fā)送給它的消息時,根據(jù)該對象所
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022~2023測繪職業(yè)技能鑒定考試題庫及答案第876期
- 職業(yè)健康科普傳播的媒介選擇策略-1
- 職業(yè)健康監(jiān)護中的標準化文書書寫規(guī)范
- 職業(yè)健康檔案在員工職業(yè)規(guī)劃中的應用價值
- 黃岡2025年湖北麻城市城區(qū)學校選調(diào)鄉(xiāng)鎮(zhèn)教師150人筆試歷年參考題庫附帶答案詳解
- 長春2025年吉林長春新區(qū)招聘合同制教師筆試歷年參考題庫附帶答案詳解
- 職業(yè)健康與員工職業(yè)發(fā)展:醫(yī)療績效管理的健康維度
- 蘇州2025年江蘇蘇州太倉市沙溪人民醫(yī)院招聘編外專業(yè)技術人員6人筆試歷年參考題庫附帶答案詳解
- 益陽2025年湖南沅江市城區(qū)義務教育學校面向市內(nèi)選調(diào)教師97人筆試歷年參考題庫附帶答案詳解
- 職業(yè)人群職業(yè)倦怠與心理健康干預
- 車位轉讓車位協(xié)議書
- 2025年中國液冷項目投資計劃書
- 兒童出入境委托書
- 土建施工規(guī)范培訓
- 汽車銷售月度工作總結與計劃
- 小學生教育經(jīng)驗家長分享
- 14 請幫我一下吧(說課稿)-部編版道德與法治一年級下冊
- 《橋梁施工安全培訓課件》
- 中學政治名師工作室2025年工作計劃
- 印刷報價單合同范本
- 手術室表面環(huán)境清潔與消毒
評論
0/150
提交評論