




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、統一建模語言UML第第6章章 類圖類圖(Class Diagram) 1第第6章章 類圖類圖(Class Diagram) 6.1 基于類的系統結構建模 6.2 類圖 6.3 類圖的表示方法 6.4 總結2021-11-262第第6章章 類圖類圖(Class Diagram) 6.1 基于類的系統結構建模 6.2 類圖 6.3 類圖的表示方法 6.4 總結2021-11-2636.1 基于類的系統結構建模 建立類模型是整個軟件分析和開發中最為重要的一個環節 通常,類的建模有兩個目的 一是建立類與類之間的功能關系的模型,即域模型 (Domain Model),域模型解決的是功能性需求問題 二是建
2、立類與類之間的松耦合關系的模型,即設計模型 (Design Model),設計模型是在域模型的基礎上解決軟件的質量問題,即非功能需求問題2021-11-264第第6章章 類圖類圖(Class Diagram) 6.1 基于類的系統結構建模 6.2 類圖 6.3 類圖的表示方法 6.4 總結2021-11-2656.2 類圖 類圖 (Class Diagram) 是類的模型,是利用圖示和文字注釋描述類以及類和類之間相互關系的方法 類圖用于建立類、類的內部結構 (類的屬性和方法) 以及類與類相互之間的各種關系模型 類圖是我們編程的最重要的模型依據2021-11-2666.2 類圖 類圖是由類 (C
3、lasses)、類之間的關系 (Relationships) 和約束 (Constraints) 構成的 它的表達方式為: 類圖 = 類 + 關系 + 約束 Class Diagram = Class + Relationships + Constraints2021-11-267第第6章章 類圖類圖(Class Diagram) 6.1 基于類的系統結構建模 6.2 類圖 6.3 類圖的表示方法 6.4 總結2021-11-2686.3 類圖的表示方法 6.3.1 表示類 6.3.2 類的關系2021-11-2696.3 類圖的表示方法 6.3.1 表示類 6.3.2 類的關系2021-11
4、-26106.3.1 表示類 在UML中,用矩形框來表示類 一般將矩形框分為三部分,最上方為類的名字,中間為類的屬性 2021-11-26112021-11-2612 getProdInfoById(id : String)ProductproductId : StringsetStorageArea() Storagearea : float圖6-1 兩個簡單的類 類名類名屬性屬性方法方法6.3.1 表示類 6.3.1 表示類 實際應用中,只有類名是類圖中唯一不可缺少的部件,而類的屬性和方法都可以根據具體需要來決定是否表示在矩形框內 如果需要,你還可以向類圖中增加其它欄用于表示其他預定義或者
5、用戶定義的模型特性 2021-11-26132021-11-2614execeptions NoSuchEndingDateProductPlan getOrder(orderId:String) getInventory()附加分欄,表示類產生的異常 planDate: Date圖6-2 在類圖中添加分欄表達附加的內容 6.3.1 表示類 6.3.1 表示類 1. 類的名字類的名字 2. 類的屬性類的屬性 3. 類的方法類的方法 4. 類的靜態屬性和靜態方法的表述方法類的靜態屬性和靜態方法的表述方法 2021-11-26156.3.1 表示類 1. 類的名字類的名字 2. 類的屬性類的屬性
6、3. 類的方法類的方法 4. 類的靜態屬性和靜態方法的表述方法類的靜態屬性和靜態方法的表述方法 2021-11-26161類的名字類的名字 在系統分析設計階段,我們可以用任何語言為類命名 但是,一般我們用英語,因為這可以直接與編程對應,英文命名的規則是類名的首字母要大寫 如果類名中包括多個單詞,應該把每個單詞的首位字母均大寫 正體字書寫的類名說明類是可被實例化的類,即具體類(Concrete Class),斜體字說明類為抽象類 (Abstract Class),接口 (Interface) 則用構造型的方式來表示。2021-11-26172021-11-2618OrderMgtStorageI
7、nterface Product 圖6-3 具體類、抽象類和接口的命名 1類的名字類的名字6.3.1 表示類 1. 類的名字類的名字 2. 類的屬性類的屬性 3. 類的方法類的方法 4. 類的靜態屬性和靜態方法的表述方法類的靜態屬性和靜態方法的表述方法 2021-11-26192.類的屬性類的屬性 在類的矩形框的屬性區域內,UML用以下語法模式來描述類的每個屬性:可見性/屬性名:屬性的類型多重性 = 缺省值特性描述和限制條件 visibility / name : type multiplicity = default property strings and constraints2021-
8、11-26202.類的屬性類的屬性2021-11-2621Order+orderID : String-dateReceived : Date-price : Money#status : Boolean=Null-orderMgr : OrderManagement-productNames : String1.*unique-/amountPayment : float圖6-4 Order類的屬性 2.類的屬性類的屬性 1)可見性 可見性(Visibility)指根據可見性規則 (Visibility Rules),一個方法或屬性是否能被另一個方法訪問 2021-11-26222. 類的屬
9、性類的屬性2021-11-2623表6-1可見性的修飾詞、描述及對應的java訪問控制符UML符號描述Java訪問控制符+表示具有公共可見性,可以被所有的類訪問和使用public#表示受保護的可見性,經它修飾的屬性和方法可以被同一個包中的其他類、不同包中該類的子類以及該類自身訪問和引用protected表示包級可見性,只能被同一個包中的其他類訪問或引用,不在同一個包中的類不能訪問它default-表示私有可見性,經它修飾的屬性和方法只能被該類自身所訪問,它對屬性和方法提供了最高級別的保護private 2. 類的屬性類的屬性 2) / “/”表示當前屬性是導出屬性(Derived Attrib
10、ute),是可經類的其它屬性計算得出的 在屬性前加“/”可以提醒實施者,當前這個屬性可能并不是必須的 UML規范指出,導出屬性是只讀的(ReadOnly),用戶不能更改它的值 2021-11-26242021-11-2625Order+orderID : String-dateReceived : Date-price : Money-/amountPayment : float圖6-5 導出屬性 2. 類的屬性類的屬性2. 類的屬性類的屬性 3)屬性名 屬性的命名應該用首字母小寫的名詞為屬性命名 如果屬性名中包括多個單詞,除了第一個單詞外,應該把其余單詞的第一個字母大寫 2021-11-26
11、262. 類的屬性類的屬性 4) 屬性的類型 用冒號分隔屬性名和屬性的類型 2021-11-26272. 類的屬性類的屬性 5)多重性 多重性(multiplicity)指明該屬性類型有多少個實例被當前屬性引用 表示方法為: 多重性:=低高 multiplicity:= lowerupper2021-11-26282. 類的屬性類的屬性 6)缺省值 有的時候需要在程序中為某個特殊屬性設置缺省值(default) 比如屬性status的缺省值為Null,一個新銀行賬戶的余額的缺省值應該為零等等 2021-11-26292. 類的屬性類的屬性 7)屬性字符 屬性字符(Property String
12、s)用于說明屬性具有的其它性質,經常用特殊的文本指明 2021-11-26302. 類的屬性類的屬性 8)約束 約束(contraints)表示對屬性的約束和限制,通常是用“”括起的布爾類型的表達式 2021-11-26316.3.1 表示類 1. 類的名字類的名字 2. 類的屬性類的屬性 3. 類的方法類的方法 4. 類的靜態屬性和靜態方法的表述方法類的靜態屬性和靜態方法的表述方法 2021-11-26323. 類的方法類的方法 類的方法(Method)說明了類能夠做什么 在類的矩形框的方法區域內, UML用以下語法來描述類的每個方法:可見性/方法的名字(參數)列表 :方法的返回值類型 特性
13、 Visibility/ name (parameter list) : return-type properties2021-11-26332021-11-2634OrderManagement+getOrder(orderid:String)+addtems(item:Product):void+minusItems(items:Product0.* = 0 unique):voidpost condition:total items=0+calculateTotalCost():floatprecondition:cart.items.count0+shipItems(destinati
14、on:Address):booleanprecondition: payment has been verified圖6-6 類OrderManagement的方法 3. 類的方法類的方法3. 類的方法類的方法 1)可見性 方法的可見性也用+,#,或-表示public,protected,package或private級別的可見性 2021-11-26353. 類的方法類的方法 2)方法名 類的方法名應該用首字母小寫的動詞,如果方法名中包括多個單詞,除了第一個單詞外,應該把其余單詞的首字母大寫 2021-11-26363. 類的方法類的方法 3)參數列表 指明方法的參數列表,如果該方法沒有參數
15、,則參數列表可以省略,但空括號還有保留 參數列表的格式為: 方向 參數名 : 類型多重性 = 缺省值特性 direction parameter_name : type multiplicity = default_value properties 2021-11-26373. 類的方法類的方法 4)方法的返回值 如果方法沒有返回值,那么return-type為空 2021-11-26383. 類的方法類的方法 5)特性 特性(property)用于說明方法具有的其它性質,代表附加在元素上的任何可能值 2021-11-26396.3.1 表示類 1. 類的名字類的名字 2. 類的屬性類的屬性
16、3. 類的方法類的方法 4. 類的靜態屬性和靜態方法的表述方法類的靜態屬性和靜態方法的表述方法 2021-11-26404. 類的靜態屬性和靜態方法的表述方法類的靜態屬性和靜態方法的表述方法 靜態的屬性和方法被稱為靜態類成員。 在類圖中,用下劃線標明該屬性或方法是靜態成員 2021-11-26412021-11-2642Order+getOrderInvoiceSatusNONE() : String+getOrderInvoiceSatusSOME() : String+getOrderInvoiceSatusALL() : String-orderInvoiceSatusNONE : St
17、ring=B-orderInvoiceSatusSOME : String=S;-orderInvoiceSatusALL : String=A;圖6-7 包含靜態屬性和方法的類Order 4. 類的靜態屬性和靜態方法的表述方法類的靜態屬性和靜態方法的表述方法6.3 類圖的表示方法 6.3.1 表示類 6.3.2 類的關系2021-11-26436.3.2 類的關系1. 關聯(Association)2. 泛化(Generalization)3. 實現(Realization )4. 依賴(Dependency) 2021-11-26446.3.2 類的關系1. 關聯(Association)
18、2. 泛化(Generalization)3. 實現(Realization )4. 依賴(Dependency) 2021-11-26451. 關聯(Association) 關聯(Association)表示一個對象擁有另一個對象 關聯指兩個類之間的“has a”的關系。關聯描述了有著共同的結構和語義的一組對象之間的連接 2021-11-26461. 關聯(Association) 關聯具有下面的屬性: 關聯的方向/導航(direction/navigability) 關聯名(association name) 關聯角色(association role) 多重性(multiplicity
19、) 關聯類型(association type)2021-11-26472021-11-2648圖6-8 類的關聯 Person1.* employer 1works forCompanyemployee方向/導航關聯名關聯類型多重性關聯角色1. 關聯(Association)1. 關聯(Association) 1) 關聯的方向關聯的方向/導航導航 關聯的方向屬性表示可以通過關聯關系從關聯類導向到目標類上 可以用實線來表示關聯關系 如果想表達從一個類到另一個類的方向,可用帶箭頭的實線來表示關聯的方向,閱讀者將沿著這個箭頭來閱讀關聯 如果關聯的一方與另一方沒有關系,則在實線的尾部畫一個差 如果
20、這種關聯的方向是雙向的,那就不需要任何箭頭,則直接用直線將相互關聯的類相連2021-11-26491. 關聯(Association) 2) 關聯名關聯名 為了方便人們的閱讀,關聯通常有一個名稱,這個名稱應該選用一個動詞詞組 關聯關系通常是在分析過程中命名的,此時還沒有足夠的信息來對角色進行適當的命名 如果使用關聯關系名稱,關聯關系名稱就應該反映該關系的目的 關聯關系名稱應放置在關聯關系路徑上或其附近,并且用一個實心箭頭表示關聯名稱的發生方向 關聯名稱是不出現在編碼中的,它不能被映射為代碼 2021-11-26501. 關聯(Association) 3) 關聯角色關聯角色 關聯關系的兩端為角
21、色,角色規定了類在關聯關系中所起的作用 每個角色都必須有名稱,而且對應一個類的所有角色名稱都必須是唯一的 角色名稱應該是一個名詞,以描述在特定的環境中描述關聯的行為或職責 關聯角色是對一個關聯的特殊說明,關聯角色的命名應能夠表達被關聯關系對象的角色與關聯關系對象之間的關系 角色名稱被放置在緊鄰關聯關系線的末端 2021-11-26511. 關聯(Association) 4) 多重性多重性 多重性表示一個類同時擁有的實例的數目 它描述的是一個類的多少對象與另一個類的一個對象相關 可用一個單一的數字或一個數字序列表示 多重性應放在被擁有的類的附近 2021-11-26521. 關聯(Associ
22、ation) 5) 關聯的類型 t簡單關聯(Plain Association)t聚合(Aggregation)t組合(Composition) 2021-11-26531. 關聯(Association) 5) 關聯的類型 聚合(Aggregation)是一種強類型的關聯,它表示“is the part-of”或者“.owns a.”.的關系 是一個裝配件類與某個部件類相關聯的一種關系 帶有多種部件的裝配件應包含多個聚合 2021-11-26541. 關聯(Association) 5) 關聯的類型 組合(Composition)是某種更強形式的聚合 組合意味著整體與組成件之間是互不可分的關
23、系 作為整體的類會因為擁有某個作為部分的類而存在,否則整體也會消失 2021-11-26552021-11-2656MotoCycle registrationNumber getRegistrationNumber()OilPump oilPumNumber getOilPumNumber()EngineengineNumber getEngineNumber()Radio panelNumber getPanelNumber()110.1圖6-9 組合和聚合 1. 關聯(Association) 6) 自關聯自關聯 自關聯(self-association)指一個類與其自身存在一種關聯關系
24、 自關聯關系意味著該類的某個實例與該類的其他實例之間存在關聯關系 2021-11-26572021-11-2658Employee manager 1 responsible for 1.*worker 圖6-10自關聯 1. 關聯(Association)1. 關聯(Association) 7)關聯類關聯類 將擁有屬性或行為的關聯關系組織為關聯類 可以向關聯類中添加屬性、方法和其他關聯的特點 通常關聯類最常見的用途是協調多到一或多到多關系 2021-11-26592021-11-2660CompanyPerson * employeeemployer 1Employmentperiod :
25、 DateRange關聯類圖6-11關聯類 1. 關聯(Association)1. 關聯(Association) 8)限定關聯限定關聯 假設兩個類之間存在關聯關系,但其中一個類之與另一個類的一部分實例存在關聯關系,而與這個類的另一部分實例不存在關聯關系,這就涉及了兩個類發生關聯關系的資格問題,稱為限定關聯(Qualified Association) 在類圖中,我們用限定符(Qualifier)表示限定關聯,它用來選擇關聯聯系起來的對象 限定符的表示法是在關連線靠近源類一端繪制一個小方框,這個小方框可以放置在源類的任何一側2021-11-26612021-11-266210.*employ
26、NumeberPersonBonus圖6-12 限定關聯 1. 關聯(Association)1. 關聯(Association) 9) 關聯上的異或約束:關聯上的異或約束:xor 具有一個公共類的二元關聯之間可能存在有異或約束,把這種結構稱為xor關聯 2021-11-26632021-11-2664CompanyAccountPersonxor圖6-13 xor關聯 1. 關聯(Association)1. 關聯(Association) xor關聯也可以通過泛化的方式來表達 2021-11-2665AccountOwnerCompanyPerson* 1 圖6-14 用泛化表示xor關聯
27、 6.3.2 類的關系1. 關聯(Association)2. 泛化(Generalization)3. 實現(Realization )4. 依賴(Dependency) 2021-11-26662. 泛化(Generalization) 類之間存在相似性和差異性,應用泛化,子類共享定義在一個或多個父類(Parent class)里的結構或行為 泛化有時被稱作“is a kind of”關系 泛化是指父類與其一個或多個子類之間的關系 父類擁有公共屬性、方法和關聯,子類除了具有父類的屬性、方法和關聯之外,還具有自己特征 每個子類繼承(Inherit)其父類的特征2021-11-26672021
28、-11-2668StorageProductStoragePartsStorage圖6-15 類的泛化 Specialization Generalization 2. 泛化(Generalization)6.3.2 類的關系1. 關聯(Association)2. 泛化(Generalization)3. 實現(Realization )4. 依賴(Dependency) 2021-11-26693. 實現實現 在UML里,有一個專門的建模元素可以用于對類或部件所提供的服務進行描述,這就是接口(Interface) UML的接口描述的是一系列的方法,這些方法為一個類或部件規定了其必須提供的服
29、務2021-11-26703. 實現實現 接口被建模為實現(Realization)關系 實現關系將一種模型元素(如類)與另一種模型元素(如接口)連接起來,由實現關系指定二者之間的一個合同(Contract),一個模型元素定義一個合同,而另一個模型元素保證履行該合同 關系中的一個模型元素只具有行為的定義,而行為的具體實現則是由另一個模型元素來給出2021-11-26712021-11-2672ProductSledgeMotocyclegetName( )getParameter( )getWheelType( )getTrackType( )圖6-16類的實現關系 3. 實現實現3. 實現實
30、現 UML應用虛線加上空心的箭頭來表示實現關系 關系中的箭頭由實現接口的類指向被實現的接口 可以將接口簡化為lollipop,它是一個供接口,是類提供的對外接口,它表示類能夠提供的服務,然后可以在類圖的某個地方定義lollipop表示的接口 2021-11-26732021-11-2674MotocyclegetWheelType( )Product ProductgetName( )getParameter( )圖6-17 用lollipop表示的接口 3. 實現實現6.3.2 類的關系1. 關聯(Association)2. 泛化(Generalization)3. 實現(Realization )4. 依賴(Dependency) 2021-11-26754. 依賴(Dependency) 依賴(Dependency)是兩個事物間的語義關系,其中一個事物(稱為服務的提供者)發生變化,會影響到另一個事物(稱為客戶或服務的使用者),或向它(客戶)提供所需信息 在類與類之間應用依賴關系指明一個類使用另一個類的方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 英語(廣州卷)2025年中考考前押題最后一卷
- 環保材料在飲料設備中的應用與循環利用路徑-洞察闡釋
- 互助性養老服務在農村的可行性研究
- 醫院能源托管項目可行性研究報告
- 2025至2030年中國電串烤式烤爐行業投資前景及策略咨詢報告
- 數據驅動下的醫療資源分配優化策略
- 2025至2030年中國浴塊行業投資前景及策略咨詢報告
- 2025至2030年中國沙發坐墊帶行業投資前景及策略咨詢報告
- 2025至2030年中國毛尖染色毛皮行業投資前景及策略咨詢報告
- 2025至2030年中國染色彈力帆布行業投資前景及策略咨詢報告
- 作風建設學習教育心得體會:在深入學習中校準思想坐標持續轉變工作作風(3篇)
- 人體解剖學題庫(含答案)
- 2025年浙江省新能源投資集團股份有限公司招聘筆試參考題庫附帶答案詳解
- 傳統加油站行業痛點分析與數字化解決方案
- 法人授權委托書深圳標準版
- 2025年新高考歷史預測模擬試卷山東卷(含答案解析)
- 智創上合-專利應用與保護知到課后答案智慧樹章節測試答案2025年春青島工學院
- 2025年全國中小學校科普知識競賽題庫及答案(共80題)
- 非營利組織財務管理制度與流程
- 商業模式創新的試題與答案
- 《愛護鳥類》參考課件
評論
0/150
提交評論