軟件工程面向對象方法學概述_第1頁
軟件工程面向對象方法學概述_第2頁
軟件工程面向對象方法學概述_第3頁
軟件工程面向對象方法學概述_第4頁
軟件工程面向對象方法學概述_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程面向對象方法學概述軟件工程學系列2022/8/252主要內(nèi)容面向對象方法學概述面向對象的概念面向對象建模對象模型 動態(tài)模型 功能模型3種模型之間的關系前一頁2022/8/253面向對象方法學概述模擬人類認識和解決問題的方式遇到問題認識個體對問題空間(問題域)進行劃分歸類找出每個類中的基本特征抽象找出實現(xiàn)的解法(求解域)2022/8/254面向對象方法學要點將客觀世界遇到的問題與計算機中求解建立聯(lián)系客觀世界中的實體抽象為問題域中的對象計算機中的實體稱為解空間對象面向對象方法把對象作為由數(shù)據(jù)及可以施加在這些數(shù)據(jù)上的操作所構成的統(tǒng)一體面向對象方法把程序看成對象的集合2022/8/255軟件工

2、程的新途徑前一頁面向對象方法學要點 (1)認為客觀世界是由各種對象組成的,任何事物都是對象。因此,面向對象的軟件是由對象組成的,軟件中的任何元素都是對象,復雜的軟件對象由比較簡單的對象的組合而成。 2022/8/256軟件工程的新途徑前一頁面向對象方法學要點 (2)把所有對象都劃分成各種對象類(Class,簡稱為類),每個對象類都定義了一組數(shù)據(jù)和一組方法。數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息。2022/8/257軟件工程的新途徑前一頁面向對象方法學要點 (3)按照子類(派生類)與父類(基類)的關系,把若干個對象類組成一個層次結構的系統(tǒng)(類等級)。在這種層次結構中,通常下層的派生類具有和

3、上層的基類相同的特性(包括數(shù)據(jù)和方法),這種現(xiàn)象稱為繼承(Inheritance)。2022/8/258軟件工程的新途徑前一頁面向對象方法學要點 (4)對象彼此之間僅能通過傳遞消息互相聯(lián)系,對象與傳統(tǒng)的數(shù)據(jù)有本質(zhì)區(qū)別,它不是被動地等待外界對它施加操作。即一切局部于該對象的私有信息,都被封裝在該對象的定義中,這就是“封裝性”。 2022/8/259軟件工程的新途徑前一頁面向對象方法學要點面向對象的方法學可以用下列方程表示:OO=Objects+Classes+Inheritance+ Communication with messages 2022/8/2510軟件工程的新途徑前一頁面向對象方法

4、學優(yōu)點(1)與人類習慣的思維方法一致。 傳統(tǒng)的程序設計技術將數(shù)據(jù)和代碼分離,而忽略了數(shù)據(jù)和操作之間的內(nèi)在聯(lián)系。 但實際上用計算機解決的問題都是現(xiàn)實世界中的問題,這些問題都是由相互關聯(lián)的事物組成。因此,應該把描述事物的數(shù)據(jù)和對該事物的操作放在一起。 面向對象便是如此。2022/8/2511軟件工程的新途徑前一頁面向對象方法學優(yōu)點(2)穩(wěn)定性比較好。 傳統(tǒng)的軟件開發(fā)方法依賴于功能分解,當功能的需求發(fā)生變化時則引起軟件結構的整體修改。而用戶需求的改變大部分是針對功能的,因此傳統(tǒng)方法不穩(wěn)定。 面向對象方法基于對象的構造,因此對系統(tǒng)功能的改變不會引起結構性的變化;又現(xiàn)實中的實體是相對穩(wěn)定的,以對象為中心

5、構造的軟件系統(tǒng)也是穩(wěn)定的。2022/8/2512軟件工程的新途徑前一頁面向對象方法學優(yōu)點(3)可重用性好。 重用:也稱為再用或復用,是指同一事物不經(jīng)修改或稍加改動就多次重復使用,是提高生產(chǎn)率的最主要的方法。 傳統(tǒng)的軟件技術開發(fā)的模塊,要重用模塊的同時,須重用相應的數(shù)據(jù),當數(shù)據(jù)發(fā)生變化時,則重用將變得很復雜。 采用面向對象方法開發(fā)的對象,具有很強的獨立性,滿足高內(nèi)聚要求,因此是理想的可重用部分。2022/8/2513軟件工程的新途徑前一頁面向對象方法學優(yōu)點(4)可維護性好。 面向對象的軟件穩(wěn)定性好面向對象的軟件比較容易修改面向對象的軟件容易理解易于測試和調(diào)試2022/8/2514噴泉模型噴泉模型

