UML建模圖文詳解教程05——包圖


版權聲明

  • 本文原創作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl
  • 本文參考資料:《UML面向對象分析、建模與設計(第2版)》呂云翔,趙天宇 著

在這里插入圖片描述

包圖概述

包圖(package diagram)是用來描述模型中的包和所包含元素的組織方式的圖,是維護和控制系統總體結構的重要內容。包圖通過對圖中的各個包元素以及包之間關系的描述展示出系統的模塊以及模塊之間的依賴關系。

包圖能夠組織許多 UML 中的元素,其最常見的用途是用來組織用例圖和類圖。

核心知識點

請務必熟悉并掌握以下核心知識點。

包圖中的主要組成元素包括包以及包的依賴關系。

包的概念

包(package)是用于把模型本身組織成層次結構的通用機制,它不能執行。包是一個組織模型的組塊,是一種將設計元素分組組織的通用機制。包在圖形上被表示為一個文件夾的形狀,即一個大矩形的左上角附有一個小矩形,圖形上顯示有包名另外,也可以將包所包含的元素顯示在上面。

在這里插入圖片描述

包名

每個包都必須有一個與其他包相區別的名稱。

包中的元素

包本身是一個容器,可以擁有很多元素,這些元素被稱作該包的內部元素。包中可以容納各種高級的模型元素,如類和類的關系、狀態機、用例圖、交互、協作等,甚至是一個完整的 UML圖。

包的依賴關系

包元素之間最常見的關系就是依賴關系。包之間的依賴關系實際上是從一個更高的層次來描述包內某些元素之間的依賴關系。也就是說,如果不同包中任何元素之間存在著一個依賴,則兩個包之間就存在著依賴關系。

包的依賴關系表示為一條帶箭頭的虛線。

在這里插入圖片描述

包的引入

包的依賴關系同樣可以通過添加構造型來使其語義更加明確。最常見的包依賴關系的構造型就是引入,表示為<< import >>。引入指的是允許一個包(客戶包)中的元素可以自由訪問另一個包(提供者包)中的公有元素。引人是單向的,其表示法的箭頭從引入方指向輸出方。在引入的過程中,客戶包把提供者包的包名添加到自己的命名空間中,從而使客戶包中可以使用引入元素的簡單名來引用該元素。

例如,訂單Ordering引入了產品Products包和價格Pricing包。Ordering是客戶包,Products和Pricing是提供者。

在這里插入圖片描述

航空購票系統包圖

在此,繼續使用航空購票系統演示包圖的繪制方法。

用例圖現狀

目前,在航空購票系統中用例圖如下:

在這里插入圖片描述

元素分包

請選中用例圖,然后選擇添加包;圖示如下:

在這里插入圖片描述
點擊確定后,圖示如下:

在這里插入圖片描述
請將所有參與者拖動至Actors包中;圖示如下:

在這里插入圖片描述
類似地,建立登錄注冊包并將登錄用例和注冊用例拖動至該包中;圖示如下:

在這里插入圖片描述

類似地,建立核心業務包并將查看行程用例、查詢航班用例、購買機票用例、退訂機票用例拖動至該包中;圖示如下:

在這里插入圖片描述
類似地,建立后臺操作包并將設定航班安排用例拖動至該包中;圖示如下:

在這里插入圖片描述
類似地,建立信用評價包并將修改信用等級用例、檢查信用等級用例拖動至該包中;圖示如下:

在這里插入圖片描述

最后我們做一個小調整,將Actors包下的用例圖拖出,放至用例圖下;圖示如下:

在這里插入圖片描述

至此,完成了元素分包工作。

創建包圖

在用例圖文件夾上右鍵選擇添加圖再選擇UML Structural并選擇Package;圖示如下:

在這里插入圖片描述

點擊確定后,圖示如下:

在這里插入圖片描述
請將拖動各個包至繪圖區,松開鼠標時請選擇包元素;圖示如下:

在這里插入圖片描述

添加包中的關系

對于創建好的包圖,可依據實際情況添加依賴和引入關系。利用Class Relationships 中的Associate添加關系,并在松開鼠標時選擇Import;圖示如下:

在這里插入圖片描述

至此,完成了航空購票系統包圖的繪制。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165659.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165659.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165659.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一個最簡單的工業通訊數據分析例子

1.背景 對工業設備的通訊協議進行分析可以幫助我們更好地理解其工作原理和相關技術&#xff0c;并且有助于以下幾個方面&#xff1a; 1. 優化工業設備的通訊效率&#xff1a;了解通訊協議的細節可以幫助我們找到通訊效率低下的原因并進行優化&#xff0c;提高設備的通訊效率和…

Axioss筆記

一、Get請求 // 請求頭攜帶參數&#xff0c;案例&#xff1a;?uid1001 axios.get(http://localhost:8080/user/api/v1/user/query, {params: {uid: 1001}}).then(res > {console.log(res.data) }).catch(err > {console.log("請求錯誤" err) }).finally(() …

MySQL 8 配置文件詳解與最佳實踐

MySQL 8 是一款強大的關系型數據庫管理系統&#xff0c;通過適當的配置文件設置&#xff0c;可以充分發揮其性能潛力。在這篇博客中&#xff0c;我們將深入探究 MySQL 8 常用的配置文件&#xff0c;并提供一些建議&#xff0c;幫助您優化數據庫性能。 配置文件概覽 在 MySQL …

【華為OD題庫-030】阿里巴巴找黃金寶箱(V)-java

題目 一貧如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;無意中發現了強盜集團的藏寶地&#xff0c;藏寶地有編號從0-N的箱子&#xff0c;每個箱子上面貼有一個數字.阿里巴巴念出一個咒語數字k(k<N),找出連續k個寶箱數字和的最大值&#xff0c;并輸出該最大值。 輸入描述 第…

攔截器的使用

攔截器&#xff08;Interceptor&#xff09;是一種在應用程序中用于干預、修改或攔截請求和響應的組件&#xff0c;是AOP 編程的一種實踐&#xff0c;和過濾器一樣都是一種具體的AOP實現。它可以在請求被發送到目標處理程序之前或之后&#xff0c;對請求進行預處理或對響應進行…

【數據結構】二叉樹概念 | 滿二叉樹 | 完全二叉樹

二叉樹的概念 二叉樹在實踐中用的很多。 一棵二叉樹是結點的一個有限集合&#xff0c;該集合&#xff1a; 或者為空&#xff1b;由一個根結點加上兩棵別稱為左子樹和右子樹的二叉樹組成。二叉樹最多兩個孩子。 這里注意&#xff1a;二叉樹并不是度為2的樹。 二叉樹的度最大值是…

Go lumberjack 日志輪換和管理

在開發應用程序時&#xff0c;記錄日志是一項關鍵的任務&#xff0c;以便在應用程序運行時追蹤問題、監視性能和保留審計記錄。Go 語言提供了靈活且強大的日志記錄功能&#xff0c;可以通過多種方式配置和使用。其中一個常用的日志記錄庫是 github.com/natefinch/lumberjack&am…

python selenium 模擬瀏覽器自動操作搶購腳本

每逢秒殺&#xff0c;都在遺憾網速和手速慢沒能搶購到商品吧。 手寫一個腳本&#xff0c;讓程序幫你搶&#xff0c;搶到的概率會大大提升。 廢話不多說&#xff0c;直接上代碼。 本實例以華為官網搶購手機為例 """ 模擬瀏覽器操作華為官網(1) 【只需要安裝一…

【JAVA】我們該如何規避代碼中可能出現的錯誤?(二)

個人主頁&#xff1a;【&#x1f60a;個人主頁】 系列專欄&#xff1a;【??初識JAVA】 文章目錄 前言異常方法&#xff08;Throwable類&#xff09;Throwable類的方法 捕獲異常多重捕獲塊 前言 異常是程序中的一些錯誤&#xff0c;但并不是所有的錯誤都是異常&#xff0c;并…

git-3

