軟件工程第九章 面向?qū)ο蠓椒▽W(xué)引論.ppt_第1頁
軟件工程第九章 面向?qū)ο蠓椒▽W(xué)引論.ppt_第2頁
軟件工程第九章 面向?qū)ο蠓椒▽W(xué)引論.ppt_第3頁
軟件工程第九章 面向?qū)ο蠓椒▽W(xué)引論.ppt_第4頁
軟件工程第九章 面向?qū)ο蠓椒▽W(xué)引論.ppt_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2020/9/17,第九章 面向?qū)ο蠓椒▽W(xué)引論,2020/9/17,2,本講內(nèi)容,9.1 面向?qū)ο蠓椒▽W(xué)概述 9.2 面向?qū)ο蟮母拍?9.3 面向?qū)ο蠼?9.4 對象模型 9.5 動態(tài)模型 9.6 功能模型 9.7 3種模型之間的關(guān)系,2020/9/17,9.1 面向?qū)ο蠓椒▽W(xué)概述,2020/9/17,4,9.1 面向?qū)ο蠓椒▽W(xué)概述,- 傳統(tǒng)的軟件工程方法學(xué)應(yīng)用于大型軟件產(chǎn)品的開發(fā)時,似乎很少取得成功。 - 源于20世紀(jì)60年代后期出現(xiàn)的面向?qū)ο缶幊陶Z言Simula-67(類和對象的概念),逐步形成了面向?qū)ο蠓椒▽W(xué) 。到了20世紀(jì)90年代,面向?qū)ο蠓椒▽W(xué)已經(jīng)成為人們在開發(fā)軟件時首選的范型。,

2、2020/9/17,5,9.1.1 面向?qū)ο蠓椒▽W(xué)的要點,面向?qū)ο蠓椒▽W(xué)的要點,2020/9/17,6,9.1.1 面向?qū)ο蠓椒▽W(xué)的要點,語義斷層 不同的語言(/對象)來表達問題和解. 客觀世界中的實體既具有靜態(tài)的屬性又具有動態(tài)的行為。然而傳統(tǒng)語言提供的解空間對象實質(zhì)上卻僅是描述實體屬性的數(shù)據(jù),必須在程序中從外部對它施加操作,才能模擬它的行為。,2020/9/17,7,9.1.1 面向?qū)ο蠓椒▽W(xué)的要點,對象?(面向?qū)ο笳Z言),在問題空間中,對象是 現(xiàn)實世界中存在的實體 應(yīng)用所關(guān)心的抽象概念、規(guī)則、事件、或者具有明確邊界和意 義的具體事物 在解空間 (計算機系統(tǒng)) 中,對象是 問題空間中的對象在

3、計算機系統(tǒng)中的表示 封裝 (encapsulation) 了數(shù)據(jù)和行為的通信單位,2020/9/17,8,9.1.1 面向?qū)ο蠓椒▽W(xué)的要點,與傳統(tǒng)方法相反,面向?qū)ο蠓椒ㄊ且环N以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理相結(jié)合的方法。 面向?qū)ο蠓椒ò褜ο笞鳛橛蓴?shù)據(jù)及可以施加在這些數(shù)據(jù)上的操作所構(gòu)成的統(tǒng)一體。 對象與傳統(tǒng)的數(shù)據(jù)有本質(zhì)區(qū)別,它不是被動地等待外界對它施加操作,相反,它是進行處理的主體。,面向?qū)ο蠓椒ㄊ且环N新的思維方法,它是把程序看作是相互協(xié)作而又彼此獨立的對象的集合。 這樣就減小了語義斷層:系統(tǒng)中解空間對象可以直接模擬問題空間的對象,解空間與問題空間的結(jié)構(gòu)十分一致。,2020/9/17,9,9.1

4、.1 面向?qū)ο蠓椒▽W(xué)的要點,面向?qū)ο蠓椒ň哂邢率?個要點: (1)認(rèn)為客觀世界是由各種對象組成的,任何事物都是對象,復(fù)雜的對象可以由比較簡單的對象以某種方式組合而成。因此,面向?qū)ο蟮能浖到y(tǒng)是由對象組成的。 (2)類(class)是對一組對象的抽象,集中了該組對象的共同特性(一組數(shù)據(jù)和一組方法)。對象是類的實例。 (3) 按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。在這種結(jié)構(gòu)中,下層的派生類自動具有和上層的基類相同的特性,這種現(xiàn)象稱為繼承(inheritance)。 (4) 對象彼此之間僅能通過傳遞消息互相聯(lián)系。一切局部于該對象的私

