軟件工程-第9章第2節(jié)_第1頁
軟件工程-第9章第2節(jié)_第2頁
軟件工程-第9章第2節(jié)_第3頁
軟件工程-第9章第2節(jié)_第4頁
軟件工程-第9章第2節(jié)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

9.2面向?qū)ο蟮母拍?/p>

9.2.1面向?qū)ο蟮幕舅枷朊嫦驅(qū)ο蟮幕境霭l(fā)點就是盡可能按照人類認識世界的方法和思維方式來分析和解決問題,客觀世界是由許多具體的事物或事件、抽象的概念及規(guī)則等組成的。因此,我們將任何感興趣或要加以研究的事物、概念都統(tǒng)稱為對象。面向?qū)ο蟮姆椒ㄕ且詫ο笞鳛樽罨镜脑?,它也是分析問題、解決問題的核心。由此可見,面向?qū)ο蠓椒ê茏匀坏胤先祟惖恼J識規(guī)律。計算機實現(xiàn)的對象與真實世界具有一對一的關(guān)系,不必作任何轉(zhuǎn)換,這樣就使面向?qū)ο蟾子跒槿藗兯斫狻⒔邮芎驼莆铡?.2.2面向?qū)ο蟮幕靖拍?.對象對象是人們要進行研究的任何事物,從最簡單的整數(shù)到復(fù)雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。對象類型主要有以下幾種:(1)有形實體:指一切看得見、摸得著的實物,如計算機、機房、機器人和工件等。這些都屬于有形實體,也是最容易識別的對象。(2)作用:指人或組織所起的作用,如醫(yī)生、教師、學生、工人、公司和部門等。9.2.2面向?qū)ο蟮幕靖拍?3)事件:指在特定時間所發(fā)生的事,如飛行、演出、事故和開會等。(4)性能說明:指廠商對產(chǎn)品性能的說明,如產(chǎn)品名字、型號及各種性能指標等。對象不僅能表示結(jié)構(gòu)化的數(shù)據(jù),而且能表示抽象的事件、規(guī)則以及復(fù)雜的工程實體。因此,對象具有很強的表達能力和描述功能。9.2.2面向?qū)ο蟮幕靖拍?.對象的狀態(tài)和行為對象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài),如某個具體的學生張三,具有姓名、年齡、性別、家庭地址、學歷及所在學校等數(shù)據(jù)值,用這些數(shù)據(jù)值來表示這個具體的學生的情況。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。如某個工人經(jīng)過“增加工資”的操作后,他的工資額就發(fā)生變化。9.2.2面向?qū)ο蟮幕靖拍顚ο髮崿F(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中;對象內(nèi)的數(shù)據(jù)具有自己的操作,從而可靈活地專門描述對象的獨特行為,具有較強的獨立性和自治性;其內(nèi)部狀態(tài)不受或很少受外界的影響,具有很好的模塊化特點。對象為軟件重用奠定了堅實的基礎(chǔ)。9.2.2面向?qū)ο蟮幕靖拍?.類具有相同或相似性質(zhì)對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性;類具有操作,它是對象的行為的抽象,用操作名和實現(xiàn)該操作的方法來描述。9.2.2面向?qū)ο蟮幕靖拍罾?,人、教師、學生、公司、長方形、工廠和窗口等都是類的例子;每個人都有年齡、性別、名字及正在從事的工作,這些就是人這個類的屬性;而“畫長方形”、“顯示長方形”則是長方形這個類具有的操作。對象和類之間的關(guān)系如圖9.1所示。圖9.1對象、類和消息傳遞9.2.2面向?qū)ο蟮幕靖拍?.類的關(guān)系在客觀世界中有若干類,這些類之間有一定的結(jié)構(gòu)關(guān)系,通常有兩種主要的結(jié)構(gòu)關(guān)系,即一般具體結(jié)構(gòu)關(guān)系及整體部分結(jié)構(gòu)關(guān)系。一般具體結(jié)構(gòu)稱為分類結(jié)構(gòu),也可以說是“或”關(guān)系,是“isa”關(guān)系。例如,汽車和交通工具都是類。它們之間的關(guān)系是一種“或”關(guān)系,汽車“是一種”交通工具。類的這種層次結(jié)構(gòu)可用來描述現(xiàn)實世界中的一般化的抽象關(guān)系,通常越在上層的類越具有一般性和共性,越在下層的類越具體、越細化。9.2.2面向?qū)ο蟮幕靖拍钫w部分結(jié)構(gòu)稱為組裝結(jié)構(gòu),它們之間的關(guān)系是一種“與”關(guān)系,是“hasa”關(guān)系。例如,汽車和發(fā)動機都是類,它們之間是一種“與”關(guān)系,汽車“有一個”發(fā)動機。類的這種層次關(guān)系可用來描述現(xiàn)實世界中的類的組成的抽象關(guān)系。上層的類具有整體性,下層的類具有成員性。在類的結(jié)構(gòu)關(guān)系中,通常上層類稱為父類或超類,下層類稱為子類。9.2.2面向?qū)ο蟮幕靖拍?.消息和方法對象之間進行通信的一種構(gòu)造叫做消息。在對象的操作中,當一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。接收消息的對象經(jīng)過解釋,然后給予響應(yīng)。這種通信機制稱為消息傳遞。發(fā)送一條消息至少要包含說明接收消息的對象名、發(fā)送給該對象的消息名(即對象名.方法名),一般還要對參數(shù)加以說明,參數(shù)可以是只有認識消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。9.2.2面向?qū)ο蟮幕靖拍钕鬟f是從外部使得一個對象具有某種主動數(shù)據(jù)的行為。對于一個系統(tǒng)來說,使用消息傳遞的方法可更好地利用對象的分離功能。類中操作的實現(xiàn)過程叫做方法,一個方法有方法名、參數(shù)及方法體。當一個對象接收一條消息后,它所包含的方法決定對象怎樣動作。方法也可以發(fā)送消息給其他對象,請求執(zhí)行某一動作或提供信息。由于對象的內(nèi)部對用戶是密封的,因而消息只是對象同外部世界連接的管道。而對象內(nèi)部的數(shù)據(jù)只能被自己的方法所操縱。對象、類和消息傳遞如圖9.1所示。9.2.3面向?qū)ο蟮奶卣?.對象唯一性每個對象都有自身唯一的標識,通過這種標識,可找到相應(yīng)的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。在對象建立時,由系統(tǒng)授予新對象唯一的對象標識符,它在歷史版本管理中有巨大作用。9.2.3面向?qū)ο蟮奶卣?.分類性分類性是指將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與應(yīng)用有關(guān)的重要性質(zhì),而忽略其他一些無關(guān)內(nèi)容。任何類的劃分都是主觀的,但必須與具體的應(yīng)用有關(guān)。每個類是個體對象的可能無限集合,而每個對象是相關(guān)類的實例。9.2.3面向?qū)ο蟮奶卣?.繼承性繼承性是父類和子類之間共享數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關(guān)系。在定義和實現(xiàn)一個類的時候,可以在一個已經(jīng)存在的類的基礎(chǔ)之上來進行,把這個已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。繼承性是面向?qū)ο蟪绦蛟O(shè)計語言不同于其他語言的最主要的特點,是其他語言所沒有的。在類層次中,子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)和方法,稱為單重繼承;在類層次中,子類繼承了多個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承。9.2.3面向?qū)ο蟮奶卣髟谲浖_發(fā)中,類的繼承性使所建立的軟件具有開放性,可進行擴充,是信息組織與分類的行之有效的方法,它簡化了對象、類的創(chuàng)建工作量,增加了代碼的可重用性。采用繼承性,提供了類的規(guī)范的等級結(jié)構(gòu),對單重繼承,可用樹結(jié)構(gòu)來描述;對多重繼承,可用格結(jié)構(gòu)來描述。通過類的繼承關(guān)系,使公共的特性能夠共享,提高了軟件的重用性。首先進行共同特性的設(shè)計和驗證,然后自頂向下來開發(fā),逐步加入新的內(nèi)容,符合逐步細化的原則,通過繼承,便于實現(xiàn)多態(tài)性。9.2.3面向?qū)ο蟮奶卣?.多態(tài)性(多形性)多態(tài)性是指相同的操作或函數(shù)、過程作用于多種類型的對象上并獲得不同結(jié)果。不同的對象,收到同一消息產(chǎn)生完全不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。如MOVE操作,可以是窗口對象的移動操作,也可以是國際象棋棋子移動的操作。多態(tài)性允許每個對象以適合自身的方式去響應(yīng)共同的消息,這樣就增強了操作的透明性、可理解性和可維護性。用戶不必為相同的功能操作作用于不同類型的對象而費心地去識別。9.2.4面向?qū)ο蟮囊?.抽象抽象是指強調(diào)實體的本質(zhì)、內(nèi)在的屬性,而忽略一些無關(guān)緊要的屬性。在系統(tǒng)開發(fā)中,抽象指的是在決定如何實現(xiàn)對象之前,對象的意義和行為。使用抽象可以盡可能避免過早考慮一些細節(jié),大多數(shù)語言都提供數(shù)據(jù)抽象機制,而運用繼承性和多態(tài)性強化了這種能力,分析階段使用抽象僅僅涉及應(yīng)用域的概念,在理解問題域之前不考慮設(shè)計與實現(xiàn)。合理應(yīng)用抽象可以在分析、設(shè)計程序結(jié)構(gòu)、數(shù)據(jù)庫結(jié)構(gòu)及文檔化等過程中使用統(tǒng)一的模型。9.2.4面向?qū)ο蟮囊孛嫦驅(qū)ο蟊绕渌椒夹g(shù)有更高的抽象性。對象具有極強的抽象表達能力,對象可表示一切事物,可表達結(jié)構(gòu)化的數(shù)據(jù),也可表達非結(jié)構(gòu)化的數(shù)據(jù),如工程實體、圖形、聲音及規(guī)則等。而類實現(xiàn)了對象的數(shù)據(jù)和行為的抽象,是對象的共性的抽象。9.2.4面向?qū)ο蟮囊?.封裝性(信息隱蔽)封裝性是保證軟件部件具有優(yōu)良的模塊性的基礎(chǔ)。封裝性是指所有軟件部件內(nèi)部都有明確的范圍以及清楚的外部邊界。每個軟件部件都有友好的界面接口,軟件部件的內(nèi)部實現(xiàn)與外部可訪問性分離。面向?qū)ο蟮念愂欠庋b良好的模塊,類定義將其說明(用戶可見的外部接口)與實現(xiàn)(用戶不可見的內(nèi)部實現(xiàn))顯式地分開,其內(nèi)部實現(xiàn)按其具體定義的作用域提供保護。9.2.4面向?qū)ο蟮囊?/p>