6、是面向對象軟件過程的典型模型采用面向對象方法開發(fā)軟件時,重點是面向問題的對象的分析和定義,這個過程是不斷充實和反復迭代的,“噴泉”體現(xiàn)了面向對象軟件開發(fā)過程迭代和無縫的特性2022/8/2515面向對象的概念對象 其他概念 主要內(nèi)容前一頁2022/8/2516對象在應用領域中有意義的、與要解決的問題有關系的任何事物都可以作為對象對象&實體:對象是問題域中某個實體的抽象例如:學生是個對象,學生王三是實體實體具有靜態(tài)的屬性和動態(tài)的行為對象由描述屬性的數(shù)據(jù)和對數(shù)據(jù)的操作構成2022/8/2517前一頁基本概念對象的形象表示2022/8/2518對象的形象表示對象類似于錄音機錄音機:通過使用不同的按鍵

7、完成不同的功能對象:通過對象與外界的界面進行操作對象經(jīng)過操作后狀態(tài)發(fā)生變化2022/8/2519前一頁基本概念對象的定義定義1:對象是具有相同狀態(tài)的一組操作的集合。定義2:對象是對屬性值和操作的封裝。2022/8/2520前一頁基本概念對象的定義定義3:對象:= 其中:ID是對象的標識或名字; MS是對象中的操作集合; DS是對象的數(shù)據(jù)結構; MI是對象受理的消息名集合 (即對外接口)。 這個定義是一個形式化的定義。 2022/8/2521對象的定義對象中的數(shù)據(jù)表示對象的狀態(tài),一個對象的狀態(tài)只能由該對象的操作來改變,且只能由其他對象向該對象發(fā)送消息來改變2022/8/2522前一頁基本概念用自

8、動機模擬對象2022/8/2523前一頁基本概念對象的特點以數(shù)據(jù)為中心,操作圍繞對其數(shù)據(jù)需要的處理來設置,不設置與這些數(shù)據(jù)無關的操作,而且操作的結果往往與當時所處的狀態(tài)有關。 對象是主動的,是進行處理的主體。為了完成某個操作,不能從外部直接加工它的私有數(shù)據(jù),而是必須通過它的公有接口向對象發(fā)消息,請求執(zhí)行它的某個操作,處理它的私有數(shù)據(jù)。 實現(xiàn)了數(shù)據(jù)封裝,私有數(shù)據(jù)的完全被封裝在盒子內(nèi)部,對外是隱藏,不可見的,對私有數(shù)據(jù)的訪問或處理只能通過公有的操作進行。2022/8/2524前一頁基本概念對象的特點本質(zhì)上具有并行性,不同對象各自獨立地處理自身的數(shù)據(jù),彼此通過發(fā)消息傳遞信息完成通信。 模塊獨立性好。

9、對象是面向對象的軟件的基本模塊,對象內(nèi)聚性相當強,對象之間的耦合必然比較松。 2022/8/2525前一頁基本概念其他概念1. 類(Class) “類”就是對具有相同數(shù)據(jù)和相同操作的一組對象的定義。也就是說,類是對具有相同屬性和行為的一個或多個對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的說明。 分類是人類認識客觀世界的基本方法。2022/8/2526前一頁基本概念其他概念2. 實例(Instance) 實例就是由某個特定的類所描述的一個具體的對象。實際上類是建立對象時使用的“樣板”,按照這個樣板所建立的每個具體的對象,就是類的實際例子,通常稱為實例。 當使用“對象”這個術語時,既

10、可以指一個具體的對象,也可以泛指一般的對象,但是,當使用“實例”這個術語時,必然是指一個具體的對象。 2022/8/2527前一頁基本概念其他概念3. 消息(Message) 消息,就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。通常,一個消息由下述三部分組成: 接收消息的對象 消息選擇符(也稱為消息名) 零個或多個變元 2022/8/2528前一頁基本概念其他概念4. 方法(Method) 方法,就是對象所能執(zhí)行的操作,也就是類中所定義的服務。方法描述了對象執(zhí)行操作的算法,響應消息的方法。在C+語言中把方法稱為成員函數(shù)。 2022/8/2529前一頁基本概念其他概念5. 屬