5、有信息,都被封裝在該對象類的定義中,就好像裝在一個不透明的黑盒子中一樣,在外界是看不見的,更不能直接使用,這就是“封裝性”。,2020/9/17,10,9.1.1 面向?qū)ο蠓椒▽W(xué)的要點,面向?qū)ο蟮姆椒▽W(xué)可以用下列方程來概括: OO=objects +classes +inheritance +communication with messages 面向?qū)ο缶褪羌仁褂脤ο笥质褂妙惡屠^承等機制,而且對象之間僅能通過傳遞消息實現(xiàn)彼此通信。 也可以說,只有同時使用對象、類、繼承和消息的方法,才是真正面向?qū)ο蟮姆椒ā?9.1.2 面向?qū)ο蠓椒▽W(xué)的優(yōu)點,1 與人類習(xí)慣的思維方法一致 2 穩(wěn)定性好 3 可重

6、用性好 4 較易開發(fā)大型軟件產(chǎn)品 5 可維護性好,2020/9/17,11,9.2 面向?qū)ο蟮母拍?2020/9/17,12,對象 類 類間關(guān)系 消息與事件 多態(tài)性,9.2.1 對象,2020/9/17,13,對象,在解空間 (計算機系統(tǒng)) 中,對象的非嚴(yán)格記法: := ,9.2.1 對象,2020/9/17,14,對象的基本特征 每個對象均有自己的惟一標(biāo)識,從而區(qū)別于其他對象。 對象之間通過消息進行通信。 對象總是處于一定的狀態(tài)。 對象有若干種行為。 對象的行為分為三類:創(chuàng)建新對象、與其他對象通信、改變自身狀態(tài)。 對象的狀態(tài)只能被自身的行為所改變。,9.2.1 對象,2020/9/17,15

7、,對象的特點 以數(shù)據(jù)為中心。 對象是主動的。 實現(xiàn)數(shù)據(jù)的封裝。 本質(zhì)上具有并行性。 模塊獨立性好。,9.2.2 其他概念,2020/9/17,16,類 在問題空間中 “人以類聚,物以群分” 類代表著具有類似性質(zhì)的一組對象 類中的每一個對象即為類的不同實例 (instance) 在解空間 (計算機系統(tǒng)) 中 類是對一組對象的抽象,集中了該組對象的共同特性。 在構(gòu)造軟件時,類實際上是具有特定功能的模塊,其代碼由該種所有對象所共享。 類 vs. 對象:靜 vs. 動。,9.2.2 其他概念,2020/9/17,17,類的兩種圖形記法:,9.2.2 其他概念,2020/9/17,18,對象 狀態(tài):張三

8、,30歲,計算機系,講師,1000元 行為:提職稱,調(diào)工資 類 (教師) 屬性:姓名,年齡,系別,職稱,工資 操作:提職稱,調(diào)工資 方法 (指操作的具體代碼實現(xiàn)) 實際上,類是創(chuàng)建對象的模板!,9.2.2 其他概念,2020/9/17,19,類間關(guān)系 繼承 (inheritance) 聚合 (aggregation) 關(guān)聯(lián) (relationship),9.2.2 其他概念,2020/9/17,20,繼承的含義 繼承是一種“求同存異”的高度抽象方式 相關(guān)術(shù)語 超類 (super-class) / 父類 (parent class) / 祖先類 (ancestor class) 子類 (sub-

9、class) / 后裔類 (descendant class) 一般化 (generalization) 具體化 (specialization),9.2.2 其他概念,2020/9/17,21,繼承的分類 單繼承 多繼承 多繼承使類層次復(fù)雜化 多繼承容易產(chǎn)生配置控制方面的潛在問題 繼承的圖形記法,9.2.2 其他概念,2020/9/17,22,一般化、具體化、繼承等術(shù)語均是復(fù)用思想的體現(xiàn) 一般化和具體化是對同一個類間關(guān)系的不同角度審視 父類是子類的一般化 (從父類角度出發(fā)) 子類是父類的具體化 (從子類角度出發(fā)) 繼承強調(diào)一般化 / 具體化關(guān)系中共享屬性和操作的機制,9.2.2 其他概念,2

