面向?qū)ο蠓椒▽W(xué)_第1頁
面向?qū)ο蠓椒▽W(xué)_第2頁
面向?qū)ο蠓椒▽W(xué)_第3頁
面向?qū)ο蠓椒▽W(xué)_第4頁
面向?qū)ο蠓椒▽W(xué)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蠓椒▽W(xué)第6章面向?qū)ο蟮母拍钆c模型面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)的主要優(yōu)點(diǎn)面向?qū)ο蟮母拍蠲嫦驅(qū)ο蠼ο竽P蛣討B(tài)模型功能模型小結(jié)面向?qū)ο蟆けM可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識世界解決問題的方法與過程,也就是使描述問題的問題空間(也稱為問題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。6.1面向?qū)ο蠓椒▽W(xué)概述對象與傳統(tǒng)的數(shù)據(jù)有本質(zhì)區(qū)別,它不是被動地等待外界對它施加操作,相反,它是進(jìn)行處理的主體。必須發(fā)消息請求對象主動地執(zhí)行它的某些操作,處理它的私有數(shù)據(jù),而不能從外界直接對它的私有數(shù)據(jù)進(jìn)行操作。它不是把程序看作是工作在數(shù)據(jù)上的一系列過程或函數(shù)的集合,而是把程序看作是相互協(xié)作而又彼此獨(dú)立的對象的集合。每個對象就像一個微型程序,有自己的數(shù)據(jù)、操作、功能和目的。在許多系統(tǒng)中解空間對象都可以直接模擬問題空間的對象,解空間與問題空間的結(jié)構(gòu)十分一致,因此,這樣的程序易于理解和維護(hù)。認(rèn)為客觀世界是由各種對象組成的,任何事物都是對象,復(fù)雜的對象可以由比較簡單的對象以某種方式組合而成?!び脤ο蠓纸馊〈藗鹘y(tǒng)方法的功能分解。把所有對象都劃分成各種對象類,每個對象類都定義了一組數(shù)據(jù)和一組方法。數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息。按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。對象彼此之間僅能通過傳遞消息互相聯(lián)系。OO=Objects+Classes+Inheritance+Communicationwithmessages也就是說,面向?qū)ο缶褪羌仁褂脤ο笥质褂妙惡屠^承等機(jī)制,而且對象之間僅能通過傳遞消息實(shí)現(xiàn)彼此通信。與人類習(xí)慣的思維方法一致穩(wěn)定性好可重用性好較易開發(fā)大型軟件產(chǎn)品可維護(hù)性好6.2面向?qū)ο蠓椒▽W(xué)的主要優(yōu)點(diǎn)6.3面向?qū)ο蟮母拍顚ο笤趹?yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何事物都可以作為對象(Object)??傊?對象是對問題域中某個實(shí)體的抽象,設(shè)立某個對象就反映了軟件系統(tǒng)保存有關(guān)它的信息并具與它進(jìn)行交互的能力。圖6.1對象的形象表示1.對象的形象表示2.對象的定義·從面向?qū)ο蟪绦蛟O(shè)計(jì)的角度看“對象”,對象是具有相同狀態(tài)的一組操作的集合?!男畔⒛M的角度看待“對象”,對象是對問題域中某個東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個東西的信息或與它交互的能力。也就是說,對象是對屬性值和操作的封裝。對象∷=<ID,MS,DS,MI>其中,ID是對象的標(biāo)識或名字MS是對象中的操作集合DS是對象的數(shù)據(jù)結(jié)構(gòu)MI是對象受理的消息名集合(即對外接口)這個定義是一個形式化的定義。對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個封裝體有可以唯一地標(biāo)識它的名字,而且向外界提供一組服務(wù)(即公有的操作)。對象中的數(shù)據(jù)表示對象的狀態(tài),一個對象的狀態(tài)只能由該對象的操作來改變。每當(dāng)需要改變對象的狀態(tài)時,只能由其他對象向該對象發(fā)送消息。對象響應(yīng)消息時,按照消息模式找出與之匹配的方法,并執(zhí)行該方法。圖6.2用自動機(jī)模擬對象對象的特點(diǎn)以數(shù)據(jù)為中心。

對象是主動的。

