UML類圖詳細教程.ppt_第1頁
UML類圖詳細教程.ppt_第2頁
UML類圖詳細教程.ppt_第3頁
UML類圖詳細教程.ppt_第4頁
UML類圖詳細教程.ppt_第5頁
已閱讀5頁,還剩104頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第4章UML類圖 定義類圖 為什么要建模類圖 類圖的主要標記符號 如何建模類圖 學習目標 4 1UML基本類圖 面向對象設計的基礎就是使用類 類是用來代表現實事務或者功能的構造塊 在本節中 我們將要學習如何建模類及其相互之間的關系 以便在編寫代碼之前讓你對系統擁有全面的認識 類圖是由若干類關聯在一起 反映系統或者子系統組成結構的靜態圖 類圖的建模貫穿工程的分析和設計階段的始終 通常從商務伙伴能夠理解的類開始建模 最終往往成為只有開發小組才能夠完全理解的類 一 類圖的組成 類圖由如下元素組成 類 Class 是具有共同結構特征 行為特征 聯系和語義的對象集合的抽象形式 關聯 Association 它表示類與類之間的關系 二 UML類圖中的符號 一 類 類 Class 在UML中通常以實線矩形框表示 矩形框中含有若干分隔框 分別包含類的名字 屬性 操作 約束以及其他成分等 如下圖所示 類的圖形表示和示例 在類圖中 根據建模的不同景象 類圖標中不一定列出全部的內容 如在建立分析模型或設計模型時 甚至可以只列出類名 在圖中著重表達的是類與類之間的聯系 在建立實現模型時 則應當在類圖標中詳細給出類的屬性和方法等細節 1 屬性 屬性 Attribute 在UML類圖標的矩形框中用文字串說明 如下圖所示 可視性 Visibility 標記表示 公共 保護 私用可視性也可以用以下關鍵字表示 public 公共 protected 保護 private 私用 若可視性標記為 或 public 則為公共屬性 可以被外部對象訪問 若可視性標記為 或 protected 則為保護屬性 可以被本類或子類的對象訪問 若可視性標記為 或 private 則為私用屬性 不可以被外部對象訪問 只能為本類的對象使用 可視性可以缺省 表示該屬性不可視 Student類 屬性類型表示 冒號 后跟屬性值的數據類型 數據類型的表示依賴于實現語言 如有的程序設計語言規定浮點數用保留字 Float 表示 有的則規定用保留字 Real 表示 Student類 數據類型可以是任何用戶需要的內容 包括 來自程序設計語言如VisualBasic C C 和Java的任何標準數據類型 一個已經定義的類 接口定義語言 InterfaceDefinitionLanguage IDL 中的數據類型列表中的數據類型 讀者在自己的系統建模中能夠使用的其他類型 屬性初始值設置 可以通過在屬性名稱和數據類型之后添加等于號 來為屬性指定默認值 如下圖所示 屬性多重性 多重性為可選項 它表達該類的每個實例的屬性值的個數 可以像應用于類之間的關系中那樣把多重性應用于屬性 例如 Student類具有屬性Grades 不希望該屬性只包含單個值 而是希望它包含該學生的所有成績 可以是任意多個 派生的屬性 另一種可以為屬性提供的信息是派生值 它可以使用數學函數 字符串函數或者將要在應用程序中實現的其他商務邏輯 要想指出一個屬性是派生的 需要在屬性名之前添加一個前斜線 并且要附加一個注釋 其中包含了派生屬性值的指令 如下圖所示 2 操作 方法 操作 Operation 表示類能夠提供的功能服務 它在UML類矩形框中用文字串說明 如下圖所示 操作名指示類可提供的功能服務 它后跟圓括號中的參數列表是可選項 即一個操作可以有參數 也可以沒有參數 參數列表由逗號分隔的操作的形式參數組成 其格式為 參數名 類型 缺省值 Student類 返回列表是返回給調用者的單個變量值 它可以表示該操作程序運行的一個成功標志或者計算的值 3 類的關系 類之間可以建立四種關系 關聯 依賴 聚合和泛化 其標記如下圖所示 1 關聯關系關聯關系是指類之間的語義聯系 關聯可以具有如下特性 關聯名稱角色名稱多重性導航性 多個類可以關聯到同一個類 多重性 多重性 mutiplicity 用來指示一個類的多少對象與另一個類的一個對象相關 可以在類關系的任何一端添加多重性 來指示出多重性 如下圖所示 多重性是一個數值或者數值范圍 用來指示一個類的幾個對象與另一個類的一個對象相關 如下圖所示 關聯的多重性 角色類關系還可以通過添加角色來進一步豐富 在類圖中使用角色可以幫助讀者理解第一個類對于第二個類的作用 角色與多重性顯示在相同的位置 在指示類之間關系線的上面或者下面 如下圖所示 下圖顯示了player類和Team類在關聯中分別扮演兩個角色 關聯的限定 關聯的限定類的關聯還可以通過限定條件來明確類之間的關系 如下圖所示 類的自反關聯 自反關聯 類具有到自身的關聯 稱為自反關聯 類的自反關聯 關聯的導航性導航性表明類的關聯方向 如下圖所示 關聯和屬性在類關聯和類屬性之間存在精密的聯系 源類和目標類之間的關聯意味著源類的對象能夠承載到目標類對象的引用 如下圖所示 關聯類OO建模的一個普遍問題是 當類之間具有多對多關系時 一些屬性不能容易地放人任何一個類中 例如 下圖所示的公司與員工的類關系 模型表達意義 每個Person對象能夠為很多Company對象工作 每個Company對象能夠雇傭很多Person對象 然而 當每個Person與雇傭它的Company間存在薪水屬性時會發生什么呢 薪水記錄在何處呢 記錄在Person類中還是在Company類中 答案是薪水實際上是關聯本身的特性 對于Person對象和Company對象之間的每個雇傭鏈接都存在特定雇傭的特定薪水 UML允許你使用關聯類來建模這種情況 如下圖所示 2 依賴關系 依賴關系是指一個類的元素使用了另一個類 依賴關系描述類之間的引用關系 3 泛化關系 泛化關系是描述類之間的繼承關系 利用泛化來表達類之間的相似性 練習 閱讀一個類圖在這個練習中 將會通過識別到目前為止學習的UML標記符來閱讀下面的類圖 如圖所示 練習步驟 1 指出建模的類 2 指出所有屬性及其顯示的數據類型 3 指出所有顯示的操作 4 指出找到的關聯 5 指出建模的角色 6 指出圖中使用的多重性 例售票系統的類圖 上圖中的售票系統類圖 它只是售票系統領域模型的一部分 圖中表示了幾個重要的類 如Customer Reservation Ticket和Performance 一個顧客可多次訂票 但每一次訂票只能由一個顧客來執行 有兩種訂票方式 個人票或套票 前者只是一張票 后者包括多張票 每場演出都有多張票可供預定 每張票對應一個唯一的座位號 每次演出用劇目名 日期和時間來標識 三 學習如何建模類圖創建類圖需要兩個反復執行的步驟 1 確定類及其關聯 2 確定屬性和操作 開始創建類圖的好起點就是用例圖 如下面成績管理的用例圖所示 1 確定類和關聯首先要做的是通過分析用例圖確定類及其關聯 找到第一批類 確定它們的內容 在用例圖中 首先確定了Grades類和ReportCard類 接下來 通過同時使用參與者名稱確定附加的類 這時將會確定Teacher類 Student類和Administrator類 下面檢查用例圖并且確定各個功能所屬的類 發布報告卡一Grades類記錄分數一Grades類更新分數一Grades類保存分數一Grades類加載分數一Grades類登錄一 查看分數一Grades類生成報告卡一ReportCard類首先發現的是登錄沒有所屬的類 可以添加一個Logon類來處理Logon用例 現在可以開始創建類的關聯 Teacher記錄 更新 查看GradesAdministrator查看Grades 生成ReportCardsStudent查看GradesReportCards包含Grades 進一步創建類的關聯 增添WebSite類和Logon類 下一步通過添加多重性讓類圖的信息更加詳細 并且對類圖進行調整以便保證沒有冗余的類和關聯 2 確定屬性和操作現在我們已經創建好了類和關聯 可以開始添加屬性和操作以便提供數據存儲和需要的功能來完成系統功能 在下圖中可以看到 表示參與者的類沒有顯示屬性和操作 這并不意味著它們不存在 而只是表示類圖不需要該細節 最后 為屬性和操作提供參數 數據類型和初始值 如下圖所示 練習 建模一個類圖在這個練習中 將會從用例圖建模一個類圖 讀者應該遵循前面介紹的步驟來建模類圖支持如下面用例圖中用例 練習步驟 1 確定可以在用例圖中找到的類 2 創建關聯類 給出它們的關聯名詞 3 鞏固相似的類 4 確定任何合適的角色名 5 為任何已經封裝到另一個類中的獨立功能添加類 6 添加屬性和操作以便提供類圖中需要的功能 7 為操作和屬性提供數據類型和參數等信息 公司直銷系統用例圖 4 2UML擴展類圖 一 聚合和組合在前面 已經介紹過類之間的簡單關聯 知道了它們在類圖中使用連接類的單線表示 本節將介紹如何更好地限定這些關聯 其方法是以聚合或者組合的形式來定義關聯 這兩種新的關聯類型都描述了類之間的整體 部分組成關系 1 聚合聚合用來描述兩個類之間的整體 部分關系 其中一個類為整體 它由一個或者多個部分類組成 在聚合中 部分類可以沒有整體類而存在 如下圖所示 例如 CPU和顯示器都可以以獨立類的形式存在 但是當它們組成Computer類時 它們就變為整個計算機的組成部分 通過提供其他的計算機部件 如鍵盤 鼠標和揚聲器來擴展該示例 如下圖所示 2 組合組合是一種特殊的聚合關聯 在組合關聯中用來組成整體類的部分類是不能獨立存在 整體類由部分類組成 部分類需要整體類才能存在 這種關系意味著銷毀整體類將會同時銷毀部分類 組合關聯使用帶有實心菱形的實線連接 如下圖所示 由于組合關聯指示的部分類是強制的 對于整體類意味著至少有一個多重性 在下面的示例中 整體類數據庫由表和查詢組成 這些關聯使用組合表示 因為如果沒有數據庫 表和查詢也不會存在 如圖所示 另一種建模組合關聯的方法稱為圖形容器 使用這種方法 整體類繪制成一個大矩形框 所有的部分類都包含在其中 如下圖所示 3 使用帶有泛化的聚合和組合聚合和組合表示的是類之間的關系 它們可以與泛化結合來進一步擴展類圖模型 如下圖所示 練習 建模聚合關聯和組合關聯在這個練習中 將會使用目前為止學習到的所有類型的關系來創建一個類圖 這些關系包括普通關聯 泛化 聚合和組合 讀者將會綜合運用自己的知識從需求構造一個類圖 下面是一個制造商和維修店使用的存貨清單系統的需求列表 從這些信息構造一個類圖 存貨由兩個部分組成 零件和產品 產品由兩個或者更多零件組成 系統可以擁有無限多個零件和產品 存貨中的部分零件包括調速輪 輪齒和加力燃燒室 一名倉庫保管員維護貨存 一名裝配工組裝產品 一名維修員維修產品 完成的產品包括1 3個標簽 Manufacturer標簽指示產品已經完成 Repair標簽指示產品已經檢修過 FCC標簽指示產品中包含加力燃燒室 二 關聯注釋本節學習如何使用約束和鑒別器來標注泛化關聯 約束用來指示泛化有一個與其相關的約束 鑒別器用來指示泛化關系對于兩個相關的類扮演什么角色 1 約束約束可以預定義或者由用戶定義 用戶定義的約束可以在系統中具有任何需要的意義 下面介紹幾個UML提供的預定義約束 掌握了這些預定義約束之后 讀者就可以生成自己的約束以便更好地符合自己系統需求 有兩種方式用來為泛化建模約束 當有兩個或者多個泛化使用相同的約束時 可以繪制虛線穿過兩個泛化 并且在花括號 中標注約束名 如果只有一個泛化 或者多個泛化共享關聯的空箭頭部分 只需在朝向空箭頭的花括號中建模約束即可 如下圖所示 第一個要介紹的約束是不完全約束 這種約束表示泛化或者子類化的類清單是不完全的 即類圖中沒有完全顯示出它們 這種約束可以讓讀者知道實際內容不止他們在眼前類圖中所看到的 另一個類圖中可能還有 如下圖所示 第二種約束是完全約束 這種約束與不完全約束相反 表示讀者看到的是全部內容 如下圖所示 解體約束表示在緊靠約束下面的泛化類不能子類化為通用類 重疊約束與解體約束的作用相反 重疊約束表示兩個子類可以共享相同的子類 2 鑒別器鑒別器用來說明泛化的作用 它們指示出泛化關聯中的子類應用于相關超類時的角色 鑒別器的標記符非常簡單 在關聯的空箭頭的旁邊標注即可 如下圖所示 在下面的示例中 使用了鑒別器來表示Flywheel和Afterbumer子類是Part類的類型 如下圖所示 一個更加詳細的示例如下圖所示 其中為4個指定了重疊約束的類圖添加了鑒別器 三 端點標記符討論關聯的有序 排序和導航 有序和排序允許向讀者說明與超類相關的子類指定了特定的順序 而使用導航可以指定處理流遍歷關聯關系的方向 1 有序和排序有序約束用來說明一個類的對象以某個次序與另一個類的對象相關 這種標記符并沒有指定順序 排序約束表示類中的對象在與關聯中其他類對象相關是排序好的 可以在任何關系的底部添加有序約束和排序約束 如下圖所示 2 導航對于讀者前面看到的關聯 導航都是雙向的 可以從一個類到另一個類雙向使用關系中向用戶公開的屬性 如果你不想讓自己的系統或者特定的類關系以這種方式操作 可以指定單向的導航 導航使用指向被訪問類的開放箭頭表示 練習 建模類圖的多個關聯在這個練習中 將使用所有類型的關聯以及關聯注釋和端點標記符來創建一個類圖 綜合運用所學的知識從需求構造一個類圖 下面是前面的貨存清單系統Part類的更加詳細需求清單 從這些信息構造一個類圖 兩個或者多個Parts組裝成一個Product Product類可以訪問Part類 反之則不行 3個Parts類型 Flywheel Cog和Afterburner 不能構成貨存清單系統中零件的完整清單 但是這里我們只考慮這3個零件 Flywheel有兩種不同的規格 toothflywheel和gearflywheel 它們之間沒有任何相似性 Afterburner可以分類為turbo或者hydro 這兩種類型都可以分拆為ballistic類型 ballistichydro和ballisticturbo加力燃燒室由plutoniummarbles組成 后者已經組裝好 4 3UML類圖建模案例 例1圖書管理系統的類圖建模 1 圖書管理系統的用例圖模型如下 2 確定類和關聯首先要做的是通過分析用例圖確定類及其關聯 找到第一批類 確定它們的內容 在用例圖中 可首先確定了如下對象類 借閱者 Borrower 類 書刊 Title 類 物理書 Book 類 借閱記錄 Loan 預定記錄 Reservation 圖書管理員 librarian 等六個類 實體類圖 3 建立類圖 用戶界面類圖 類圖 類圖 類圖 類圖 練習 對選課系統建模UML類圖 4 4分析模型和設計模型中的UML類圖 一 分析模型 分析模型是在系統需求描述 用例圖模型 的基礎上 對如何構造系統給出的系統邏輯結構描述 即把用例圖模型中的用例需求描述推進到分析模型中的如何構造系統來實現用例功能 分析模型是系統構造的概念模型 分析模型包含如下部分 分析模型的組成 1 分析包 分析包是指分析模型中使用的包 它可以包含 分析類用例實現 交互圖 包是UML的分組模型元素的容器 它是把UML圖形元素和圖本身組織到組中的通用機制 包可應用在任何UML模型中 如用例圖模型 分析模型 設計模型等 包的UML標記 包的依賴 包的嵌套 包的泛化 構架分析 角色可以通過這三種分析類協同實現用例的功能 2 分析類 分析類是指分析模型中使用的類 它可以包含如下形式 邊界類實體類控制類 邊界類 實體類 控制類 1 邊界類邊界類位于系統和外界角色的交界處 邊界類實現業務角色 業務員工與用例的交互 它可以是窗體類 報表類 也可以是與信用卡閱讀器 條形掃描器等設備的接口 邊界類接收角色的交互信息 有時它還承擔交互信息的轉換任務 邊界類是類的變體 2 實體類實體類負責存儲 加工信息 是對用戶最有意義的類 通常用業務領域的術語命名 一般利用數據庫對這種實體類建立相應表格 實體類是業務實體的計算機描述

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論