11、性(Attribute) 屬性,就是類中所定義的數(shù)據(jù),它是對客觀世界實體所具有的性質(zhì)的抽象。類的每個實例都有自己特有的屬性值。 例如,Circle類中定義的代表圓心坐標,半徑,顏色等的數(shù)據(jù)成員,就是圓的屬性。 2022/8/2530前一頁基本概念其他概念6. 繼承(Inheritance) 繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復定義它們。在面向對象的軟件技術中,繼承子類自動地共享基類中定義的數(shù)據(jù)和方法的機制。 面向對象軟件技術的許多強有力的功能和突出的優(yōu)點,都來源于把類組成一個層次結構的系統(tǒng):一個類的上層可以有父類,下層可以有子類。這種層次結構系統(tǒng)的一個重要性質(zhì)是繼承性,一個類直接繼

12、承其父類的全部描述。2022/8/2531前一頁基本概念其他概念6. 繼承(Inheritance) A,B兩類為例,其中B類是從A類派生出來的子類,它除了具有自己定義的特性(數(shù)據(jù)和操作)之外,還從父類A繼承特性,當創(chuàng)建A類的實例a1的時候,a1以A類為樣板建立實例變量(在內(nèi)存中分配所需要的空間),但是它并不從A類中拷貝所定義的方法。 2022/8/2532前一頁基本概念實現(xiàn)繼承機制的原理2022/8/2533前一頁基本概念其他概念7. 多態(tài)性(Polymorphism) 多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。 即在類等級的不同層次中可以

13、共享(公用)一個行為(方法)的名字,不同層次中的每個類各自按自己的需要來實現(xiàn)這個行為。當對象接收到發(fā)送給它的消息時,根據(jù)該對象所屬于的類動態(tài)選用在該類中定義的實現(xiàn)算法。 2022/8/2534前一頁基本概念其他概念7. 多態(tài)性(Polymorphism) 多態(tài)性機制增加了靈活性,減少了信息的冗余,顯著提高了軟件的可重用性和可擴充性。 在C+中多態(tài)性是通過虛函數(shù)來實現(xiàn)的。2022/8/2535前一頁基本概念其他概念8. 重載(Overloading) 有兩種重載:函數(shù)重載是指在同一作用域內(nèi)的若干個不同類型的操作數(shù)上面;運算符重載是指同一個操作符可以施加于不同的操作數(shù)。 重載進一步提高了面向對象系

14、統(tǒng)的靈活性和可讀性。 2022/8/2536前一頁面向對象建模 模型,就是為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述。 建模由一組圖示符號和組織這些符號的規(guī)則組成,利用它們來定義和描述問題域中的術語和概念。 更進一步講,模型是一種思考工具,利用這種工具可以把知識規(guī)范地表示出來。 2022/8/2537面向對象建模建??梢詼p少系統(tǒng)的復雜程度模型提供了組織大量信息的有效機制建模比較容易暴露系統(tǒng)分析員的錯誤建模提供快速的原型親身體驗2022/8/2538前一頁面向對象建模 用面向對象方法開發(fā)軟件,通常需要建立三種形式的模型: 描述系統(tǒng)數(shù)據(jù)結構的對象模型 描述系統(tǒng)控制結構的動態(tài)

15、模型 描述系統(tǒng)功能的功能模型 這三個模型從不同的側面反映了系統(tǒng)的內(nèi)容,綜合全面地反映了目標系統(tǒng)的需求。2022/8/2539前一頁面向對象建模 用面向對象方法開發(fā)軟件,在任何情況下,對象模型始終都是最重要、最基本、最核心的。 2022/8/2540前一頁對象模型 對象模型表示靜態(tài)的,結構化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。它反映對象以及對象彼此間的關系的映射,描述系統(tǒng)的靜態(tài)結構。面向對象方法強調(diào)圍繞功能來構造系統(tǒng)。 為了建立對象模型,需要定義一組圖形符號,并且規(guī)定一組組織這些符號以表示特定語義的規(guī)則。 2022/8/2541建模語言的發(fā)展20世紀70年代中期面向對象建模語言問世至90年代中期其數(shù)量已增至5