對象是封裝的最基本單位,在用面向?qū)ο蟮姆椒ń鉀Q實際問題時,要創(chuàng)建類的實例,即建立對象,除了應(yīng)具有的共性外,還應(yīng)定義僅由該對象所私有的特性。因此,對象封裝比類的封裝更具體、更細致,是面向?qū)ο蠓庋b的最基本單位。

封裝防止了程序相互依賴性而帶來的變動影響。面向?qū)ο蟮姆庋b比傳統(tǒng)語言的封裝更為清晰、有力。9.2.4面向?qū)ο蟮囊?.共享性面向?qū)ο蠹夹g(shù)在不同級別上促進了共享,有以下幾種:(1)同一個類中對象的共享。同一個類中的對象有著相同數(shù)據(jù)結(jié)構(gòu),這是由數(shù)據(jù)成員的類型、定義順序及繼承關(guān)系等決定的;也有著相同的行為特征,這是由方法接口和實現(xiàn)決定的。從這個意義上講,這些對象之間是結(jié)構(gòu)、行為特征的共享關(guān)系。進一步,在某些實際應(yīng)用中還會出現(xiàn)要求這些對象之間有狀態(tài)(即數(shù)據(jù)成員值)的共享關(guān)系。例如,所有同心圓的類,各個具體圓的圓心坐標值是相同的,即共處于同一狀態(tài)。9.2.4面向?qū)ο蟮囊?2)在同一個應(yīng)用中的共享。在同一應(yīng)用的類層次結(jié)構(gòu)中,存在繼承關(guān)系的各相似子類中,存在著數(shù)據(jù)結(jié)構(gòu)和行為的繼承,使各相似子類共享共同的結(jié)構(gòu)和行為。使用繼承來實現(xiàn)代碼的共享,這也是面向?qū)ο蟮闹饕獌?yōu)點之一。(3)在不同應(yīng)用中的共享。面向?qū)ο蟛粌H允許在同一應(yīng)用共享信息,而且為未來目標的可重用設(shè)計準備了條件。通過類庫這種機制和結(jié)構(gòu)來實現(xiàn)不同應(yīng)用中的信息共享。4.強調(diào)對象結(jié)構(gòu)而不是程序結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論