1.如何讓工作區的文件恢復為和暫存區一樣&#xff1f; 工作區所作的變更還不及暫存區的變更好&#xff0c;想從暫存區拷貝到工作區&#xff0c;變更工作區(恢復成和暫存區一樣的狀態)&#xff0c;想到用git checkout -- 文件名 2.怎樣取消暫存區部分文件的更改&#xff1f; 如…

無損壓縮技巧:減小PDF文件尺寸的有效方法

我們在制作pdf文檔的時候&#xff0c;會加入許多內容&#xff0c;文字、圖片等等&#xff0c;素材添加的過多之后就會導致pdf文檔特別大&#xff0c;在上傳或者儲存時&#xff0c;就會特別不方便&#xff0c;所以今天就告訴大家一個pdf壓縮的方法&#xff0c;使用pdf在線壓縮工…

4-Docker命令之docker info

后續為大家逐個講解一下docker常用命令及其相關用法。docker常用命令查看如下: [root@centos79 ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec…

洛谷 P1883 函數

P1883 函數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) Error Curves - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 這兩題是一模一樣的&#xff0c;過一題水兩題。 分析 主要難點在于證明F(x)是一個單峰函數可以被三分&#xff0c;但是我隨便畫了幾個f(x)之后發現好像…

MySQL的Redo Log跟Binlog

文章目錄 概要Redo Log日志Redo Log的作用Redo Log的寫入機制 Binlog日志Binlog的作用Binlog寫入機制 兩段提交 概要 Redo Log和Binlog是MySQL日志系統中非常重要的兩種機制&#xff0c;也有很多相似之處&#xff0c;本文主要介紹兩者細節和區別。 Redo Log日志 Redo Log的作…

Docker+ Jenkins+Maven+git自動化部署

環境&#xff1a;Centos7 JDK1.8 Maven3.3.9 Git 2.40 Docker 20.10.17 準備工作&#xff1a; 安裝Docker Centos7默認的yum安裝的docker是1.13&#xff0c;版本太低&#xff0c;很多鏡像都要Docker版本要求&#xff0c;升級Docker版本。 卸載已安裝Docker: yum …

你知道如何實現游戲中的透視效果嗎?

引言 游戲中的透視效果可以合理運用CtrlCV實現。 不知道大家有沒有這樣一段經歷&#xff1a;在做Cocos項目時需要一些特定的Shader去做一些特定的效果&#xff0c;例如透視、高光、濾鏡等等&#xff0c;想自己寫吧&#xff0c;不怎么會啊&#xff0c;網上又找不到&#xff0c…

27 - 如何使用設計模式優化并發編程?

在我們使用多線程編程時&#xff0c;很多時候需要根據業務場景設計一套業務功能。其實&#xff0c;在多線程編程中&#xff0c;本身就存在很多成熟的功能設計模式&#xff0c;學好它們&#xff0c;用好它們&#xff0c;那就是如虎添翼了。今天我就帶你了解幾種并發編程中常用的…

redis-cluster集群(目的:高可用)

1、特點 集群由多個node節點組成&#xff0c;redis數據分布在這些節點中&#xff0c;在集群中分為主節點和從節點&#xff0c;一個主對應一個從&#xff0c;所有組的主從形成一個集群&#xff0c;每組的數據是獨立的&#xff0c;并且集群自帶哨兵模式 2、工作原理 集群模式中…

【ZedBoard學習實例1】 VGA顯示彩條

ZedBoard學習實例1 VGA顯示彩條 ZedBoard學習實例1 VGA顯示彩條參考文章改進 ZedBoard學習實例1 VGA顯示彩條 參考文章 彩條控制verilog代碼 主體參考了該文章的代碼&#xff0c;文中還介紹了相關的電路圖&#xff0c;還有ZedBoard的手冊內容。19201080分辨率顯示器的參數 針…

重生之我是一名程序員 37 ——C語言中的棧溢出問題

哈嘍啊大家晚上好&#xff01; 今天呢給大家帶來一個燒腦的知識——C語言中的棧溢出問題。那什么是棧溢出呢&#xff1f;棧溢出指的是當程序在執行函數調用時&#xff0c;為了保護函數的局部變量和返回地址&#xff0c;將這些數據存儲在棧中。如果函數在函數調用時使用了過多的…