




已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章UML類圖 定義類圖 為什么要建模類圖 類圖的主要標記符號 如何建模類圖 學習目標 4 1UML基本類圖 面向?qū)ο笤O(shè)計的基礎(chǔ)就是使用類 類是用來代表現(xiàn)實事務(wù)或者功能的構(gòu)造塊 在本節(jié)中 我們將要學習如何建模類及其相互之間的關(guān)系 以便在編寫代碼之前讓你對系統(tǒng)擁有全面的認識 類圖是由若干類關(guān)聯(lián)在一起 反映系統(tǒng)或者子系統(tǒng)組成結(jié)構(gòu)的靜態(tài)圖 類圖的建模貫穿工程的分析和設(shè)計階段的始終 通常從商務(wù)伙伴能夠理解的類開始建模 最終往往成為只有開發(fā)小組才能夠完全理解的類 一 類圖的組成 類圖由如下元素組成 類 Class 是具有共同結(jié)構(gòu)特征 行為特征 聯(lián)系和語義的對象集合的抽象形式 關(guān)聯(lián) Association 它表示類與類之間的關(guān)系 二 UML類圖中的符號 一 類 類 Class 在UML中通常以實線矩形框表示 矩形框中含有若干分隔框 分別包含類的名字 屬性 操作 約束以及其他成分等 如下圖所示 類的圖形表示和示例 在類圖中 根據(jù)建模的不同景象 類圖標中不一定列出全部的內(nèi)容 如在建立分析模型或設(shè)計模型時 甚至可以只列出類名 在圖中著重表達的是類與類之間的聯(lián)系 在建立實現(xiàn)模型時 則應(yīng)當在類圖標中詳細給出類的屬性和方法等細節(jié) 1 屬性 屬性 Attribute 在UML類圖標的矩形框中用文字串說明 如下圖所示 可視性 Visibility 標記表示 公共 保護 私用可視性也可以用以下關(guān)鍵字表示 public 公共 protected 保護 private 私用 若可視性標記為 或 public 則為公共屬性 可以被外部對象訪問 若可視性標記為 或 protected 則為保護屬性 可以被本類或子類的對象訪問 若可視性標記為 或 private 則為私用屬性 不可以被外部對象訪問 只能為本類的對象使用 可視性可以缺省 表示該屬性不可視 Student類 屬性類型表示 冒號 后跟屬性值的數(shù)據(jù)類型 數(shù)據(jù)類型的表示依賴于實現(xiàn)語言 如有的程序設(shè)計語言規(guī)定浮點數(shù)用保留字 Float 表示 有的則規(guī)定用保留字 Real 表示 Student類 數(shù)據(jù)類型可以是任何用戶需要的內(nèi)容 包括 來自程序設(shè)計語言如VisualBasic C C 和Java的任何標準數(shù)據(jù)類型 一個已經(jīng)定義的類 接口定義語言 InterfaceDefinitionLanguage IDL 中的數(shù)據(jù)類型列表中的數(shù)據(jù)類型 讀者在自己的系統(tǒng)建模中能夠使用的其他類型 屬性初始值設(shè)置 可以通過在屬性名稱和數(shù)據(jù)類型之后添加等于號 來為屬性指定默認值 如下圖所示 屬性多重性 多重性為可選項 它表達該類的每個實例的屬性值的個數(shù) 可以像應(yīng)用于類之間的關(guān)系中那樣把多重性應(yīng)用于屬性 例如 Student類具有屬性Grades 不希望該屬性只包含單個值 而是希望它包含該學生的所有成績 可以是任意多個 派生的屬性 另一種可以為屬性提供的信息是派生值 它可以使用數(shù)學函數(shù) 字符串函數(shù)或者將要在應(yīng)用程序中實現(xiàn)的其他商務(wù)邏輯 要想指出一個屬性是派生的 需要在屬性名之前添加一個前斜線 并且要附加一個注釋 其中包含了派生屬性值的指令 如下圖所示 2 操作 方法 操作 Operation 表示類能夠提供的功能服務(wù) 它在UML類矩形框中用文字串說明 如下圖所示 操作名指示類可提供的功能服務(wù) 它后跟圓括號中的參數(shù)列表是可選項 即一個操作可以有參數(shù) 也可以沒有參數(shù) 參數(shù)列表由逗號分隔的操作的形式參數(shù)組成 其格式為 參數(shù)名 類型 缺省值 Student類 返回列表是返回給調(diào)用者的單個變量值 它可以表示該操作程序運行的一個成功標志或者計算的值 3 類的關(guān)系 類之間可以建立四種關(guān)系 關(guān)聯(lián) 依賴 聚合和泛化 其標記如下圖所示 1 關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系是指類之間的語義聯(lián)系 關(guān)聯(lián)可以具有如下特性 關(guān)聯(lián)名稱角色名稱多重性導航性 多個類可以關(guān)聯(lián)到同一個類 多重性 多重性 mutiplicity 用來指示一個類的多少對象與另一個類的一個對象相關(guān) 可以在類關(guān)系的任何一端添加多重性 來指示出多重性 如下圖所示 多重性是一個數(shù)值或者數(shù)值范圍 用來指示一個類的幾個對象與另一個類的一個對象相關(guān) 如下圖所示 關(guān)聯(lián)的多重性 角色類關(guān)系還可以通過添加角色來進一步豐富 在類圖中使用角色可以幫助讀者理解第一個類對于第二個類的作用 角色與多重性顯示在相同的位置 在指示類之間關(guān)系線的上面或者下面 如下圖所示 下圖顯示了player類和Team類在關(guān)聯(lián)中分別扮演兩個角色 關(guān)聯(lián)的限定 關(guān)聯(lián)的限定類的關(guān)聯(lián)還可以通過限定條件來明確類之間的關(guān)系 如下圖所示 類的自反關(guān)聯(lián) 自反關(guān)聯(lián) 類具有到自身的關(guān)聯(lián) 稱為自反關(guān)聯(lián) 類的自反關(guān)聯(lián) 關(guān)聯(lián)的導航性導航性表明類的關(guān)聯(lián)方向 如下圖所示 關(guān)聯(lián)和屬性在類關(guān)聯(lián)和類屬性之間存在精密的聯(lián)系 源類和目標類之間的關(guān)聯(lián)意味著源類的對象能夠承載到目標類對象的引用 如下圖所示 關(guān)聯(lián)類OO建模的一個普遍問題是 當類之間具有多對多關(guān)系時 一些屬性不能容易地放人任何一個類中 例如 下圖所示的公司與員工的類關(guān)系 模型表達意義 每個Person對象能夠為很多Company對象工作 每個Company對象能夠雇傭很多Person對象 然而 當每個Person與雇傭它的Company間存在薪水屬性時會發(fā)生什么呢 薪水記錄在何處呢 記錄在Person類中還是在Company類中 答案是薪水實際上是關(guān)聯(lián)本身的特性 對于Person對象和Company對象之間的每個雇傭鏈接都存在特定雇傭的特定薪水 UML允許你使用關(guān)聯(lián)類來建模這種情況 如下圖所示 2 依賴關(guān)系 依賴關(guān)系是指一個類的元素使用了另一個類 依賴關(guān)系描述類之間的引用關(guān)系 3 泛化關(guān)系 泛化關(guān)系是描述類之間的繼承關(guān)系 利用泛化來表達類之間的相似性 練習 閱讀一個類圖在這個練習中 將會通過識別到目前為止學習的UML標記符來閱讀下面的類圖 如圖所示 練習步驟 1 指出建模的類 2 指出所有屬性及其顯示的數(shù)據(jù)類型 3 指出所有顯示的操作 4 指出找到的關(guān)聯(lián) 5 指出建模的角色 6 指出圖中使用的多重性 例售票系統(tǒng)的類圖 上圖中的售票系統(tǒng)類圖 它只是售票系統(tǒng)領(lǐng)域模型的一部分 圖中表示了幾個重要的類 如Customer Reservation Ticket和Performance 一個顧客可多次訂票 但每一次訂票只能由一個顧客來執(zhí)行 有兩種訂票方式 個人票或套票 前者只是一張票 后者包括多張票 每場演出都有多張票可供預定 每張票對應(yīng)一個唯一的座位號 每次演出用劇目名 日期和時間來標識 三 學習如何建模類圖創(chuàng)建類圖需要兩個反復執(zhí)行的步驟 1 確定類及其關(guān)聯(lián) 2 確定屬性和操作 開始創(chuàng)建類圖的好起點就是用例圖 如下面成績管理的用例圖所示 1 確定類和關(guān)聯(lián)首先要做的是通過分析用例圖確定類及其關(guān)聯(lián) 找到第一批類 確定它們的內(nèi)容 在用例圖中 首先確定了Grades類和ReportCard類 接下來 通過同時使用參與者名稱確定附加的類 這時將會確定Teacher類 Student類和Administrator類 下面檢查用例圖并且確定各個功能所屬的類 發(fā)布報告卡一Grades類記錄分數(shù)一Grades類更新分數(shù)一Grades類保存分數(shù)一Grades類加載分數(shù)一Grades類登錄一 查看分數(shù)一Grades類生成報告卡一ReportCard類首先發(fā)現(xiàn)的是登錄沒有所屬的類 可以添加一個Logon類來處理Logon用例 現(xiàn)在可以開始創(chuàng)建類的關(guān)聯(lián) Teacher記錄 更新 查看GradesAdministrator查看Grades 生成ReportCardsStudent查看GradesReportCards包含Grades 進一步創(chuàng)建類的關(guān)聯(lián) 增添WebSite類和Logon類 下一步通過添加多重性讓類圖的信息更加詳細 并且對類圖進行調(diào)整以便保證沒有冗余的類和關(guān)聯(lián) 2 確定屬性和操作現(xiàn)在我們已經(jīng)創(chuàng)建好了類和關(guān)聯(lián) 可以開始添加屬性和操作以便提供數(shù)據(jù)存儲和需要的功能來完成系統(tǒng)功能 在下圖中可以看到 表示參與者的類沒有顯示屬性和操作 這并不意味著它們不存在 而只是表示類圖不需要該細節(jié) 最后 為屬性和操作提供參數(shù) 數(shù)據(jù)類型和初始值 如下圖所示 練習 建模一個類圖在這個練習中 將會從用例圖建模一個類圖 讀者應(yīng)該遵循前面介紹的步驟來建模類圖支持如下面用例圖中用例 練習步驟 1 確定可以在用例圖中找到的類 2 創(chuàng)建關(guān)聯(lián)類 給出它們的關(guān)聯(lián)名詞 3 鞏固相似的類 4 確定任何合適的角色名 5 為任何已經(jīng)封裝到另一個類中的獨立功能添加類 6 添加屬性和操作以便提供類圖中需要的功能 7 為操作和屬性提供數(shù)據(jù)類型和參數(shù)等信息 公司直銷系統(tǒng)用例圖 4 2UML擴展類圖 一 聚合和組合在前面 已經(jīng)介紹過類之間的簡單關(guān)聯(lián) 知道了它們在類圖中使用連接類的單線表示 本節(jié)將介紹如何更好地限定這些關(guān)聯(lián) 其方法是以聚合或者組合的形式來定義關(guān)聯(lián) 這兩種新的關(guān)聯(lián)類型都描述了類之間的整體 部分組成關(guān)系 1 聚合聚合用來描述兩個類之間的整體 部分關(guān)系 其中一個類為整體 它由一個或者多個部分類組成 在聚合中 部分類可以沒有整體類而存在 如下圖所示 例如 CPU和顯示器都可以以獨立類的形式存在 但是當它們組成Computer類時 它們就變?yōu)檎麄€計算機的組成部分 通過提供其他的計算機部件 如鍵盤 鼠標和揚聲器來擴展該示例 如下圖所示 2 組合組合是一種特殊的聚合關(guān)聯(lián) 在組合關(guān)聯(lián)中用來組成整體類的部分類是不能獨立存在 整體類由部分類組成 部分類需要整體類才能存在 這種關(guān)系意味著銷毀整體類將會同時銷毀部分類 組合關(guān)聯(lián)使用帶有實心菱形的實線連接 如下圖所示 由于組合關(guān)聯(lián)指示的部分類是強制的 對于整體類意味著至少有一個多重性 在下面的示例中 整體類數(shù)據(jù)庫由表和查詢組成 這些關(guān)聯(lián)使用組合表示 因為如果沒有數(shù)據(jù)庫 表和查詢也不會存在 如圖所示 另一種建模組合關(guān)聯(lián)的方法稱為圖形容器 使用這種方法 整體類繪制成一個大矩形框 所有的部分類都包含在其中 如下圖所示 3 使用帶有泛化的聚合和組合聚合和組合表示的是類之間的關(guān)系 它們可以與泛化結(jié)合來進一步擴展類圖模型 如下圖所示 練習 建模聚合關(guān)聯(lián)和組合關(guān)聯(lián)在這個練習中 將會使用目前為止學習到的所有類型的關(guān)系來創(chuàng)建一個類圖 這些關(guān)系包括普通關(guān)聯(lián) 泛化 聚合和組合 讀者將會綜合運用自己的知識從需求構(gòu)造一個類圖 下面是一個制造商和維修店使用的存貨清單系統(tǒng)的需求列表 從這些信息構(gòu)造一個類圖 存貨由兩個部分組成 零件和產(chǎn)品 產(chǎn)品由兩個或者更多零件組成 系統(tǒng)可以擁有無限多個零件和產(chǎn)品 存貨中的部分零件包括調(diào)速輪 輪齒和加力燃燒室 一名倉庫保管員維護貨存 一名裝配工組裝產(chǎn)品 一名維修員維修產(chǎn)品 完成的產(chǎn)品包括1 3個標簽 Manufacturer標簽指示產(chǎn)品已經(jīng)完成 Repair標簽指示產(chǎn)品已經(jīng)檢修過 FCC標簽指示產(chǎn)品中包含加力燃燒室 二 關(guān)聯(lián)注釋本節(jié)學習如何使用約束和鑒別器來標注泛化關(guān)聯(lián) 約束用來指示泛化有一個與其相關(guān)的約束 鑒別器用來指示泛化關(guān)系對于兩個相關(guān)的類扮演什么角色 1 約束約束可以預定義或者由用戶定義 用戶定義的約束可以在系統(tǒng)中具有任何需要的意義 下面介紹幾個UML提供的預定義約束 掌握了這些預定義約束之后 讀者就可以生成自己的約束以便更好地符合自己系統(tǒng)需求 有兩種方式用來為泛化建模約束 當有兩個或者多個泛化使用相同的約束時 可以繪制虛線穿過兩個泛化 并且在花括號 中標注約束名 如果只有一個泛化 或者多個泛化共享關(guān)聯(lián)的空箭頭部分 只需在朝向空箭頭的花括號中建模約束即可 如下圖所示 第一個要介紹的約束是不完全約束 這種約束表示泛化或者子類化的類清單是不完全的 即類圖中沒有完全顯示出它們 這種約束可以讓讀者知道實際內(nèi)容不止他們在眼前類圖中所看到的 另一個類圖中可能還有 如下圖所示 第二種約束是完全約束 這種約束與不完全約束相反 表示讀者看到的是全部內(nèi)容 如下圖所示 解體約束表示在緊靠約束下面的泛化類不能子類化為通用類 重疊約束與解體約束的作用相反 重疊約束表示兩個子類可以共享相同的子類 2 鑒別器鑒別器用來說明泛化的作用 它們指示出泛化關(guān)聯(lián)中的子類應(yīng)用于相關(guān)超類時的角色 鑒別器的標記符非常簡單 在關(guān)聯(lián)的空箭頭的旁邊標注即可 如下圖所示 在下面的示例中 使用了鑒別器來表示Flywheel和Afterbumer子類是Part類的類型 如下圖所示 一個更加詳細的示例如下圖所示 其中為4個指定了重疊約束的類圖添加了鑒別器 三 端點標記符討論關(guān)聯(lián)的有序 排序和導航 有序和排序允許向讀者說明與超類相關(guān)的子類指定了特定的順序 而使用導航可以指定處理流遍歷關(guān)聯(lián)關(guān)系的方向 1 有序和排序有序約束用來說明一個類的對象以某個次序與另一個類的對象相關(guān) 這種標記符并沒有指定順序 排序約束表示類中的對象在與關(guān)聯(lián)中其他類對象相關(guān)是排序好的 可以在任何關(guān)系的底部添加有序約束和排序約束 如下圖所示 2 導航對于讀者前面看到的關(guān)聯(lián) 導航都是雙向的 可以從一個類到另一個類雙向使用關(guān)系中向用戶公開的屬性 如果你不想讓自己的系統(tǒng)或者特定的類關(guān)系以這種方式操作 可以指定單向的導航 導航使用指向被訪問類的開放箭頭表示 練習 建模類圖的多個關(guān)聯(lián)在這個練習中 將使用所有類型的關(guān)聯(lián)以及關(guān)聯(lián)注釋和端點標記符來創(chuàng)建一個類圖 綜合運用所學的知識從需求構(gòu)造一個類圖 下面是前面的貨存清單系統(tǒng)Part類的更加詳細需求清單 從這些信息構(gòu)造一個類圖 兩個或者多個Parts組裝成一個Product Product類可以訪問Part類 反之則不行 3個Parts類型 Flywheel Cog和Afterburner 不能構(gòu)成貨存清單系統(tǒng)中零件的完整清單 但是這里我們只考慮這3個零件 Flywheel有兩種不同的規(guī)格 toothflywheel和gearflywheel 它們之間沒有任何相似性 Afterburner可以分類為turbo或者hydro 這兩種類型都可以分拆為ballistic類型 ballistichydro和ballisticturbo加力燃燒室由plutoniummarbles組成 后者已經(jīng)組裝好 4 3UML類圖建模案例 例1圖書管理系統(tǒng)的類圖建模 1 圖書管理系統(tǒng)的用例圖模型如下 2 確定類和關(guān)聯(lián)首先要做的是通過分析用例圖確定類及其關(guān)聯(lián) 找到第一批類 確定它們的內(nèi)容 在用例圖中 可首先確定了如下對象類 借閱者 Borrower 類 書刊 Title 類 物理書 Book 類 借閱記錄 Loan 預定記錄 Reservation 圖書管理員 librarian 等六個類 實體類圖 3 建立類圖 用戶界面類圖 類圖 類圖 類圖 類圖 練習 對選課系統(tǒng)建模UML類圖 4 4分析模型和設(shè)計模型中的UML類圖 一 分析模型 分析模型是在系統(tǒng)需求描述 用例圖模型 的基礎(chǔ)上 對如何構(gòu)造系統(tǒng)給出的系統(tǒng)邏輯結(jié)構(gòu)描述 即把用例圖模型中的用例需求描述推進到分析模型中的如何構(gòu)造系統(tǒng)來實現(xiàn)用例功能 分析模型是系統(tǒng)構(gòu)造的概念模型 分析模型包含如下部分 分析模型的組成 1 分析包 分析包是指分析模型中使用的包 它可以包含 分析類用例實現(xiàn) 交互圖 包是UML的分組模型元素的容器 它是把UML圖形元素和圖本身組織到組中的通用機制 包可應(yīng)用在任何UML模型中 如用例圖模型 分析模型 設(shè)計模型等 包的UML標記 包的依賴 包的嵌套 包的泛化 構(gòu)架分析 角色可以通過這三種分析類協(xié)同實現(xiàn)用例的功能 2 分析類 分析類是指分析模型中使用的類 它可以包含如下形式 邊界類實體類控制類 邊界類 實體類 控制類 1 邊界類邊界類位于系統(tǒng)和外界角色的交界處 邊界類實現(xiàn)業(yè)務(wù)角色 業(yè)務(wù)員工與用例的交互 它可以是窗體類 報表類 也可以是與信用卡閱讀器 條形掃描器等設(shè)備的接口 邊界類接收角色的交互信息 有時它還承擔交互信息的轉(zhuǎn)換任務(wù) 邊界類是類的變體 2 實體類實體類負責存儲 加工信息 是對用戶最有意義的類 通常用業(yè)務(wù)領(lǐng)域的術(shù)語命名 一般利用數(shù)據(jù)庫對這種實體類建立相應(yīng)表格 實體類是業(yè)務(wù)實體的計算機描述
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州國際旅游服務(wù)合同樣本
- 商鋪租賃合同樣本:門面租賃全新范本
- 寒假臨時工雇傭合同書樣本
- 游戲品牌代言合同樣本
- 長租公寓租賃合同全文
- 新媒體廣告推廣合同模板
- 辦公室簡單裝修合同范本
- 個人貸款合同電子版模板
- 企業(yè)間的戰(zhàn)略合作框架合同范本
- 課件人物插圖小學生
- 2025年高考作文備考之二元思辨作文講解
- 語文學習任務(wù)群的解讀及設(shè)計要領(lǐng)
- 2024年山東省高考生物試卷真題(含答案解析)
- 光伏發(fā)電站項目安全技術(shù)交底資料
- 富血小板血漿(PRP)臨床實踐與病例分享課件
- 跨文化交際教程 課件 杜平 Unit 1 Cultural Awareness and Intercultural Communication-Unit 3 Nonverbal Communication
- 光伏工程施工組織設(shè)計
- 社保知識競賽考試題及答案
- 華為HCSA-Presales-IT售前認證備考試題及答案
- 2024-2030年中國纖維板行業(yè)發(fā)展趨勢與投資戰(zhàn)略研究報告
- 小學二年級上冊數(shù)學思維訓練題100道及答案解析
評論
0/150
提交評論