




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2020/8/3,1,第4講 類與類圖,2020/8/3,2,內(nèi)容提要,類的定義 類的表示:三部分 類的關(guān)系:依賴、泛化、關(guān)聯(lián) 特殊類:接口,抽象類,參數(shù)化類 建模指南 對象圖:“快照”,1. 類的概念,2020/8/3,4,1.1 類的定義/1,用例圖定義了系統(tǒng)應(yīng)該具備的功能,它描述了系統(tǒng)應(yīng)該為用戶解決的問題。 交互圖描述了此問題的解決方案,它定義了為解決此問題軟件系統(tǒng)中必須設(shè)置的軟件對象及其職責, 這些對象及其職責或語義,是解決方案的概念或系統(tǒng)詞匯(vocabulary)。 類描述了一組對象的公共的結(jié)構(gòu)和行為, 類為對象規(guī)定了它們的結(jié)構(gòu)和所能提供的服務(wù)(操作), 相當于為對象圖中規(guī)定的系統(tǒng)
2、詞匯提供了嚴格的定義,包括系統(tǒng)詞匯的: 靜態(tài)結(jié)構(gòu) 動態(tài)行為 類構(gòu)成了系統(tǒng)建造的基礎(chǔ),2020/8/3,5,1.1 類的定義/2,類的靜態(tài)結(jié)構(gòu),在UML里用屬性(attribute)描述 類的動態(tài)行為,由操作(operation)描述 交互是用例圖提出的問題的解決方案,交互由對象和它們之間的消息的傳遞構(gòu)成 在交互中,對象為與它相連接的其它對象提供服務(wù),對象本身會有狀態(tài)的保持和轉(zhuǎn)換 在一個系統(tǒng)中,具有相同的結(jié)構(gòu)和提供相同的服務(wù)的對象可能不止一個,它們可以參與在不同的交互中,提供類似的服務(wù) 類是解決用例視圖定義的問題的解決方案中必須具備的對象的抽象,2020/8/3,6,1.1 類的定義/3,一個類
3、描述了一組對象的公共的結(jié)構(gòu)和行為 類是真實世界的事物的抽象 當這些事物存在于真實世界中時,它們是類的實例,并被稱為對象 同一個類的各對象具有相同的屬性,提供相同的操作,具有相同的語義,2020/8/3,7,1.2 類的表示,類的圖形表示: 它是分為三個分隔區(qū)(compartment)的長方形。其中: 頂端的分隔區(qū)為類的名字,下面兩個分隔區(qū)為可省略的,分別可以列出類的屬性和操作,2020/8/3,8,2020/8/3,9,1.3 類的命名,類的名字是每個類所必有的構(gòu)成,用于和其它類相區(qū)分 類的名字可分為 簡單名字:簡單名字是一個不包含冒號的字串 復(fù)雜名字(路徑名字):路徑名是簡單名字前面加上一個
4、包含此類的所在的模型包的名字,這兩個名字之間用兩冒號隔開,Temperature Sensor,Wall,Business Rules:FraudAgent,java:awt:Rectsngle,簡單名字,路徑名字,2. 屬性,2020/8/3,11,2.1 屬性的概念/1,類不是孤立存在的,它的對象將參與一個或多個交互 類捕獲了系統(tǒng)實現(xiàn)方案中的概念或詞匯,使得類代表某一類特定事物,具備特定的語義 類的語義是對此對象代表的事物的性質(zhì)的描繪,通過對事物性質(zhì)的描繪,可以記錄對象在交互過程中狀態(tài)的變換,并可進一步?jīng)Q定對象在此狀態(tài)下的行為 例如:在基于窗口操作的操作系統(tǒng)中,處理窗口的對象描述窗口的尺寸
5、、位置,類型等性質(zhì),窗口的性質(zhì)的不同取值又可以決定系統(tǒng)對鼠標操作的不同響應(yīng)方式。,2020/8/3,12,2.1 屬性的概念/2,類的屬性,它是類的一個組成部分,描述了類在軟件系統(tǒng)中代表的事物所具備的特征 屬性的定義 在UML里,屬性是類的一個具名的構(gòu)成(named property),它描述了此構(gòu)成在類的實例中能具備的取值范圍 根據(jù)定義: 類的屬性首先是類的一個組成部分; 其次,類每個屬性都必須有一個名字, 以區(qū)別于類的其它屬性。為了定義屬性的取值范圍,必須為屬性指定類型。例如: 布爾類型的屬性可以取兩個值:TRUE和FALSE; 字節(jié)型的屬性只能取256個值 當一個類的屬性被完備地定義后,
6、它的任何一個對象的狀態(tài)都被這些屬性的特定取值所決定,2020/8/3,13,2.2 屬性的表示/1,屬性的圖形表示: 類的屬性被列在其中的第二個分隔區(qū)中 屬性分隔區(qū)是可省略的 當屬性分隔區(qū)未被省略時: 屬性的名字必須出現(xiàn) 屬性的名字后面是它的類型 類型和名字之間用冒號(:)分隔,2020/8/3,14,2.3 屬性的初始值,屬性的初始值: 當類的一個對象被創(chuàng)建,它的各個屬性就開始有特定的狀態(tài)。有時,對象的初始狀態(tài)對此對象參與的交互是有意義的。這時,有必要在對象的類中定義其對象的屬性的初始值 初始值的圖形表示 類的屬性的初始值在屬性的類型的后面指定 初始值和類型之間用等號(=)分隔 屬性的初始值
7、是可選的 當未為屬性指定初始值時,屬性的初值是不確定的,2020/8/3,15,2.4 可省略的描述,除了屬性的名字之外,屬性的其它描述都是可省略的,包括: 類型、初值、可見性,3. 操作,2020/8/3,17,3.1 操作的概念/1,對象在交互中,存在著消息的交換 消息是一個對象向另一個對象發(fā)送請求其提供服務(wù)的指令 一個對象接收的各個不同的消息,構(gòu)成了此對象的類能提供的服務(wù)的集合。 類的操作就是對這些服務(wù)的具體規(guī)定,包括 接收服務(wù)請求的格式 以及類對合法請求所能提供的有效的服務(wù)的承諾 如果把操作映射到C+語言,則操作就是C+的類的成員函數(shù),2020/8/3,18,3.1 操作的概念/2,操
8、作的定義: 操作是一個類所能提供的服務(wù)的實現(xiàn),此服務(wù)能被請求,以改變提供服務(wù)的類的對象的狀態(tài)或為服務(wù)的請求者返回一個值 一個類的操作被定義后,它的任何一個對象都能提供此操作所定義的服務(wù) 操作 必須有一個名字 可以有參數(shù)表 可以有返回值,2020/8/3,19,3.2 操作的表示,按照操作的定義,類的操作所提供的服務(wù)可以分為兩類 一類是操作的結(jié)果引起了對象狀態(tài)的改變,狀態(tài)的改變也包括相應(yīng)的動態(tài)行為的發(fā)生 另一類是為服務(wù)的請求者提供返回值 例如:執(zhí)行特定的計算,并把結(jié)果返回給請求者 操作的圖形表示: 操作被列在屬性最下部的分隔區(qū)里 操作分隔區(qū)是可隱藏的 如果操作分隔區(qū)未被隱藏,則操作的名字必須列出
9、,名字后面必須有一對括弧以表示此名字是操作的名字,2020/8/3,20,2020/8/3,21,3.3 操作署名/1,操作署名(operation signature) 在交互中,操作是通過消息啟動的,為了使操作對應(yīng)的服務(wù)被有效地提供,操作的請求者必須提供合法的啟動消息,包括: 合法的操作參數(shù) 對操作的返回值(如果有的話)的正確解釋 消息的合法性在UML中,通過操作署名(operation signature)規(guī)定定義: 操作署名是操作的參數(shù)的名字、參數(shù)類型、參數(shù)缺省值以及操作的返回值的類型的集合,2020/8/3,22,3.3 操作署名/2,操作署名的圖形表示: 在類的圖符上,操作署名是可
10、隱藏的 如果不隱藏,則參數(shù)表出現(xiàn)在操作名后面的括弧內(nèi) 參數(shù)表內(nèi)的各參數(shù)之間用逗號分隔,參數(shù)包括名字、類型和缺省值 在每個參數(shù)名字后面跟著的是參數(shù)的類型,它們之間用冒號分隔,類型后面是可選的參數(shù)缺省值,它和類型之間用等號(=)分隔 如果一個參數(shù)被指定了缺省值,就意味著此操作被調(diào)用時,可以不指定此參數(shù)的值,這時操作認為調(diào)用者使用缺省值作為此參數(shù)的值。 操作的返回值類型出現(xiàn)在此括弧之后,返回類型和括弧之間之間用冒號分隔。,4. 類的表示方法,2020/8/3,24,4.1 類的說明,S,t,e,r,e,o,T,y,p,e,W,I,N,D,O,W,作,者,=,王,剛,狀,態(tài),=,測,試,可,訪,問,性
11、,名,稱,:,類,型,=,缺,省,值,(,+,#,-,),可,訪,問,性,函,數(shù),名,(,變,量,表,),:,返,回,類,型,(,+,#,-,),變,量,表,變,量,名,:,類,型,=,缺,省,值,2020/8/3,25,2020/8/3,26,4.2 屬性和操作的表達/1,類的構(gòu)成有可能很復(fù)雜,將產(chǎn)生很長的屬性列表和操作列表,沒有必要在模型圖上把所有的屬性和操作都繪制在模型圖上。這是因為: 一方面,這樣會使UML圖過于繁雜 另一方面,出于表達特定問題的需要,不需要將與問題無關(guān)屬性和操作與重要的屬性和操作同時繪制在模型圖上 這時,可以應(yīng)用UML的隱藏原則,在UML模型圖上把對表達問題不重要的屬
12、性或操作隱藏 因此,如果發(fā)現(xiàn)模型圖上某個類的屬性分隔區(qū)或操作缺失或分隔區(qū)內(nèi)沒有內(nèi)容,不表示此類沒有屬性或操作,有可能它們是被省略了。,2020/8/3,27,4.2 屬性和操作的表達/2,類的隱藏表示,可以采取4種方式: 隱藏分隔區(qū) 有選擇地隱藏屬性/操作 隱藏操作署名 隱藏屬性/操作的變體 如果一個類的所有操作和屬性可以根據(jù)它們的語義分為若干組,可以在操作或?qū)傩郧懊鏋樗鼈冎付ㄗ凅w標記,使得同一分組的操作或?qū)傩詭в型瑯拥淖凅w標記,2020/8/3,28,5. 類的建模指南,2020/8/3,30,5.1 類的設(shè)計的特點,類的設(shè)計是軟件系統(tǒng)建造的第一步,它決定著 軟件系統(tǒng)結(jié)構(gòu)合理性 軟件部件的
13、可維護性 可重用性 可移植性 軟件系統(tǒng)的類的設(shè)置、職責的明確、類的屬性和操作的確定,其過程是: 用例驅(qū)動的 面向?qū)ο蟮?2020/8/3,31,5.2 類的職責/1,為了給軟件系統(tǒng)設(shè)置有效的實現(xiàn)類,應(yīng)當從系統(tǒng)的用例圖出發(fā),得出系統(tǒng)為實現(xiàn)用例規(guī)定的功能,內(nèi)部應(yīng)實現(xiàn)的交互 通過合理地設(shè)置參與交互的對象的職責, 確定這些對象的實現(xiàn)類的職責 根據(jù)類的職責,以及其對象在交互中起的作用, 為類指定屬性和操作。,2020/8/3,32,5.2 類的職責/2,類由交互圖導(dǎo)出 在交互圖中,不同的類互相合作,以完成用例圖規(guī)定的功能或任務(wù) 在交互中,不同的對象擔負著不同的職責,為其它對象提供所需的服務(wù) 對象的職責對
14、應(yīng)到其實現(xiàn)類,就成為了類的職責(responsibility) 在UML里,職責是一個類所承擔的義務(wù)或協(xié)議 一個良好定義的類應(yīng)該有清晰的職責 一個類只應(yīng)承擔一種職責 類的職責劃分的好壞,取決于對象參與交互時,此對象在交互中擔任的職責的劃分的合理性,2020/8/3,33,5.2 類的職責/3,類的職責是通過用例驅(qū)動,以面向?qū)ο蟮姆绞疆a(chǎn)生的 通過對用例的分析,產(chǎn)生了系統(tǒng)的交互。在交互中,通過以面向?qū)ο蟮姆绞椒治鼋换ブ型瓿赡橙蝿?wù)所需的步驟及完成步驟的主體,以產(chǎn)生合理的對象職責的劃分 例如:在位圖瀏覽的交互中,專門設(shè)置“外殼”對象負責和操作系統(tǒng)打交道,又有專門的對象負責系統(tǒng)內(nèi)部功能的實現(xiàn)(“內(nèi)核”對
15、象) 在“內(nèi)核”對象中,有職責明確的對象分別負責鼠標工具狀態(tài)機的實現(xiàn),位圖顯示狀態(tài)的維護的實現(xiàn)等等 有了合理的對象職責的劃分,就自然地導(dǎo)出了合理的類的職責的劃分,2020/8/3,34,5.2 類的職責/4,指定類的職責,是對類進行建模的第一步 類所應(yīng)具備的屬性和操作,將根據(jù)類的職責給出 例如: “位圖瀏覽”鼠標工具的對象的交互,“位圖瀏覽” 對象的職責是翻譯鼠標消息,使其轉(zhuǎn)換為對位圖的瀏覽操作。該職責決定了實現(xiàn)位圖瀏覽鼠標工具的類必須有的相應(yīng)的操作接口,它接收傳進來的三個鼠標消息,決定了這個類必須具備一個屬性,作為狀態(tài)變量以記錄鼠標按鍵的狀態(tài) 處理鼠標移動消息時,如果鼠標按鍵處于按下狀態(tài),才
16、能把鼠標移動消息“翻譯”為位圖的拖動操作,2020/8/3,35,5.2 類的職責/5,類的職責的描述: 可以用非形式的普通文本描述 可以出現(xiàn)在操作分隔區(qū)下面的第四個分隔區(qū)內(nèi) 在某些工具里,類的職責不占一個單獨的分隔區(qū) 而是在一個專門的文檔窗口(documentation)中出現(xiàn) 考慮類的職責劃分時,應(yīng)注意類的職責的平衡分布, 應(yīng)注意 既不要使一個類的職責過重、過多 又不要使類的職責過于簡單、平淡 分析和考察類的職責的平衡分布,可以在交互圖上進行,2020/8/3,36,5.3 指南/1,一個實用的軟件系統(tǒng),其結(jié)構(gòu)是復(fù)雜的,類是其中基本的構(gòu)成元素 可以用模型包(package)將語義上緊密聯(lián)系
17、的類組織到一起 在類的表達方面,應(yīng)充分應(yīng)用UML模型的隱藏機制,有重點地用類來表達系統(tǒng)的各個側(cè)面,2020/8/3,37,5.3 指南/2,軟件系統(tǒng)只有和外部直接交互,才能夠為其用戶提供使用價值,因此在設(shè)計和建造一個軟件系統(tǒng)時,免不了要對軟件系統(tǒng)之外的非軟件事物,如用戶、外部設(shè)備等,進行分析和建模 例如:建造一個信息管理系統(tǒng),需要分析用戶群的結(jié)構(gòu)、分工、職責和業(yè)務(wù)流程,類和對象也是描述這類非軟件事物的手段,可以用特定的類來代表一類特定的非軟件事物,用交互圖描述它們的業(yè)務(wù)流程,用屬性和操作定義它們的職責,可以用UML的變體機制將非軟件事物與軟件事物相區(qū)分。,2020/8/3,38,5.3 指南/
18、3,類描述了和軟件系統(tǒng)在建造和實現(xiàn)過程中產(chǎn)生的相關(guān)概念或詞匯 對于大多數(shù)的軟件系統(tǒng)而言,它們不可能直接在一個不含任何軟件的純硬件平臺上建造,總會存在一個軟件的開發(fā)環(huán)境支持這個軟件系統(tǒng)的建造,這包括: 操作系統(tǒng) 高級語言開發(fā)環(huán)境等 這些系統(tǒng)本身已經(jīng)存在了大量的預(yù)定義好的概念或詞匯,亦即已經(jīng)存在了大量預(yù)定義好的類或類型 在這樣的開發(fā)環(huán)境上設(shè)計軟件系統(tǒng)的過程中,預(yù)定義類會被大量地引用 例如:在應(yīng)用MFC進行軟件開發(fā)時,會有許多其類庫中的類或類型被引用。 在建模時,可以簡單地把這些預(yù)定義類(類型),作為應(yīng)用系統(tǒng)設(shè)計模型中的類來加以引用。在引用時,可以根據(jù)需要,利用UML的隱藏機制 不暴露或只暴露所需的
19、屬性或操作。,6. 關(guān)系,2020/8/3,40,6.1 關(guān)系的定義/1,對象不是孤立存在的,它必定參與某一交互,參與一個交互的各對象之間必然要發(fā)生語義的連接 對象的特性,包括結(jié)構(gòu)方面和行為方面的特性,在UML中,被類所捕獲。對象的類之間,必然也存在語義上的連接。這種連接,在UML中,被抽象為類之間的關(guān)系 在UML中,類之間的語義連接被定義為關(guān)系 類之間的關(guān)系的建模,為其對象之間的交互提供了實現(xiàn)支持 對象之間的交互,可以對應(yīng)到類之間的關(guān)系,而這些關(guān)系,又可以被映射到大多數(shù)的程序設(shè)計語言,從而使得對象之間交互得到最終的實現(xiàn),2020/8/3,41,6.1 關(guān)系的定義/2,在類之間的關(guān)系中,最常用
20、的是 依賴關(guān)系 泛化關(guān)系 關(guān)聯(lián)關(guān)系 它們在面向?qū)ο蟮慕V校鹬种匾淖饔谩?2020/8/3,42,6.2 關(guān)系的表示,關(guān)系的圖形表示: UML中類之間的關(guān)系被圖形化地表示為連接類之間的路徑。 這些路徑以不同的線型,區(qū)分不同的關(guān)系,關(guān)聯(lián),WIndow,open(),close(),move(),diaplay(),handleEvent(),consoleWindow,Event,DialogBox,control,依賴,泛化,2020/8/3,43,6.3 依賴關(guān)系/1,在一個交互中,存在著對象之間消息的傳遞 消息的傳遞大多數(shù)情況下是以函數(shù)調(diào)用的形式實現(xiàn)的,有時也會通過直接訪問目標對象
21、的成員變量的形式實現(xiàn) 消息的傳遞,意味著源對象的某些功能或動態(tài)特性將依賴于目標對象的功能或動態(tài)特性 在類圖上強調(diào)類的對象之間的這種關(guān)系,可以在對象的對應(yīng)類之間建立依賴關(guān)系,2020/8/3,44,6.3 依賴關(guān)系/2,依賴關(guān)系的定義:兩個類之間的依賴關(guān)系,表明其中的一個類(客戶類)依賴于另一個類(供應(yīng)類)所提供的某些服務(wù) 圖形表示: 依賴關(guān)系被圖形化地表示為一個帶虛線的箭頭 箭頭所指的類是供應(yīng)類(被依賴的類) 箭頭的出發(fā)點是客戶類,2020/8/3,45,FilmClip,Channel,依賴關(guān)系,客戶類,服務(wù)類,2020/8/3,46,6.3 依賴關(guān)系/3,兩個類之間存在著依賴關(guān)系,意味著客
22、戶類的語義依賴于服務(wù)類的語義。服務(wù)類的語義的變化,將會導(dǎo)致客戶類的語義的變化 如果兩個類的對象之間存在著下面的情形,且兩個類之間不存在結(jié)構(gòu)方面的聯(lián)系(例如:供應(yīng)類以成員變量的形式作為客戶類的一部分),就可以建模成為具有依賴關(guān)系,這些情形是: 客戶類訪問定義在供應(yīng)類內(nèi)部的值(常量或 變量) 客戶類的操作啟動了定義在供應(yīng)類內(nèi)的操作 客戶類的返回類或參數(shù)是供應(yīng)類的實例 序列圖中的兩個對象,如果存在著消息的發(fā)送。且它們之間又沒有結(jié)構(gòu)方面的連接,就可以在類圖上用依賴關(guān)系對它們建模,2020/8/3,47,6.4 泛化關(guān)系/1,位圖觀察器的例子, 鼠標工具 通常,在這樣的應(yīng)用軟件系統(tǒng)中,會存在多個鼠標工具
23、。它們都從操作系統(tǒng)接收同樣的鼠標消息,對這些鼠標消息的不同解釋,使得各鼠標工具的功能得以區(qū)分 在實現(xiàn)這些鼠標工具時,每一個鼠標工具用一個對象實現(xiàn),由于它們所處理的鼠標消息是相同的, 因此,它們的實現(xiàn)類所具備的操作有許多是相同的,區(qū)別在于它們對操作的執(zhí)行上各有不同。有的對象還有可能有些擴展的操作,以實現(xiàn)不同工具的功能 在面向?qū)ο蟮某绦蛟O(shè)計語言中,這樣的鼠標工具的一組實現(xiàn)對象的實現(xiàn)類可以共同定義為某個基類的導(dǎo)出類 UML中,則用泛化關(guān)系為這種基類/導(dǎo)出類的關(guān)系建模,2020/8/3,48,6.4 泛化關(guān)系/2,泛化關(guān)系的定義: 在UML中,泛化關(guān)系表示子類共享定義在一個或多個超類(parent)里
24、的結(jié)構(gòu)或行為 泛化關(guān)系表示類之間的一般和特殊的關(guān)系 在一組類中,如果它們都有一組相同的屬性和操作,那么,可以把這組屬性和操作定義在一個超類中,并把其它類與超類的關(guān)系定義為泛化關(guān)系。如果兩個類被定義為具有泛化關(guān)系,就意味著在任何超類的對象出現(xiàn)的地方,都可以用子類來代替。,2020/8/3,49,6.4 泛化關(guān)系/3,在UML中,泛化關(guān)系被圖形化地表示為一個帶有空心三角形的箭頭的線段 箭頭所指的方向是超類 箭頭起始端是子類 在泛化關(guān)系中 一個類可以有零個、一個或多個超類 如果一個類只有一個超類,那么就稱為是單繼承 如果一個類有多個超類,就稱為是多重繼承 如果一個類沒有超類但有一個或多個子類,則這個
25、類成為基類(base class) 如果一個類沒有任何子類,則成為葉子類(leaf class),2020/8/3,50,6.4 泛化關(guān)系/4,繼承的多態(tài)性 在子類中,如果存在一個操作和其超類中的操作具有相同的署名(signature), 則子類中的此操作的動態(tài)行為將替代超類的動態(tài)行為。,2020/8/3,51,基類,Shape,origin,move(),resize(),display(),Rectangle,corner : Point,Circle,radius : Float,Polygon,points : List,display(),Square,泛化關(guān)系,葉子類,2020/8
26、/3,52,6.5 關(guān)聯(lián)關(guān)系/1,依賴關(guān)系和泛化關(guān)系反映的是類之間在動態(tài)行為方面的聯(lián)系 在軟件系統(tǒng)中還存在著大量的結(jié)構(gòu)方面的聯(lián)系 例如:建造管理信息系統(tǒng)時,需要對其所處的管理機構(gòu)的運行結(jié)構(gòu)進行建模,以建立各管理實體之間的對應(yīng)關(guān)系(部門和雇員之間的關(guān)系、銷售部門和商品之間的關(guān)系等),并在此基礎(chǔ)上建立相應(yīng)的數(shù)據(jù)庫模式。在以前經(jīng)常使用的工具有實體-關(guān)系模型等 在UML里可以用關(guān)聯(lián)關(guān)系描述,2020/8/3,53,6.5 關(guān)聯(lián)關(guān)系/2,關(guān)聯(lián)關(guān)系的定義: 在UML里,關(guān)聯(lián)關(guān)系表示兩個類或類和接口之間的語義連接 關(guān)聯(lián)關(guān)系可以是雙向的。它在所有的關(guān)系中間語義最弱 從關(guān)聯(lián)關(guān)系的定義可以看出:如果兩個類之間存在
27、著依賴關(guān)系或泛化關(guān)系,那么它們一定也隱含著具有關(guān)連關(guān)系 但在些情況下,描述這種關(guān)聯(lián)關(guān)系已經(jīng)沒有意義,所以一般不必再對這種關(guān)聯(lián)關(guān)系進行描述,或者說,這時關(guān)聯(lián)關(guān)系已經(jīng)被依賴關(guān)系或泛化關(guān)系所取代 這就是“語義最弱”的含義所在,2020/8/3,54,6.5 關(guān)聯(lián)關(guān)系/3,關(guān)聯(lián)關(guān)系是一種結(jié)構(gòu)關(guān)系 如果兩個類之間存在著關(guān)聯(lián)關(guān)系,則它們的對象是互相連接的(對象之間存在著連接關(guān)系),即其中的一個對象可以訪問另一個對象,它可以訪問另一個對象的屬性,或啟動另一個對象的操作。,2020/8/3,55,6.5 關(guān)聯(lián)關(guān)系/4,關(guān)聯(lián)關(guān)系并不是僅僅一個抽象的概念 它在實現(xiàn)為程序設(shè)計語言源代碼時,會有對應(yīng)的映射 通常,當把
28、兩個有關(guān)聯(lián)關(guān)系的類映射為特定的程序設(shè)計語言代碼時,每一個類都會被定義為一個可以引用對方的類的對象的成員變量 這個成員變量視對關(guān)聯(lián)關(guān)系的修飾的不同,可能會采取不同的形式,如: 它可以指向?qū)Ψ降念惖闹羔?也可能是對方類的對象,2020/8/3,56,6.5 關(guān)聯(lián)關(guān)系/5,在UML中,關(guān)聯(lián)關(guān)系的圖形化表示的基本形式是連接兩個類的直線。,對象類,對象類,限定符,關(guān)聯(lián) 對象類,多重性,角色名,限定符,角色名,多重性,關(guān)聯(lián)名,2020/8/3,57,6.5.1 關(guān)聯(lián)關(guān)系:方向,關(guān)聯(lián)方向 關(guān)聯(lián)可以是單向的,也可以是雙向的,雙向的不必標出箭頭 說明給出了一個訂貨,就可以指出辦理該訂貨的顧客,但是給出一個顧客卻
29、不能標識相應(yīng)的訂貨 實現(xiàn)時,可以在“訂貨”類中設(shè)置一個指向“顧客”類的指針。,訂貨,顧客,*,1,2020/8/3,58,6.5.2 關(guān)聯(lián)關(guān)系的修飾,由于關(guān)聯(lián)關(guān)系的語義弱,所以可以對關(guān)聯(lián)關(guān)系及其圖形表示進行修飾以表達更為特指的情形 對于關(guān)聯(lián)關(guān)系,存在著四種修飾,它們是: 名字 角色 重復(fù)度(multiplicity) 聚合,2020/8/3,59,6.5.3 關(guān)聯(lián)關(guān)系的名字,對于關(guān)聯(lián)關(guān)系,可以用名字對其進行標識,以和其它關(guān)聯(lián)關(guān)系相區(qū)別 名字可以是任何有意義的文字串。如果名字里的詞匯帶有指向性, 用以特指所涉及的那個類,則可以在名字的靠近這個類的一側(cè)放置一個指向三角形指向這個類,2020/8/3
30、,60,Person,Company,Work for,4,名字,關(guān)聯(lián),名字的指向,2020/8/3,61,6.5.4 關(guān)聯(lián)關(guān)系的角色/1,關(guān)聯(lián)關(guān)系中的角色 如果兩個類之間存在著關(guān)聯(lián)關(guān)系,則它們的對象可以互相訪問 這意味著對其中任意一個對象而言,存在著另外一個類的對象能被它訪問 為了訪問關(guān)聯(lián)關(guān)系的某一端類的對象,必須為它定義一個標識,使得通過這標識,另一個類的對象能夠訪問被訪問的對象,2020/8/3,62,6.5.4 關(guān)聯(lián)關(guān)系的角色/2,角色的定義:在UML里,關(guān)聯(lián)關(guān)系兩端的類的對象在對方的類里的標識,稱為角色(role)。 角色在關(guān)聯(lián)關(guān)系的圖形化表示里由角色名(role name)表示。
31、當關(guān)聯(lián)關(guān)系里的類被映射到程序設(shè)計語言時 角色名字就成為類的一個成員變量的名字,此成員變量的類型將是另一個類的對象,或指向另一個類的指針,2020/8/3,63,Person,Company,+employer,+employee,角色名,關(guān)聯(lián)關(guān)系,2020/8/3,64,6.5.4 關(guān)聯(lián)關(guān)系的角色/3,角色的重復(fù)度 當一個類的對象以關(guān)聯(lián)關(guān)系的角色的形式出現(xiàn)在另一個類里時,此角色可以在此類中出現(xiàn)一次,也可以出現(xiàn)多次。角色的重復(fù)度指的就是角色的這種出現(xiàn)次數(shù)。 角色重復(fù)度的定義:在UML里,角色重復(fù)度被定義為關(guān)聯(lián)關(guān)系的實例的兩端所連接的對象的數(shù)目。,2020/8/3,65,6.5.4 關(guān)聯(lián)關(guān)系的角色
32、/4,角色重復(fù)度的圖形化表示:角色重復(fù)度被圖示為一個表達式,它被放置在關(guān)聯(lián)關(guān)系中靠近相應(yīng)角色的一側(cè),此表達式確定了一個常數(shù)值或值的范圍,例如: 重復(fù)度1:代表對象作為角色必須出現(xiàn)且只出現(xiàn)1次。 重復(fù)度0.1:表示對象作為角色可以出現(xiàn)0次或1次。 星號(*):代表任意多次,例如: 重復(fù)度0.*表示對象作為角色可以出現(xiàn)0次任意多次; 重復(fù)度1.*表示對象作為角色必須至少出現(xiàn)1次且可以出現(xiàn)多至任意多次。,2020/8/3,66,+employee,Person,Company,*,1.*,+employer,*,1.*,關(guān)聯(lián),重復(fù)度,2020/8/3,67,6.5.4 關(guān)聯(lián)關(guān)系的角色/5,在一個帶有
33、多重性的關(guān)聯(lián)關(guān)系中,相關(guān)聯(lián)的某一方可能同時出現(xiàn)過個對象。如目錄與文件。 這樣的描述比較粗糙。沒有具體說明在目錄中是如何標示一個文件的。因此,對于目錄這個對象,雖然可以說出屬于它的所有文件,但卻無法指明哪個特定的文件要被刪除。 使用限定關(guān)聯(lián)可用來解決該問題。限定符用來說明對于關(guān)聯(lián)關(guān)系的一方,它是如何表示和識別與它相關(guān)聯(lián)的另一方中的多個對象的。如任何一個目錄對象都是使用文件名來標示屬于它的每個文件的。,目錄,文件,文件名,1,2020/8/3,68,6.5.4 關(guān)聯(lián)關(guān)系的角色/6,關(guān)聯(lián)的屬性、操作以及其它信息可以由關(guān)聯(lián)對象類進一步描述 一個人能被一個單位或無單位聘用,一個單位可以聘用多個人,聘用的
34、期限和工資信息在關(guān)聯(lián)類“工作崗位”中描述。,2020/8/3,69,6.5.4 關(guān)聯(lián)關(guān)系的角色/7,根據(jù)關(guān)聯(lián)的類的個數(shù),可以分為: 自返關(guān)聯(lián) 二元關(guān)聯(lián) N元關(guān)聯(lián),2020/8/3,70,(1)自返關(guān)聯(lián),自返關(guān)聯(lián)(Reflexive Association,Recursive Association)是一個對象類與本身的關(guān)聯(lián),即一個類的兩個對象間的關(guān)系 至多只有一個人的職務(wù)可以為業(yè)主,其他人的職務(wù)可以為工作人員,他們都是“職務(wù)”類的實例對象。一個“業(yè)主”可以與多個“工作人員”相連接。,2020/8/3,71,(2)N元關(guān)聯(lián),發(fā)生在3個和多個對象類之間,顧客,供應(yīng)商,商品,訂貨 商品編號 商品名
35、單價,*,*,*,2020/8/3,72,6.5.5 關(guān)聯(lián)關(guān)系:約束,約束: Implicit: 概念性的,在精化中不會再用 Ordered:規(guī)定一個多重性大于1的一端對象是有序的 Changeable:規(guī)定被關(guān)聯(lián)的對象之間的連接是可變的,可以被添加、刪除和改變 Addonly:規(guī)定可以在任何時間從源對象添加新的連接 Frozen:規(guī)定當源對象已經(jīng)創(chuàng)建和初始化后,就被凍結(jié),不能再添加、修改和刪除連接 Xor:代表一組關(guān)聯(lián)的互斥情況,2020/8/3,73,6.5.6 關(guān)聯(lián)關(guān)系:聚合/1,聚合: 關(guān)聯(lián)關(guān)系的基本形式是雙向的,意味著關(guān)聯(lián)關(guān)系兩端的類的地位是平等的。 關(guān)聯(lián)關(guān)系又是一種結(jié)構(gòu)關(guān)系,其中的
36、角色代表著一個類的對象在另一個類中的存在。也就是說關(guān)聯(lián)關(guān)系中類的對象被互相擁有,有時,出于建模的需要,有必要打破這種平等的關(guān)系,強調(diào)類與對象之間的有向的擁有關(guān)系 為此,可以用聚合對關(guān)聯(lián)關(guān)系進行修飾,以表示類和對象的擁有關(guān)系。,2020/8/3,74,6.5.6 關(guān)聯(lián)關(guān)系:聚合/2,聚合關(guān)系的定義:在UML中,聚合關(guān)系(aggregation)被定義為兩個類之間的整體和部分的關(guān)系, 表明聚合關(guān)系中的客戶端以供應(yīng)端的類的對象作為其一部分 聚合對象具有其部分的所有權(quán)。,2020/8/3,75,6.5.6 關(guān)聯(lián)關(guān)系:聚合/3,聚合關(guān)系的圖形表示 通過在關(guān)聯(lián)關(guān)系的聚合類一側(cè)放置一個菱形得到 聚合關(guān)系還可
37、被進一步修飾為兩類: 值聚合(by value, composite aggregate) 引用聚合(by reference),2020/8/3,76,整體:,聚合類、,客戶端,Company,Department,*,1,*,1,聚合,部分:,供應(yīng)端,2020/8/3,77,6.5.7關(guān)聯(lián)關(guān)系:組合,表示事物的整體與部分的關(guān)系較強的情況 組合中,代表整體事物的組合對象負責創(chuàng)建和刪除代表部分事物的對象(成分對象)。代表部分事物的對象只屬于一個組合對象,而且與組合對象同時存在,同時消失,一旦刪除了組合對象,也就隨即刪除了相應(yīng)的代表部分事物的對象。 在聚合中,代表部分事物的對象可以屬于多個聚合對
38、象,可以為多個聚合對象共享,而且可以隨時改變它從屬的多個聚合對象。部分事物對象的生存期與聚合對象的生存期無關(guān)。,2020/8/3,78,6.5.8 關(guān)聯(lián)關(guān)系:組合與聚合/1,多邊形,點,圓,圖形屬性塊 顏色 結(jié)構(gòu),1,1,1,1,1,3*,ordered,2020/8/3,79,7. 特殊類,2020/8/3,80,7.1 接口,接口是一組外部可訪問的操作,用于為對象類或組件提供服務(wù)。 接口可以看作一種特殊的抽象類,它不含屬性,操作也沒有方法,即沒有操作的實現(xiàn) 接口兩端的對象或組件可以獨立變更,只要它們遵守和實現(xiàn)接口的規(guī)定,通過接口相聯(lián)系就可以了。,2020/8/3,81,實現(xiàn),依賴,2020
39、/8/3,82,7.2 抽象類/1,抽象類是不能直接產(chǎn)生實例的對象類 抽象類的實例對象只能通過一個非抽象類的子類產(chǎn)生,2020/8/3,83,7.2 抽象類/2,抽象類一般在繼承結(jié)構(gòu)中作為一個公共接口。但是在UML中的抽象類與接口是不同的模型元素。一個抽象類可以有屬性,接口不含有屬性,而且接口既可以由對象類實現(xiàn)(邏輯模型元素),也可以由組件實現(xiàn)(物理抽象元素),2020/8/3,84,7.3 參數(shù)化類/1,參數(shù)類(parameterized class)又稱對象類模板(Template)是帶有形式參數(shù)的類描述符,它定義一個類的家族。在參數(shù)類中屬性和操作都是以形式化參數(shù)來定義。 參數(shù)類不能直接使用,只有通過把參數(shù)類的形式參數(shù)綁定到實在參數(shù)時才得到一個類。綁定的類不能擴充參數(shù)類,即不能添加屬性和操作。,2020/8/3,85,7.4 型與實現(xiàn)對象類,可以用構(gòu)造型把類說明為型(Type)或?qū)崿F(xiàn)類(Implementation Class)。 對象類圖標的類名之下標有構(gòu)造型type或implementationClass,2020/8/3,86,2020/8/3,87,7.5導(dǎo)出屬性和導(dǎo)出關(guān)聯(lián),可以從其它屬性和關(guān)聯(lián)計算推延得到的屬性和關(guān)聯(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術(shù)賦能課堂變革打造高效教學(xué)環(huán)境研討會
- 教育政策在醫(yī)療設(shè)備研發(fā)中的作用
- 打造智能教育資源體系設(shè)計思維的探索與實踐
- 煙草制絲培訓(xùn)課件
- 公交優(yōu)先戰(zhàn)略2025年對城市交通擁堵治理的影響研究報告
- 浙江警官職業(yè)學(xué)院《戲曲劇目研習(xí)》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州電力高等??茖W(xué)校《小動物麻醉與監(jiān)護》2023-2024學(xué)年第一學(xué)期期末試卷
- 公共衛(wèi)生應(yīng)急物資儲備體系建設(shè)實施方案在2025年的技術(shù)創(chuàng)新與應(yīng)用報告
- 成都紡織高等??茖W(xué)校《中外美術(shù)史A》2023-2024學(xué)年第一學(xué)期期末試卷
- 公路貨運行業(yè)2025年數(shù)字化轉(zhuǎn)型與智能運力調(diào)度策略研究
- 《建筑業(yè)企業(yè)資質(zhì)等級標準》(建建200182號)-20210829233
- 城鎮(zhèn)污泥標準檢驗方法CJT221-2023 知識培訓(xùn)
- 村打井施工合同范本
- 屋頂分布式光伏電站施工組織設(shè)計方案
- 員工委派協(xié)議書
- DB11T 1034.2-2024交通噪聲污染緩解工程技術(shù)規(guī)范 第2部分:聲屏障措施
- 初一語文期末試卷及參考答案
- 四川省成都市金牛區(qū)2023-2024學(xué)年七年級下學(xué)期期末數(shù)學(xué)試題
- DL-T664-2016帶電設(shè)備紅外診斷應(yīng)用規(guī)范
- 四新四化的心得體會(24篇)
- 道路清障救援作業(yè)服務(wù)投標方案(完整技術(shù)標)
評論
0/150
提交評論