『这就是UML!』系列内容第11讲:包图知识社区

包是对UML中各模型元素进行组织管理的一种机制,它把概念上相似、有关联的模型元素(包括静态的和动态的)组织到一个包中,形成具有各种功能或用途的模块,并可以控制包中元素的可见性,以方便人们更好的理解复杂的系统。

包图由包之间的关系组成,通过包之间关系的描述来展现系统各个模块之间的依赖关系。

包图

它类似于操作系统中的文件夹,因此,它在UML中也使用类似的文件夹符号来表示:

在同一层级内,每个包应有一个与其它包不同的名称。包的名称有两种形式:

1,简单名称(SimpleName)

简单名称仅包含包的名称字符串,如下面的例子:

2,路径名称(PathName)

在很多情况下,包内又包含其它包,则在外围使用包内的某个包时可以使用路径名称来指明包的路径,其基本语法是:外部包名称::本包名称。下图中说明“Borrow”这个包是位于“SystemInterface”包内的:

包是一种分组机制,所以包内可以包含UML中任何元素,如类、用例、接口、组件、节点等,也可以包含其它包、用例图、协作图、时序图等。

包中的元素可见性主要包含三种:

1,公有的(public)

通过在元素前添加“+”符号来表示,则该元素对所有引入该包的元素可见。

2,私有的(private)

通过在元素前添加“-”符号来表示,则该元素只能被同一个包内的元素可见。

3,保护的(protected)

通过在元素前添加“#”符号来表示,则该元素对继承该包的包中元素可见。

下图给出了包内元素的三种可见性的表示方法:

包含元素三种可见性表示方法

上图中的三个类“classA”、"classB"和“classC”的可见性分别是公有的、私有的和保护的。

包之间的关系主要有依赖关系和泛化关系。

1,依赖关系

包之间的依赖关系是指两个包内的若干元素之间存在着依赖,依赖使用虚线箭头表示,箭头由依赖包指向被依赖的包,包之间的依赖关系可以是泛化、实现、导入等。下图表示的是两个包之间的依赖关系:

导入依赖(importdependency)是指允许一个包中的元素存取另外一个包中的元素,可以在虚线箭头上添加<>构造型来表示。导入依赖不具有传递性。

2,泛化关系

包之间的泛化关系类似于类之间的泛化关系。包之间的这种泛化关系是指其中的特殊包可以替换一般包中的元素,并可以添加新的元素,实际上包之间的泛化也是一种依赖关系。

下图是包的一些构造型,并使用不同的图形或标记来表示:

包的构造型

在上图中,从上到下,从左到右分别表示业务分析模型(BusinessAnalysisModel)、业务系统(BuesinessSystem)、业务用例分析模型(BusinessUseCaseAnalysisModel)、域包(DomainPackage)、层(Layer)和子系统(Subsystem)。根据需要可以选择包相应的构造型,能够快速识别出包的作用。

在实际建模中可以遵循以下原则:

1,重用等价原则

对于同类可重用的模型元素尽量放到一个包中,不要把可重用模型元素和不可重用的模型元素混到一个包中。

2,共同重用原则

把同一个应用要重用的多个模型元素放到同一个包中,以减少包间的依赖,提高包的独立性。

3,共同封闭原则

把可能同时修改,同时维护的模型元素放到一个包中,以便于今后维护和升级。

4,非循环依赖原则

包之间的依赖关系不要形成循环:即不要出现A依赖B,B又依赖于A的现象,或者多个包形成循环依赖。

严格来讲,包图并不是真正意义上的UML图,但在模型元素分类、模型结构和程序命名空间中扮演着重要的作用。在实际建模过程中,可以使用下面的做法来绘制包图:

1,分析系统的模型元素,把概念上或语义上相近的模型元素纳入到一个包中;

2,对包中的每个元素标识其可见性;

3,确定包与包之间的依赖关系;

4,绘制包图,并对包图进行优化。

在ProcessOn中,可以在UML图文件内创建包图,也可以在流程图中添加包图制作时涉及的图形元素来创建包图。

1,创建包

直接从编辑器左侧的图形组件区拖拽UML通用图形中的“包”元素到编辑器右侧空白区域,即可完成包的创建。

使用ProcessOn创建包

2,包的重命名

点击包图形上的“包名称”,则可以对包重新命名。

3,给包添加元素

给包添加元素

4,添加包之间的联系

绘制联系的方法是使用快捷键“L”,或者在左侧图形组件区的基础图形中拖拽“直线”元素到编辑器空白区域,或者直接从一个图形的一端移动到另一个图形上即可得到一条线条。如果添加依赖联系,则选中“依赖包”后,点击其一端后按住鼠标左键到“被依赖包”上,松开鼠标即完成了一个依赖关系的建立。

添加包之间的联系

下面给出包图的两个例子,来说明包图的具体使用方法。

第一个例子反映的是在建模过程中各模型元素的组织情况,使用包按照系统分析设计的阶段来组织各种模型。