16、0多種1994年8月UML的開發(fā)正式開始1996年6月和10月,Booch、Rumbaugh和Jacobson經(jīng)過不懈努力,UML0.9和0.91版出版1997年11月OMG國際對象管理組織正式采納了UML1.12022/8/2542UML特點:UML統(tǒng)一了各種方法對不同類型的系統(tǒng)、不同的開發(fā)階段以及不同內(nèi)部概念的不同觀點,有效消除建模語言的差異UML建模能力比其他建模方法都強UML是一種建模語言,不是開發(fā)過程2022/8/2543UMLUML由視圖、圖、模型元素等構成。一個系統(tǒng)應從不同的角度進行描述,從一個角度觀察到的系統(tǒng)稱為一個視圖(view)。UML語言定義了五種類型,8種不同的圖,把它

17、們有機的結合起來就可以描述系統(tǒng)的所有視圖。2022/8/2544UML視圖類圖:描述各種類及其關聯(lián)對象圖:描述系統(tǒng)中的各種對象及其相互關系用例圖:從用戶角度描述系統(tǒng)功能,并指出各功能的操作者。組件圖:系統(tǒng)的執(zhí)行視圖實施圖:從軟件組件到系統(tǒng)物理節(jié)點的映射協(xié)作圖:一組類及這些類發(fā)送和接收的消息順序圖:描述類之間的交互狀態(tài)圖:描述執(zhí)行操作時類的狀態(tài)和響應2022/8/2545類圖的基本符號類圖描述類及類與類之間的靜態(tài)關系類的圖形符號為長方形,其中被兩條橫線分成3個區(qū)域,分別是名字、屬性和服務屬性和服務屬于可選區(qū)域2022/8/2546類的圖形符號2022/8/2547類圖的基本符號類名的命名原則使用

18、標準術語使用具有確切含義的名詞必要時用名詞短語作名字2022/8/2548定義類屬性屬性語法格式: 可見性 屬性名:類型名 = 初值 性質(zhì)串 可見性:公有(public):加號 +私有(private):減號 -保護(protected):井號#2022/8/2549定義類屬性屬性名:每個屬性都必須有名字屬性名之后的類型名表示該屬性的數(shù)據(jù)類型創(chuàng)建類的實例時須給其屬性賦值花括號中的性質(zhì)串明確地列出該屬性所有可能的取值2022/8/2550定義類屬性舉例如:“發(fā)貨單”類的屬性“管理員”,描述如下: 管理員 : String = “ 未定 ”2022/8/2551舉例:帶有屬性的課程類一個具有課程編

19、號、課程名稱和學分的課程類Subject,其定義如右圖:Subjectcodetitle: Stringcredits: Integer = 15 類Subject有3個屬性,其中第一個屬性code代表課程編號,沒有指明它的類型,即尚未決定以什么樣的形式存儲課程編號。2022/8/2552定義服務語法格式:可見性 操作名(參數(shù)表):返回值類型性質(zhì)串可見性:定義與屬性相同例如:Gettitle ():String當操作的調(diào)用者未提供實在參數(shù)時,該參數(shù)使用默認值操作通常在類圖中省略2022/8/2553例:完整定義的類Subjectcodetitle: Stringcredits: Integer

20、 = 15GetTitle() : String類名屬性服務2022/8/2554前一頁對象模型表示關系的符號 在面向對象分析和面向對象設計中,結構表示了問題域中的復雜關系,是對客觀世界實體相互間關系的抽象。類-&-對象間的關系種類可以概括為: 關聯(lián)、泛化(繼承)、依賴、細化 2022/8/2555關系的種類 通常把兩類對象之間的二元關系再細分為三種基本類型: ( 1 : 1):一對一 如班主任負責某班級 ( 1 : M):一對多 如教師教授課程 (M : M):多對多 如學生選修課程2022/8/2556前一頁對象模型表示關系的圖形符號1. 關聯(lián)關系 關聯(lián)關系反映對象之間存在某種語義上的聯(lián)系

21、。(1)普通關聯(lián) 最常見,類與類之間存在連接關系即可表示為普通關聯(lián),圖示符號為連接類的直線。 關聯(lián)是雙向的,可以在直線的兩個方向上分別標注名字,并加上表示關聯(lián)方向的黑三角。2022/8/2557表示關系的圖形符號作家計算機使用被使用*1*2022/8/2558表示關系的圖形符號重數(shù)(multiplicity):表示在關聯(lián)的直線兩端,用以說明類有多少個對象與對方的一個對象連接如: 0 1 表示0到1個對象 * 表示0到多個對象2022/8/2559表示關系的圖形符號(2)關聯(lián)的角色為了清楚反映關聯(lián)的對象中各個類的作用,可以在類的旁邊標注角色2022/8/2560表示關系的圖形符號(3)限定關聯(lián)限