實(shí)現(xiàn)了數(shù)據(jù)封裝。本質(zhì)上具有并行性。模塊獨(dú)立性好。類(Class)在面向?qū)ο蟮能浖夹g(shù)中,“類”就是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義,也就是說,類是對具有相同屬性和行為的一個或多個對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的說明。實(shí)例(Instance)實(shí)例就是由某個特定的類所描述的一個具體的對象。3. 消息(Message)消息,就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。通常,一個消息由下述三部分組成:·接收消息的對象;·消息選擇符(也稱為消息名);·零個或多個變元。4.方法(Method)·就是對象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法,響應(yīng)消息的方法。5.屬性(Attribute)·屬性,就是類中所定義的數(shù)據(jù),它是對客觀世界實(shí)體所具有的性質(zhì)的抽象。類的每個實(shí)例都有自己特有的屬性值。6.封裝(Encapsulation)·· 有一個清晰的邊界。所有私有數(shù)據(jù)和實(shí)現(xiàn)操作的代碼都被封裝在這個邊界內(nèi),從外面看不見更不能直接訪問?!ぁ?有確定的接口(即協(xié)議)。這些接口就是對象可以接受的消息,只能通過向?qū)ο蟀l(fā)送消息來使用它。·· 受保護(hù)的內(nèi)部實(shí)現(xiàn)。實(shí)現(xiàn)對象功能的細(xì)節(jié)(私有數(shù)據(jù)和代碼)不能在定義該對象的類的范圍外進(jìn)行訪問。封裝性也就是信息隱藏,通過封裝把對象的實(shí)現(xiàn)細(xì)節(jié)對外界隱藏起來了。7.繼承(Inheritance)·廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。在面向?qū)ο蟮能浖夹g(shù)中,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制?!ぎ?dāng)一個類只允許有一個父類時,類的繼承是單繼承;當(dāng)允許一個類有多個父類時,類的繼承是多重繼承。圖6.3實(shí)現(xiàn)繼承機(jī)制的原理8.多態(tài)性(Polymorphism)·多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。當(dāng)對象接收到發(fā)送給它的消息時,根據(jù)該對象所屬于的類動態(tài)選用在該類中定義的實(shí)現(xiàn)算法。9.重載(Overloading)·函數(shù)重載是指在同一作用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字·運(yùn)算符重載是指同一個運(yùn)算符可以施加于不同類型的操作數(shù)上面。當(dāng)然,當(dāng)參數(shù)特征不同或被操作數(shù)的類型不同時,實(shí)現(xiàn)函數(shù)的算法或運(yùn)算符的語義是不相同的。6.4面向?qū)ο蠼C枋鱿到y(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型描述系統(tǒng)功能的功能模型。一個典型的軟件系統(tǒng)組合了上述三方面內(nèi)容:它使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動態(tài)模型),并且完成數(shù)據(jù)值的變化(功能模型)。6.5對象模型對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。它是對模擬客觀世界實(shí)體的對象以及對象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。表示類—&—對象的圖形符號1.類—&—對象“類—&—對象”是一個專用術(shù)語,它的含義是“一個類及屬于該類的對象”。圖6.4(a)是表示類—&—對象的圖形符號,圖6.4(b)是表示類的圖形符號。圖6.4表示符號命名·類名是一類對象的名字。命名是否恰當(dāng)對系統(tǒng)的可理解性影響相當(dāng)大,因此,命名時應(yīng)該遵守以下幾條準(zhǔn)則?!?1)使用標(biāo)準(zhǔn)術(shù)語·(2)使用具有確切含義的名詞·(3)必要時用名詞短語作名字6.5.2

表示結(jié)構(gòu)的圖形符號類—&—對象間的關(guān)系可以概括為歸納(泛化)關(guān)系、組合(聚集)關(guān)系及關(guān)聯(lián)關(guān)系。1.歸納關(guān)系·歸納關(guān)系就是“一般—特珠”關(guān)系,它反映了一個類與若干個互不相容的子類之間的分類關(guān)系。高層類(即基類)說明一般性的屬性,低層類(即派生類)說明特殊屬性。低層類對象“即是(ISA)”某種特殊的高層類對象,它繼承了在高層類中定義的屬性和服務(wù)。圖6.6表示歸納關(guān)系的2.組合關(guān)系組合關(guān)系就是“整體—部分”關(guān)系,它反映了對象之間的構(gòu)成關(guān)系。組合關(guān)系也稱為聚集關(guān)系。組合關(guān)系具有的最重要的性質(zhì)是傳遞性。也就是說,如果A是B的一部分,B是C的一部分,則A也是C的一部分。圖6.5表示共享組合關(guān)系的3.關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系反映對象之間相互依賴、相互作用的關(guān)系。圖6.8教師與屬于他的書之間的關(guān)聯(lián)關(guān)系圖6.10一個受限的關(guān)聯(lián)圖6.11消息連接的表示符6.5.3