10、020/9/17,23,聚合的含義 聚合表示“部分整體”關(guān)系 相關(guān)術(shù)語 組元類 (component class) 組合類 (assembly class) 注意,組合對象的存在依賴于組元對象!,9.2.2 其他概念,2020/9/17,24,聚合的圖形記法,9.2.2 其他概念,2020/9/17,25,關(guān)聯(lián)的含義 對象實例之間的物理或概念聯(lián)結(jié)被稱為鏈 關(guān)聯(lián)是對一組語義與結(jié)構(gòu)相似的鏈的抽象 鏈?zhǔn)顷P(guān)聯(lián)的實例 關(guān)聯(lián) vs. 鏈:類 vs. 對象,(a) 二元關(guān)聯(lián),(b)三元關(guān)聯(lián),9.2.2 其他概念,2020/9/17,26,聚合 vs. 繼承 聚合更強調(diào)對象實例之間的關(guān)系,本質(zhì)上是“與關(guān)系”

11、(is part of,ISP) 繼承更關(guān)注對象類之間的關(guān)系,本質(zhì)上是“或關(guān)系”(is a,ISA) 聚合樹 vs. 繼承樹 聚合 vs. 關(guān)聯(lián) 聚合是關(guān)聯(lián)的一種特殊形式 聚合與關(guān)聯(lián)之間的模糊差異無關(guān)緊要,9.2.2 其他概念,2020/9/17,27,消息和事件(message & event) 消息是對象之間進行通信的構(gòu)造或結(jié)構(gòu) 消息分為請求消息和完成消息兩種 (由消息模式描述) 消息模式:發(fā)送對象、接收對象、內(nèi)容 事件指對象之間一次消息的傳遞 多個事件按照時間順序可構(gòu)成事件序列 消息 vs. 事件:靜 vs. 動,9.2.2 其他概念,2020/9/17,28,消息與對象 一個對象能接收

12、不同形式不同內(nèi)容的多個消息。 相同形式的消息可以送往不同的對象。 對于相同形式的消息,不同對象可以有 不同的解釋,可以作出不同的反映。 消息與方法 對象接收到有效消息后,總會以某種行為做出適當(dāng)反映。期間,對象行為復(fù)用了類操作的代碼實現(xiàn) (即類方法)。 在某種程度上,消息與方法可視為同義詞。但是,必須牢記:消息與代碼無關(guān),而方法是操作的代碼實現(xiàn)。,9.2.2 其他概念,2020/9/17,29,多態(tài)性( polymorphism) -含義 同一個操作可以是多個不同類的行為。 不同對象接收到同一個消息后,可產(chǎn)生完全不同的反映。 同一個消息可調(diào)用不同的方法。 -意義 允許每個對象以自己最合適的方式去

13、響應(yīng)共同的消息,從而增強軟件的靈活性和可復(fù)用性。,9.2.2 其他概念,2020/9/17,30,多態(tài)性的示例,9.3 面向?qū)ο蠼?2020/9/17,31,建立問題模型是人們理解表達問題的方法之一。 模型是對事物作出的一種抽象,是對事物的一種形式化的描述。 模型常由專門的語言 (一組圖示符號和規(guī)則)來描述. 面向?qū)ο蠼>褪歉鶕?jù)面向?qū)ο笥^點(模擬人類習(xí)慣的思維方式)建立問題的解模式. 面向?qū)ο蟮膶崿F(xiàn)能將此模式在計算機上實施.,9.3 面向?qū)ο蠼?2020/9/17,32,面向?qū)ο蠓椒ㄐ枰?種形式的模型: 描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型 描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型 描述系統(tǒng)功能的功能模型

14、在不同的應(yīng)用問題中,這3種模型的相對重要程度會有所不同,對象模型始終都是最重要、最基本、最核心的。 典型的軟件系統(tǒng)組合了上述3方面內(nèi)容: 使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動態(tài)模型),并且完成數(shù)據(jù)值的變化(功能模型)。 本課程介紹UML作為描述這些模型的語言.,9.4 對象模型,2020/9/17,33,UML(Unified Modeling Language)產(chǎn)生于90年代中期。它不僅統(tǒng)一了Booch、OMT和OOSE方法中的概念和表示法,而且對其作了進一步擴展,最終成為在面向?qū)ο蠹夹g(shù)領(lǐng)域占主導(dǎo)地位的、并被大眾所接受的標(biāo)準(zhǔn)建模語言。 1、UML概述 UML的發(fā)展歷程(下圖) UML是一個