22、定關聯(lián)一般用在一對多或多對多的關聯(lián)中,可以把模型中的重數(shù)從一對多變成一對一,或從多對多變成多對一。限定詞放在關聯(lián)關系末端的一個小方框內(nèi)2022/8/2561表示關系的圖形符號(4)關聯(lián)類使用關聯(lián)類記錄關聯(lián)性質(zhì)中的附加信息上圖中原本一對多的關系變成了一對一的關系。2022/8/2562表示關系的圖形符號2.聚集聚集也稱為聚合,是關聯(lián)的特例聚集反映類與類之間整體與部分的關系2022/8/2563聚集示例2022/8/2564表示關系的圖形符號(1)共享聚集處于部分方的對象可同時參與多個處于整體方對象的構成,則該聚集為共享聚集如圖9.10,在整體類旁標注空心菱形2022/8/2565表示關系的圖形符

23、號(2)組合聚集如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失,則稱為組合聚集如圖9.11在整體類旁標注實心菱形2022/8/2566表示關系的圖形符號 3.泛化即繼承關系,反映通用元素與具體元素在UML中,用一端為空心三角形的連線表示泛化關系,三角形的頂角緊挨著通用元素。泛化關系反映“一般特殊”關系,高層類(即基類)說明一般性的屬性,低層類(派生類)說明特殊屬性。2022/8/2567表示關系的圖形符號(1)普通泛化反映的是基本的繼承關系;抽象類是父類,描述子類公共屬性和行為,在圖示的類名下標注abstract具體類均有自己的對象,且操作都有具體的實現(xiàn)2022/8/

24、2568表示關系的圖形符號(2)受限泛化附加約束條件,進一步說明泛化關系的使用方法或擴充方法預定義的約束有: 多重、不相交、完全和不完全2022/8/2569表示關系的圖形符號多重繼承:一個子類可以同時多次繼承同一個上層基類不相交繼承:子類不能同時繼承同一個基類完全繼承:父類所有的子類都在類圖中窮舉出來不完全繼承:與完全繼承相反2022/8/2570表示關系的圖形符號4.依賴和細化(1)依賴關系:兩個模型元素,其中一個獨立,另一個依賴于獨立的模型元素UML類圖中,用帶箭頭的虛線連接有依賴關系的兩個類,箭頭指向獨立的類類B類A2022/8/2571表示關系的圖形符號(2)細化關系兩個模型元素A和

25、B描述同一事物,B是在A的基礎上的更加詳細的描述,則稱B細化了A,或稱A細化成了B符號為由B指向A一端為空心三角形的虛線分析類設計類反映不同階段模型的關系2022/8/2572對象模型總結類圖類的定義:類名、屬性和服務的定義類之間關系的定義:關聯(lián)關系使用被使用*1*2022/8/2573對象模型總結聚集關系:反映整體與部分共享聚集組合聚集*1*包含由.組成*2022/8/2574對象模型總結泛化關系:繼承關系父類子類A子類B2022/8/2575對象模型總結依賴和細化 依賴類B類A細化分析類設計類2022/8/2576前一頁動態(tài)模型 動態(tài)模型表示瞬時的,行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對象

26、模型中的對象的合法變化序列。 2022/8/2577前一頁動態(tài)模型術語 狀態(tài) 所有對象都有自己的生命周期,在每個不同的階段對象有不同的行為。 狀態(tài)是對象在其生命周期中的某個特定階段。 狀態(tài):是對對象屬性的一種抽象。狀態(tài)有持續(xù)性,占用一段時間間隔。 2022/8/2578前一頁動態(tài)模型術語 事件 事件即是一個觸發(fā)行為,是對引起對象從一種狀態(tài)轉換到另一種狀態(tài)的現(xiàn)實世界中的事件的抽象。 事件就是引起對象狀態(tài)轉換的控制信息。 事件沒有持續(xù)時間,表示時刻的概念,是瞬間完成的。2022/8/2579前一頁動態(tài)模型術語 行為 所謂行為,是指對象達到某種狀態(tài)時所做的一系列處理操作。這些操作是需要耗費一定的時間的。 UML中用狀態(tài)圖(狀態(tài)轉換圖)來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉換的事件及對象的行為。2022/8/

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論