THE END
1.UML实践详细经典教程对象图Object diagrams用来表示类的实例。他们在解释复杂关系的细小问题时(特别是递归关系时)很有用。 这个类图示一个大学的Department可以包括其他很多的Departments。 这个对象图示上面类图的实例。用了很多具体的例子。 UML中实例名带有下划线。只要意思清楚,类或实例名可以在对象图中被省略。 https://www.jianshu.com/p/0786d8f9a037
2.UML与Rose建模实用教程PDF下载Java知识分享网其中,第一部分包括软件工程与面向对象方法、UML概述、Rational Rose概述,第二部分包括UML概念模型、UML中的事物、UML中的关系、用例图、包图、类图、协作图、顺序图、状态图、组件图、活动图、部署图,第三部分包括统一软件开发过程,需求分析,系统分析,系统设计,系统实现、测试及部署,第四部分包括开发实例——博客网站...http://www.java1234.com/a/javabook/javabase/2021/0708/20430.html
1.深入理解UML类图:概念构成与应用实例什么是UML类图 UML类图是一种用于表示系统静态结构的图表,用于描述系统中的各类及其相互关系。类图展示了类的属性和方法,以及类之间的关系,例如继承、关联、依赖等。类图适用于软件开发的需求分析和设计阶段,帮助开发人员理解系统的组织结构和各类之间的相互作用。 https://blog.csdn.net/fudaihb/article/details/143786552
2.UML概述类图关系及连接线表示FreeLikeTheWind的技术博客二、UML的主要图型 用例图(Use Case Diagram) 定义:用例图主要用于描述系统的功能需求,它展示了系统中的参与者(Actor)与用例(Use Case)之间的关系。参与者可以是用户、外部系统等,用例代表系统提供的功能。 示例:以一个产品销售系统为例,参与者有“用户”和“销售员”。“用户”这个参与者可以与“购买物品”“...https://blog.51cto.com/u_16417016/12529548
3.UML包图UML图制作软件,教程和例子使用免费的模板和实例绘制UML包图。绘制UML包图变得前所未有的容易。 包图是在 UML 中用类似于文件夹的符号表示的模型元素的组合。系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中。使用包图可以将相关元素归入一个系统。一个包中可包含附属包、图表或单个元素。包图用来反映组织中的包和元素。包图...https://www.edrawsoft.com/cn/uml-package-diagram-solutions.php
4.UML基础案例与应用(第三版)施穆勒著中文PDF版[21M]电子书下...第一部分“基础知识”包括第1章到第15章,主要是介绍UML语言的基础知识以及面向对象的概念和思想,还简单介绍了UML在开发过程的应用方法。第二部分“学习案例”包括第16章到第22章,结合实例详细分析了UML的应用方法与技巧,还介绍了UML在热点领域设计模式中的应用。第三部分“高级应用”包括最后两章,先是运用UML来...https://www.jb51.net/books/61659.html
5.干货!14种uml图类型及示例uml包图 (14)剖面图 配置文件图不是典型的 UML 图类型。事实上,它可以更多地被视为一种可扩展性机制,而不是像其他任何图表类型一样。 通过使用构造型、标记值和约束,可以扩展和自定义现有的 UML 符号。剖面图就像一种语言,如果你说英语,你可以创建新的句子,如果你说剖面图,那么你可以为 UML 图创建新的属性和...https://boardmix.cn/article/uml-diagram-styles/
6.UML实践用例图顺序图状态图类图包图协作图一、状态图 类定义的是一组对象的抽象,而每个对象时类的一个实例,但对于一个对象而言,它在其整个生命周期中有一系列的状态。状态描绘了对象的动态生命周期。 “人” 就是一个类,而“你”、“我”、“张三&rdq...UML—【状态图】 【内容】 1.什么是状态图 状态图描述一个特定对象的所有可能状态以及由于...https://www.pianshen.com/article/347981466/
7.starUML·Issue#85·WangShuXian6/blog·GitHub在UML标准中增加了模板(Stereotypes)、职责(Responsibilities)、扩展机制(Extensibility Mechanisms)、线程(Threads)、过程(Processes)、分布式(Distribution)、并发(Concurrency)、模式(Patterns)、合作(Collaborations)、活动图(Activity Diagram)等新概念,并清晰地区分了类型(Type)、类(Class)和实例(Instance)、细化(Refinement...https://github.com/WangShuXian6/blog/issues/85
8.UML方法(精选十篇)(2)详细设计就是要细化包的内容,清晰描述所有的类,同时使用UML的动态模型描述在特定环境下这些类的实例的行为。 4 UMl面向对象分析设计在仓储管理系统中的应用 UML是一种建模语言,是系统开发的一个组成部分,本身并没有关于开发过程概念的定义和表示符号。UML的创始者Booch、Jacobson和Rumbaugh在Rational公司的支持下综...https://www.360wenmi.com/f/cnkeyf1m62t7.html
9.UML——包图[通俗易懂]腾讯云开发者社区包是用于分组的符号,常用来对一组相同的UML元素进行分组存放和管理,包图就是用来描述包及其关系的图,我们常用包图来描述系统、子系统的宏观组成和结构。这么官方的语言大家可能不太理解,其实包图就类似于文件夹,一个程序往往包含了很多元素,所以我们可以将这些类按照一定标准划分,将具有相似功能的一组元素放在一个包中...https://cloud.tencent.com/developer/article/2069215
10.UML图表工具MicrosoftVisioUML 对象图代表了更抽象的类样式的具体实例。软件开发人员使用对象图来验证他们最初的系统结构在添加了额外的特性后是否仍然成立。 包图 UML 包图将模型图组织成相关对象的组(或包)。这使得程序员能够展示大型组件组之间的关系。 剖面图 UML 剖面图不是一种传统的图表类型,而是一种用于为 UML 图表创建新语义的机制...https://www.microsoft.com/zh-cn/microsoft-365/visio/uml
11.创建UML包图表在Visio 2007 中:在 "文件" 菜单上,指向 "新建",指向 "软件",然后单击 "UML 模型图"。 在" 树视图 中,右键单击要用作其他程序包的容器的 包 ,指向"新建",然后单击"静态结构图"。 此时将显示一个空白页,并且 "UML 静态结构" 模具将成为最顶部的模具。 工作区将 "静态结构" 显示为水印。 树视图中将...https://support.office.com/zh-cn/article/%E5%88%9B%E5%BB%BA-uml-%E5%8C%85%E5%9B%BE%E8%A1%A8-3c3f35ba-813a-4141-b09f-553f4e7b8ec3