15、通用的標(biāo)準(zhǔn)建模語言,可以對任何具有靜態(tài)結(jié)構(gòu)和動態(tài)行為的系統(tǒng)進行可視化建模。UML不是一個開發(fā)過程,也不是一個方法,但允許任何一種開發(fā)過程和面向?qū)ο蠓椒ㄊ褂盟?統(tǒng)一建模語言UML,2020/9/17,34,2020/9/17,35,UML,事物,關(guān)系,圖,結(jié)構(gòu) 事物,行為 事物,組織 事物,輔助 事物,靜態(tài) 圖,實現(xiàn) 關(guān)系,泛化 關(guān)系,依賴 關(guān)系,關(guān)聯(lián) 關(guān)系,動態(tài) 圖,交 互,狀 態(tài) 機,包,注 釋,順 序 圖,活 動 圖,用 例 圖,實 施 圖,類 圖,構(gòu) 件 圖,對 象 圖,狀 態(tài) 圖,協(xié) 作 圖,節(jié) 點,組 件,活 動 類,協(xié) 作,接 口,類,用 例,9.4 對象模型,2020/9/17

16、,36,(1) 統(tǒng)一標(biāo)準(zhǔn) UML統(tǒng)一了Booch、OMT和OOSE等方法中的基本概念,已成為OMG的正式標(biāo)準(zhǔn),提供了標(biāo)準(zhǔn)的面向?qū)ο蟮哪P驮氐亩x和表示。 (2) 面向?qū)ο?UML還吸取了面向?qū)ο蠹夹g(shù)領(lǐng)域中其他流派的長處。UML符號表示考慮了各種方法的圖形表示,刪掉了大量易引起混亂的、多余的和極少使用的符號,也添加了一些新符號。 (3) 可視化、表示能力強 系統(tǒng)的邏輯模型或?qū)崿F(xiàn)模型都能用UML模型清晰的表示,可用于復(fù)雜軟件系統(tǒng)的建模。 (4) 獨立于過程 UML是系統(tǒng)建模語言,獨立于開發(fā)過程。 (5) 易掌握、易用 由于UML的概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)清晰,易于掌握使用。,9.4

17、 對象模型,2020/9/17,37,對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。它是對模擬客觀世界實體的對象以及對象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。 用UML表達的對象模型由類圖(類和類間關(guān)系)構(gòu)成.,9.4.1 類圖的基本符號,2020/9/17,38,類圖描述類及類與類之間的靜態(tài)關(guān)系。類圖是一種靜態(tài)模型,它是創(chuàng)建其他UML圖的基礎(chǔ)。一個系統(tǒng)可以由多張類圖來描述,一個類也可以出現(xiàn)在幾張類圖中。 1. 定義類,UML中類的圖形符號為長方形,用兩條橫線把長方形分成上、中、下3個區(qū)域(下面兩個區(qū)域可省略),3個區(qū)域分別放類的名字、屬性和服務(wù),如右圖所示。,9.4.1 類圖的基本符號

18、,2020/9/17,39,為類命名時應(yīng)該遵守以下幾條準(zhǔn)則: (1) 使用標(biāo)準(zhǔn)術(shù)語。 例如,“交通信號燈”比“信號單元”這個名字好,“傳送帶”比“零件傳送設(shè)備”好。 (2) 使用具有確切含義的名詞。 例如,“庫房”比“房屋”或“存物場所”更確切。 (3) 必要時用名詞短語作名字。 例如,“最小的領(lǐng)土單元”、“儲藏室”、“公司員工”等 都是比較恰當(dāng)?shù)拿帧?總之,名字應(yīng)該是富于描述性的、簡潔的而且無二義性的。,9.4.1 類圖的基本符號,2020/9/17,40,2. 定義屬性 UML描述屬性的語法格式如下: 可見性 屬性名: 類型名=初值 性質(zhì)串 類的屬性中還可以有一種能被該類所有對象共享的屬

