




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第 2 章章 面向?qū)ο蟮南到y(tǒng)分析與設(shè)計方法面向?qū)ο蟮南到y(tǒng)分析與設(shè)計方法2.1 面向?qū)ο蟮幕舅枷牒突靖拍蠲嫦驅(qū)ο蟮幕舅枷牒突靖拍?2.2 面向?qū)ο蟮南到y(tǒng)開發(fā)方法面向?qū)ο蟮南到y(tǒng)開發(fā)方法 返回主目錄2.1 面向?qū)ο蟮幕舅枷牒突靖拍蠲嫦驅(qū)ο蟮幕舅枷牒突靖拍?2.1.1 面向?qū)ο蟮幕舅枷朊嫦驅(qū)ο蟮幕舅枷?與傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計方法用過程化的方式描述應(yīng)用系統(tǒng)不同,面向?qū)ο蟮姆椒ㄕJ為,客觀世界是由各種各樣的對象組成的,每個對象都有各自的內(nèi)部狀態(tài)和運動規(guī)律,不同對象之間通過消息傳送相互作用和聯(lián)系就構(gòu)成了各種不同的系統(tǒng)。 采用對象的觀點看待所要解決的問題,并將其抽象為系統(tǒng)是極其自然與簡單的
2、,因為它符合人類的思維習(xí)慣,使得應(yīng)用系統(tǒng)更容易理解。同時,由于應(yīng)用系統(tǒng)是由相互獨立的對象構(gòu)成的,使得系統(tǒng)的修改可以局部化,因此系統(tǒng)更易于維護。 2.1.2 對象對象 對象是客觀世界中事物在計算機領(lǐng)域中的抽象,是一組數(shù)據(jù)和施加于該組數(shù)據(jù)上的一組操作(行為)組成的集合體。 對象是面向?qū)ο蠓椒ǖ闹黧w。當一個對象映射為軟件實現(xiàn)時由三個部分組成: (1) 私有的數(shù)據(jù)結(jié)構(gòu)。它用于描述對象的內(nèi)部狀態(tài)。 (2) 處理。也稱為操作或方法,它施加于數(shù)據(jù)結(jié)構(gòu)之上。 (3) 接口。這是對象可被共享的部分,消息通過接口調(diào)用相應(yīng)的操作。接口規(guī)定哪些操作是允許的。它不提供操作是如何實現(xiàn)的信息。 C+語言中的對象由描述對象狀
3、態(tài)的數(shù)據(jù)結(jié)構(gòu)和作用于這個數(shù)據(jù)結(jié)構(gòu)上的方法(或稱為操作)構(gòu)成,它們都可以分為私有的和公有的兩個部分,私有部分從對象的外部不可直接訪問,而公有部分可以由對象的外部訪問。C+語言中對象之間的相互聯(lián)系和作用通過 對公有數(shù)據(jù)和方法(操作)的訪問來實現(xiàn)。例如對于某個人,它的狀態(tài)可能是: 身高: 175 cm 年齡: 20 性別: 男 膚色: 黃色 它的操作可能是: 回答身高 回答年齡 回答性別 回答膚色 其它對象不能直接訪問它的內(nèi)部狀態(tài)信息,只能通過調(diào)用這些公共操作來訪問該對象。 客觀世界的同一對象在不同的應(yīng)用系統(tǒng)中,由于考察對象的角度不同,對其抽象的數(shù)據(jù)結(jié)構(gòu)和操作都可能是不同的。例如對于一個學(xué)生,在學(xué)籍
4、管理系統(tǒng)與戶籍管理系統(tǒng)兩個不同的應(yīng)用系統(tǒng)中,抽象出的表示內(nèi)部狀態(tài)的數(shù)據(jù)結(jié)構(gòu)和對數(shù)據(jù)結(jié)構(gòu)進行的操作都是不同的。因此,在對實際應(yīng)用系統(tǒng)中的對象進行分析時,應(yīng)注意該系統(tǒng)的要求,區(qū)分哪些是該對象的本質(zhì)特征。 2.1.3 類與實例類與實例 采用面向?qū)ο蠓椒ㄟM行系統(tǒng)分析與設(shè)計時,對于一個具體的系統(tǒng)而言,可能存在很多具有相同特征的對象。例如,對于一個學(xué)籍管理系統(tǒng),存在許多學(xué)生對象,它們具有相同的結(jié)構(gòu)特征和行為特征,只是表示內(nèi)部狀態(tài)的數(shù)據(jù)值不同。為了描述這種相同結(jié)構(gòu)特征和行為特征的對象,面向?qū)ο蠓椒ㄒ肓祟惖母拍睢_@一點與人們在認識客觀世界的事物時所采取的分類思想相同。人們在認識事物時總是將具有相同特征的事物
5、歸為一類,屬于某類的一個事物具有該類事物的共同特征。 類是對一組具有相同特征的對象的抽象描述,所有這些對象都是這個類的實例。對于學(xué)籍管理系統(tǒng),學(xué)生是一個類,而一個具體的學(xué)生則是學(xué)生類的一個實例。 一個類的不同實例具有相同的操作或行為的集合和相同的信息結(jié)構(gòu)或?qū)傩缘亩x,但屬性值可以不同;不同的實例具有不同的對象標識。對于學(xué)生類中的每一個對象,描述它們所使用的數(shù)據(jù)結(jié)構(gòu)相同,但是其值不同。在程序設(shè)計語言中,類是一種數(shù)據(jù)類型,而對象是該類型的變量,變量名即是某個具體對象的標識。 因此,一個類的定義至少包含以下兩個方面的描述: (1) 該類所有實例的屬性定義或結(jié)構(gòu)的定義。 (2) 該類所有實例的操作(或
6、行為)的定義。 在C+語言中,一個類的定義包含數(shù)據(jù)成員和函數(shù)成員兩部分內(nèi)容。數(shù)據(jù)成員定義該類對象的屬性,不同的對象屬性的值可以不同;函數(shù)成員定義了該類對象的操作。 在一個系統(tǒng)中,每一個對象均屬于某個類,類是對象的屬性和操作的定義模板,而實例是某個具體的對象。 2.1.4 繼承性繼承性 人們在對客觀世界的事物進行描述時,經(jīng)常采取分類的方法。類是有層次的,即某個大類的事物可能分為若干小類,而這些小類可能又分為若干個更小的類。 面向?qū)ο笏枷氩杉{了事物分類的層次思想,在描述類的時候,某些類之間具有結(jié)構(gòu)和行為的共性。例如教師類與學(xué)生類,在結(jié)構(gòu)方面均具有姓名、年齡、身高、體重等,在行為(或操作)方面均具有
7、回答身高、回答體重等操作。將這些共性抽取出來,形成一個單獨的類人,描述教師類和學(xué)生類中的共性。類人的結(jié)構(gòu)特征和行為特征可以被多個相關(guān)的類共享,例如教師類和學(xué)生類繼承了類人的結(jié)構(gòu)和行為特征。 在C+語言中,通過類的派生機制來實現(xiàn)類的繼承,可以從一個類中派生出一個新的類,這個類稱為派生類的基類或父類,派生出的新類稱為基類的派生類或子類。派生類的對象具有基類對象的特征,同時又有其自身特有的特征。一個教師類的對象與一個學(xué)生類的對象都具有類人所描述的特征,同時又具有各自所屬教師類和學(xué)生類特有的特征。 利用類之間的繼承關(guān)系,可以簡化類的描述。在類人中描述教師類和學(xué)生類的共性,而在學(xué)生類和教師類中只需描述各
8、自的個性。利用繼承機制可以提高軟件代碼的可重用性。在設(shè)計一個新類時,不必從頭設(shè)計編寫全部的代碼,可以通過從已有的具有類似特性的類中派生出一個類,繼承原有類中的部分特性,再加上所需的新的特性。 這一點與面向過程的設(shè)計語言中的過程或函數(shù)不同,要使用具有相似功能的過程或函數(shù),必須修改源程序代碼以使其適應(yīng)新系統(tǒng)的功能需求,而類的派生機制無須原有類的源代碼即可派生出新的類。 利用類及其繼承性描述系統(tǒng)時,由于類之間的繼承關(guān)系,可能會形成一種具有層次性的類結(jié)構(gòu)。在使用類的層次結(jié)構(gòu)描述系統(tǒng)時,某些類之間的層次關(guān)系可以有多種實現(xiàn)方案。例如中學(xué)生類,既可以直接從類人派生出來,也可以從類人的派生類學(xué)生類派生出來。在
9、設(shè)計類的層次結(jié)構(gòu)時,應(yīng)注意建立的類層次結(jié)構(gòu)是否易于理解以及組織類結(jié)構(gòu)的費用等方面的問題。設(shè)計出來的類層次結(jié)構(gòu)是否合理,往往取決于系統(tǒng)分析員的經(jīng)驗等因素。 另外,人們在對客觀世界的事物分類時,一個事物可能屬于多個類,具有多個類的特性。例如一個黑人學(xué)生,他既屬于學(xué)生類,又屬于黑人類。這種情形在面向?qū)ο蠓椒ㄖ蟹Q為多繼承,即一個類同時從多個類中派生出來,此時類的層次結(jié)構(gòu)是網(wǎng)狀的。多繼承在有些面向?qū)ο蟮某绦蛟O(shè)計語言中是不允許的,C+語言允許多繼承。只允許派生類有一個基類稱為單繼承,單繼承的類層次結(jié)構(gòu)是樹狀的。 2.1.5 多態(tài)性多態(tài)性 多態(tài)性是面向?qū)ο笙到y(tǒng)的又一重要特性。所謂多態(tài)即一個名詞可具有多種語義
10、。 在C+語言中,多態(tài)性主要表現(xiàn)在下述幾個方面:(1) 重載:在C+語言中,同一函數(shù)名以及運算符可以具有不(2) 同含義的多種實現(xiàn)版本,編譯器將根據(jù)函數(shù)調(diào)用的參數(shù)(3) 形式?jīng)Q定調(diào)用哪一種實現(xiàn)版本。 顯示圖形、擦除圖形、移動圖形。移動圖形的操作都是首先擦除圖形,然后改變圖形的位置基準點,再在新位置顯示出圖形。在類Shape中實現(xiàn)移動圖形的操作,每種圖形的顯示、擦除、改變基準點等操作在派生類中分別實現(xiàn)。若程序中使用某圖形對象的移動操作,編譯器采用動態(tài)聯(lián)編的手段,在執(zhí)行時根據(jù)該圖形對象是哪一個類的實例,決定調(diào)用哪一個類的顯示、擦除、改變基準點的方法。這種多態(tài)性稱為運行時的多態(tài)性。而重載在編譯時編譯
11、器即可確定使用哪一個實現(xiàn)版本,是靜態(tài)的。 2.1.6 封裝封裝 封裝是一種信息隱藏技術(shù),對象內(nèi)部對用戶是隱藏的,不可直接訪問;用戶只能見到對象封裝界面上的信息,通過對象的外部接口訪問對象。用戶向?qū)ο蟀l(fā)送消息,對象根據(jù)收到的消息調(diào)用內(nèi)部方法作出響應(yīng)。封裝的目的在于將對象的使用者和對象的設(shè)計者分開,使用者無須知道對象內(nèi)部實現(xiàn)的細節(jié),只需要知道對象接收的消息即可。 封裝的定義為: (1) 一個清楚的邊界。所有對象的內(nèi)部軟件的范圍被限定在這個邊界內(nèi)。 (2) 一個接口。該接口用以描述這個對象和其它對象之間的相互作用。 (3) 受保護的內(nèi)部實現(xiàn)。這個實現(xiàn)給出了由軟件對象提供的功能的實現(xiàn)細節(jié),實現(xiàn)細節(jié)不能
12、在定義這個對象的類的外面訪問。 在C+語言中,對象的構(gòu)成由類來描述,每個類的成員可以分為私有和公有兩種類型,對象的外部不能直接訪問對象的私有部分。 對象的封裝特性可以提高模塊之間的獨立性,使得系統(tǒng)易于調(diào)試和維護。下面舉一個簡單的例子。 假設(shè)應(yīng)用系統(tǒng)中有兩個模塊:一個模塊從計算機的串行通訊口接收數(shù)據(jù),放入緩沖區(qū);另一個為數(shù)據(jù)處理模塊。數(shù)據(jù)處理模塊可以直接訪問緩沖區(qū),從緩沖區(qū)中讀取數(shù)據(jù)。此時這兩個模塊之間的關(guān)聯(lián)程度密切,模塊獨立性很差。如果接收數(shù)據(jù)的模塊改變緩沖區(qū)的管理方法,則第二個模塊必須作相應(yīng)的改變。如果數(shù)據(jù)處理模塊對緩沖區(qū)操作有誤,將影響數(shù)據(jù)接收模塊,在程序調(diào)試時難以確定錯誤發(fā)生在哪一個模塊
13、中。實際上,數(shù)據(jù)處理模塊并不需要緩沖區(qū)的管理信息,它只需知道緩沖區(qū)中有沒有數(shù)據(jù)以及有什么樣的數(shù)據(jù)。上面的處理方法違反了軟件工程中的信息隱藏原則,數(shù)據(jù)處理模塊訪問了它不需要的信息。 將數(shù)據(jù)接收模塊封裝為一個對象,緩沖區(qū)的管理信息作為其私有數(shù)據(jù),即可避免上面的問題。數(shù)據(jù)接收模塊只要提供一個從緩沖區(qū)獲得數(shù)據(jù)的接口即可。數(shù)據(jù)處理模塊只能訪問該接口,而不能直接操作緩沖區(qū)。此時兩個模塊之間的獨立性提高,如需改變緩沖區(qū)的管理方法,只需修改數(shù)據(jù)接收模塊,數(shù)據(jù)處理模塊將不受任何影響,因為數(shù)據(jù)接收模塊提供的外部接口沒有改變。圖2.1與圖2.2是兩種處理方法的示意圖。 圖2.1 傳統(tǒng)的處理方法緩沖區(qū)模塊1模塊2 圖
14、2.2 對象封裝的處理方法 模 塊 1 緩沖區(qū) 獲取數(shù)據(jù)的外部接口 模 塊 2 *2.2 面向?qū)ο蟮南到y(tǒng)開發(fā)方法面向?qū)ο蟮南到y(tǒng)開發(fā)方法 2.2.1 概述概述 計算機應(yīng)用系統(tǒng)的開發(fā)過程是一個相當復(fù)雜的過程,使用面向?qū)ο蠓椒ㄟM行系統(tǒng)開發(fā),首要任務(wù)是采用面向?qū)ο蟮母拍罴捌涑橄髾C制將開發(fā)的系統(tǒng)對象化和模型化,建立應(yīng)用系統(tǒng)模型;然后使用面向?qū)ο蟮某绦蛟O(shè)計語言來實現(xiàn)系統(tǒng)中的對象。面向?qū)ο蟮拈_發(fā)方法可分為四個階段: (1) 系統(tǒng)調(diào)查和需求分析。即對應(yīng)用系統(tǒng)將要實現(xiàn)的功能以及用戶對系統(tǒng)開發(fā)的需求進行調(diào)查研究。這是所有開發(fā)方法都必須進行的。 (2) 分析問題的性質(zhì)和求解問題。在繁雜的問題域中抽象地識別出對象及其
15、行為、結(jié)構(gòu)、屬性、方法等。這一階段稱為面向?qū)ο蠓治?,簡稱為OOA。 (3) 整理問題。即對分析的結(jié)果作進一步的抽象、歸類、整理,最終以規(guī)范的形式描述對象和類。這一步稱為面向?qū)ο笤O(shè)計,簡稱為OOD。 (4) 程序?qū)崿F(xiàn)。即用面向?qū)ο蟮某绦蛟O(shè)計語言將上一步整理的對象和類的描述映射為應(yīng)用程序軟件。這一步一般稱為面向?qū)ο蟪绦蛟O(shè)計,簡稱為OOP。 面向?qū)ο箝_發(fā)方法的幾個階段的最主要工作是系統(tǒng)的對象化和模型化,使用對象模型描述系統(tǒng)。OOA階段建立初步的對象模型,然后在OOD階段對對象或類進行歸類,對類及對象的屬性、方法和結(jié)構(gòu)等進行歸類,抽象出它們的共同部分,使類的層次結(jié)構(gòu)更為合理。 下面簡單介紹一下在面向?qū)?/p>
16、象分析與設(shè)計階段建立對象模型的基本步驟。 2.2.2 分析與設(shè)計的基本步驟分析與設(shè)計的基本步驟 面向?qū)ο蠓椒ǚ治雠c設(shè)計可采取下面的步驟: 1標識對象和它們的屬性標識對象和它們的屬性 標識應(yīng)用系統(tǒng)的對象和它們的屬性是面向?qū)ο笤O(shè)計方法中最艱難的工作。首先要搞清楚系統(tǒng)要解決的問題到底涉及到哪些事物以及它們在系統(tǒng)中的作用?,F(xiàn)實世界中的事物可以分成五大類: (1) 有形物:指那些看得見摸得著的東西,例如人、書、汽車等。這一部分事物很容易識別。當要解決的問題確定下來以后,很容易將與此問題有關(guān)的有形物都找出來。 (2) 人或組織機構(gòu)所扮演的角色:例如“醫(yī)生”、“病人”、“教師”和“學(xué)生”等都屬于這一類對象。
17、 (3) 事件:事件對象用來表示所發(fā)生的事件,例如“出診”、“備課”等都屬于此類對象。 (4) 交互:交互對象常常能夠把多個對象聯(lián)系起來,例如“上課”將老師、課程和學(xué)生聯(lián)系起來。 (5) 規(guī)范:規(guī)范對象具有“標準”或“定義”的性質(zhì),例如產(chǎn)品的技術(shù)指標和學(xué)校的專業(yè)培養(yǎng)目標都是規(guī)范對象。 上述分類是按照事物的存在形式來進行的。按照面向?qū)ο蟮挠^點,可以將事物歸納為三類: (1) 客觀存在物:包括有形對象和角色對象,體現(xiàn)問題的結(jié)構(gòu)特性。 (2) 行為:包括事件對象和交互對象。行為是對象的一部分,行為依賴于對象。它體現(xiàn)問題的行為特性。 (3) 概念:現(xiàn)實世界中事物和它們行為規(guī)律的抽象,是識別對象時的一類
18、認識和分析對象。 標識對象可以從應(yīng)用系統(tǒng)非形式化描述中的名詞來導(dǎo)出。對象標識出來后,還應(yīng)注意對象之間的類似之處,以建立對象類。例如,Windows多窗口用戶界面中,不同的窗口具有類似的特性,每個窗口都可以看作某些窗口類的實例。每個窗口都具有大小、位置、標題等屬性。 2. 標識每個對象所要求的操作和提供的操作標識每個對象所要求的操作和提供的操作 標識出每一個對象執(zhí)行的功能,這些功能描述對象的行為。例如窗口被打開、關(guān)閉、縮放和滾動等。同時還應(yīng)關(guān)心由其它對象提供于它的操作,因為通過標識這些操作有可能導(dǎo)出新對象。 3. 建立對象之間的聯(lián)系和每個對象的接口建立對象之間的聯(lián)系和每個對象的接口 這一步建立對象和對象類之間的聯(lián)系,標識出每一個對象都與什么對象和對象類有關(guān)。這一步中可能找出一些對象的模式,并決定是否要建立一個新類以表示這些對象的共同行為特性。 識別出系統(tǒng)中的對象和類以后,還應(yīng)該識別出對象之間的相互作用,即對象的外部接口。在面向?qū)ο笙到y(tǒng)中,對象和對象之間的聯(lián)
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 花園裝修合同范本
- 整幢大廈轉(zhuǎn)讓合同范本
- 基坑挖土方合同范本
- 舞蹈編排合同范本
- 農(nóng)村房子建造合同范本
- 吉林省松原市前郭縣2024-2025學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含解析)
- ktv物品收購合同范本
- 2025年企業(yè)家與員工簽訂股權(quán)合同范本
- 2025租賃店鋪合同
- 2025商業(yè)用房租賃合同范本
- 《妊娠期合理用藥》課件
- 民兵反恐維穩(wěn)培訓(xùn)
- 測量不確定度評定和表示培訓(xùn)
- 《混凝土工程與技術(shù)》課程教學(xué)大綱
- 2025年創(chuàng)業(yè)方案市場拓展計劃
- 高速公路路產(chǎn)賠(補)償收費標準表
- 帕金森病的DBS治療
- FS18S系列系統(tǒng)介紹v2
- 大數(shù)據(jù)與會計專業(yè)專業(yè)的實習(xí)報告
- 森林經(jīng)理學(xué)課程設(shè)計
- 自來水處理工藝流程單選題100道及答案解析
評論
0/150
提交評論