對象模型之例圖6.12一家公司的對象模型圖6.13與圖6.12對應(yīng)的ER圖6.6

動態(tài)模型動態(tài)模型表示瞬時的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對象模型中的對象的合法變化序列。通常,用狀態(tài)圖來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件、以及對象的行為(對事件的響應(yīng))。每個類的動態(tài)行為用一張狀態(tài)圖來描繪,各個類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動態(tài)模型。也就是說,動態(tài)模型是基于事件共享而互相關(guān)聯(lián)的一組狀態(tài)圖的集合。6.6.1概念事件·事件是某個特定時刻所發(fā)生的事情,它是對引起對象從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的現(xiàn)實(shí)世界中的事件的抽象。事件沒有持續(xù)時間,是瞬間完成的。狀態(tài)·狀態(tài)就是對象在其生命周期中的某個特定階段所具有的行為模式,它是對影響對象行為的屬性值的一種抽象。3.行為·是指對象達(dá)到某種狀態(tài)時所做的一系列處理操作。這些操作是需要耗費(fèi)時間的。6.6.2 符號狀態(tài)用圓形框或橢圓框表示,框內(nèi)可標(biāo)上狀態(tài)名也可以不給狀態(tài)起名字,行為在框內(nèi)用關(guān)鍵字do(后接冒號)標(biāo)明。從一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)換用箭頭線表示,線上標(biāo)以事件名。必要時可在事件名后面加一個方括號,括號內(nèi)寫上狀態(tài)轉(zhuǎn)換的條件。6.7功能模型功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,因此更直接地反映了用戶對目標(biāo)系統(tǒng)的需求。6.7.1 表示方法通常,功能模型由一組數(shù)據(jù)流圖組成。三種模型之間的關(guān)系對象模型是最基本最重要的,它為其他兩種模型奠定了基礎(chǔ)。針對每個類建立的動態(tài)模型,描述了類實(shí)例的生命周期或運(yùn)行周期。狀態(tài)轉(zhuǎn)換驅(qū)使行為發(fā)生,這些行為在數(shù)據(jù)流圖中被映射成處理,它們同時與對象模型中的服務(wù)相對應(yīng)。·功能模型中的處理,對應(yīng)于對象模型中類—&—對象所提供的服務(wù)。通常,在頂層數(shù)據(jù)流圖中的處理,對應(yīng)于復(fù)雜對象提供的服務(wù);在低層數(shù)據(jù)流圖中的處理,對應(yīng)于更基本的對象(基本對象是復(fù)雜對象的組成部分)的服務(wù)。有時一個處理對應(yīng)多個服務(wù),也有一個服務(wù)對應(yīng)多個處理的時候。功能模型中的數(shù)據(jù)存儲,以及數(shù)據(jù)的源點(diǎn)/終點(diǎn)(在功能模型中稱為動作對象),通常是對象模型中的對象。功能模型中的數(shù)據(jù)流,往往是對象模型中的屬性值,也可能是整個對象。功能模型中的處理可能產(chǎn)生動態(tài)模型中的事件。對象模型描述了功能模型中的動作對象、數(shù)據(jù)存儲以及數(shù)據(jù)流的結(jié)構(gòu)。6.8小結(jié)面向?qū)ο蠓缎兔黠@優(yōu)于結(jié)構(gòu)化范型。面向?qū)ο蠓缎湍軌蜷_發(fā)出穩(wěn)定性好、可重用性好和可維護(hù)性好的軟件。面向?qū)ο蠓椒▽W(xué)比較自然地模擬了人類認(rèn)識客觀世界的思維方式,它所追求的目標(biāo)和遵循的基本原則,就是使描述問題的問題空間和在計(jì)算機(jī)中解決問題的解空間,在結(jié)構(gòu)上盡可能一致客觀世界由對象組成。每個對象都有自己的內(nèi)部狀態(tài)和運(yùn)動規(guī)律,不同對象彼此間通過消息相互作用、相互聯(lián)系,從而構(gòu)成了我們所要分析和構(gòu)造的系統(tǒng)。系統(tǒng)中每個對象都

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論