19、性,稱為類的作用域?qū)傩?,也稱為類變量。C+語言中靜態(tài)數(shù)據(jù)成員就是這樣的屬性,在類圖中表示為帶下劃線的屬性。 例如:發(fā)貨單類的類變量“貨單數(shù)”: -貨單數(shù):Integer,9.4.1 類圖的基本符號,2020/9/17,41,3. 定義服務(wù) 服務(wù)也就是操作,UML描述操作的語法格式如下: 可見性 操作名(參數(shù)表): 返回值類型性質(zhì)串 參數(shù)表是用逗號分隔的形式參數(shù)的序列。描述一個參數(shù)的語法如下: 參數(shù)名: 類型名=默認(rèn)值 當(dāng)操作的調(diào)用者未提供實在參數(shù)時使用默認(rèn)值。 與屬性類似,在類中也可定義類作用域操作:這種操作只能存取本類的類作用域?qū)傩浴?“- set_counters(Integer=0, I

20、nteger): Integer -1,0”,9.4.2 表示關(guān)系的符號,2020/9/17,42,類與類之間通常有關(guān)聯(lián)、泛化(繼承)、依賴和細(xì)化 等4種關(guān)系。 1. 關(guān)聯(lián) 關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系。例如,作家使用計算機,我們就認(rèn)為在作家和計算機之間存在某種語義連接,因此,在類圖中應(yīng)該在作家類和計算機類之間建立關(guān)聯(lián)關(guān)系。,2020/9/17,43,(1) 普通關(guān)聯(lián) 普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要在類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。普通關(guān)聯(lián)的圖示符號是連接兩個類之間的直線,如圖所示。 通常,關(guān)聯(lián)是雙向的,可在一個方向上為關(guān)聯(lián)起一個名字,在另一個方向上起另一個名字(

21、也可不起名字)。為避免混淆,在名字前面(或后面)加一個表示關(guān)聯(lián)方向的黑三角。,2020/9/17,44,在表示關(guān)聯(lián)的直線兩端可以寫上重數(shù)(multiplicity),它表示該類有多少個對象與對方的一個對象連接。重數(shù)的表示方法通常有: 01表示0到1個對象 0*或*表示0到多個對象 1+或1*表示1到多個對象 115表示1到15個對象 3表示3個對象 如果圖中未明確標(biāo)出關(guān)聯(lián)的重數(shù),則默認(rèn)重數(shù)是1。,2020/9/17,45,(2) 關(guān)聯(lián)的角色 在任何關(guān)聯(lián)中都會涉及到參與此關(guān)聯(lián)的對象所扮演的角色(即起的作用),在某些情況下顯式標(biāo)明角色名有助于別人理解類圖。例如,下圖是一個遞歸關(guān)聯(lián)(即一個類與它本身

22、有關(guān)聯(lián)關(guān)系)。一個人與另一個人結(jié)婚,必然一個人扮演丈夫的角色,另一個人扮演妻子的角色。如果沒有顯式標(biāo)出角色名,則意味著用類名作為角色名。,2020/9/17,46,(3) 限定關(guān)聯(lián) 限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的重數(shù)從一對多變成一對一,或從多對多簡化成多對一。在類圖中把限定詞放在關(guān)聯(lián)關(guān)系末端的一個小方框內(nèi)。 例如,某操作系統(tǒng)中一個目錄下有許多文件,一個文件僅屬于一個目錄,在一個目錄內(nèi)文件名確定了惟一一個文件。圖利用限定詞“文件名”表示了目錄與文件之間的關(guān)系,可見,利用限定詞把一對多關(guān)系簡化成了一對一關(guān)系。,2020/9/17,47,(4) 關(guān)聯(lián)類 為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息。可以引入一個關(guān)聯(lián)類來記錄這些信息。關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個對象相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。,2020/9/17,48,2. 聚集 聚集也稱為聚合,是關(guān)聯(lián)的特例。聚集表示類與類之間的關(guān)系是整體與部分的關(guān)系。在陳述需求時使用的“包含”、“組成”、“分為部分”等字句,往往意味著存在聚集關(guān)系。除了一般聚集之外,還有兩種特殊的聚集關(guān)系,分別是共享聚集和組合聚集。,2020/9/17,49,(1) 共享聚集 如果在聚集關(guā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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論