相信大家都知道UML的全称,统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
我想问大家两个问题:
一、什么是模型?模型是对现实世界的形状或状态的抽象模拟和简化。
二、为什么要建模?最简单的理由:为了能够更好地理解正在开发的系统。通过建模,可以达到四个目的:
1、有助于按照需求对系统进行可视化的分析
2、能够系统的结构或行为
3、给出了知道构造系统的模板
4、对做出的决策进行文档化
本文是我们主要介绍UML的七种视图,所谓一张图胜于千言万语,我们就用图来介绍UML的视图:
第一张图:总体的给大家一个影响,UML的七种视图。
第二章图;详细的讲解每个视图。
UML的七种视图各有各自的特点,各自有各自的作用。只有正确的认识七种视图才能对UML的九种图进行更加详细、深入的学习。UML的九种图是七种视图的具体表现形式。下一篇文章重点讲解UML的九种图,感谢大家及时关注。
上文我们介绍了,UML的视图,在每一种视图中都包含一个或多种图。本文我们重点讲解UML每种图的细节问题:
1、用例图(use case diagrams)
-
【概念】描述用户需求,从用户的角度描述系统的功能
【描述方式】椭圆表示某个用例;人形符号表示角色
【目的】帮组开发团队以一种可视化的方式理解系统的功能需求
【用例图】
2、静态图
- 类图(class diagrams)
【概念】显示系统的静态结构,表示不同的实体是如何相关联的
【描述方式】三个矩形
【目的】表示一个逻辑类或实现类,逻辑类通常是用户的业务所涉及的事物;实现类是程序员处理的实体
【类图】
- 对象图(object diagrams)
【概念】类图的一个实例,描述系统在具体时间点上所包含的对象以及各个对象的关系
【对象图】
3、交互图
用来描述对象之间的交互关系
- 序列图(顺序图)
【概念】描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序
【描述方式】横跨图的顶部,每个框表示每个类的实例或对象;类实例名称和类名称使用冒号分开
【目的】显示流程中不同对象之间的调用关系,还可以显示不同对象的不同调用。
【序列图】
- 协作图(Collaboration diagrams)
【概念】描述对象之间的合作关系,侧重对象之间的消息传递
4、行为图:描述系统的动态模型和对象之间的交互关系
1.状态图(Statechart diagrams)
-
【概念】描述对象的所有状态以及事件发生而引起的状态之间的转移
【描述方式】
- 起始点:实心圆
- 状态之间的转换:使用开箭头的线段
- 状态:圆角矩形
- 判断点:空心圆
- 一个或多个终止点:内部包含实心圆的圆
【目的】表示某个类所处的不同状态以及该类在这些状态中的转换过程
2.活动图(Activity diagrams)
【概念】描述满足用例要求所要进行的活动以及活动时间的约束关系
【描述方式】
- 起始点:实心圆
- 活动:圆角矩形
- 终止点:内部包含实心圆的圆
- 泳道:实际执行活动的对象
【目的】表示两个或多个对象之间在处理某个活动时的过程控制流程
【活动图】
活动图和状态图区别:
5、实现图
- 构件图(Component diagrams)
【概念】描述代码构件的物理结构以及各构件之间的依赖关系
【描述方式】构件
【目的】提供系统的物理视图,根据系统的代码构件显示系统代码的整个物理结构
【构架图】
- 部署图(Deployment diagrams)
【概念】系统中硬件的物理体系结构
【描述方式】
- 三维立方体表示部件
- 节点名称位于立方体上部
【目的】显示系统的硬件和软件的物理结构
【部署图】
九种UML图详解到此为止,下篇文章专门给大家讲解UML中类间的关系,感谢您的访问。
最近一直在学习UML的基础知识,再看完视频之后,并没有很好的总结,在画图的过程中发现了很多的问题,下面是看书的过程自己总结的UML用例图的一点知识,与大家分享一下。
一、概念
用例图是由参与者、用例以及它们之间的关系构成的用于描述系统功能的动态视图。
用例是系统中的一个功能单元,描述一个系统做什么(what)的信息,并不是怎么(how)做。用例图的作用是描述参与者和用例的关系,表示系统的用户使用了系统中的哪些用例。
二、组成
用例图组成的概念,我们通过一张图学习:
我们重点讲解用例组成中用例之间的关联:
- 包含
【表示方式】虚线箭头 + include;箭头由基础用例指向被包含用例
【作用】提高用例模型的可维护性;简化描述避免多个用例中重复描述同一段行为或对同一段行为描述不一致
【包含图】
- 扩展
【表示方式】虚线箭头 + extend;箭头指向基础用例
【作用】一定条件下,扩展用例为基础用例增加新的行为
【扩展图】
- 泛化
【表示方式】实线空三角箭头;箭头指向父用例
【作用】子用例继承父用例所有的结构、行为和关系,是父用例的一种特殊形式
【泛化图】
扩展关系和包含关系的比较:
1、扩展关系:基础用例提供一个或多个插入点,扩展用例为插入点提供需要插入的行为
包含关系中只有一个插入点
2、扩展关系:基础用例执行,扩展不一定执行
包含关系:基础用例执行,包含用例必须执行
3、扩展关系:即使没有扩展用例,基础用例本身是完整的
包含关系:没有包含用例,基础用例本身不完整
为大家简单的举一个机房收费系统的小例子:
目录
类与类之间的关系通常有4种,即依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization)
- 依赖关系(Dependency)
【概念】表示两个或多个模型元素之间语义上的连接关系
【绘图方式】虚线箭头,箭头指向被使用者
【依赖图】
- 泛化关系(继承)(Generalization)
【概念】描述类的一般和具体之间的关系,描述的“is a kind of ”的关系
【绘图方式】实线空心三角箭头,箭头指向父类
【继承方式】
- 单继承
一个类只有一个父类
- 多继承
一个类可以有多个父类,可以从每一个父类中获得允许继承的信息
【泛化图】
- 关联关系(Association)
【概念】表示一个事物的对象与另一个事物的对象之间的语义上连接,简单的理解为两个类或类与接口之间的强依赖关系
【绘图方式】实线箭头,双向箭头或无箭头
【包括】
- 聚集
【概念】描述的是部分与整体关系,描述了“has a”的关系,部分离开整体可以单独存在
【绘图方式】空菱形的实线,头部指向整体
【聚集关系图】
- 组成
【概念】一种更强形式的关联,在整体中拥有管理部分特有的职责,也被称为强聚合关系,部分不能脱离整体存在
【绘图方式】实菱形的实线,头部指向整体
【组成关系图】
- 实现关系(Realization)
【概念】将一种模型关系与另一种模型关系连接起来,从而说明和其实现之间的关系,简单的理解为一个类或多个类实现一个接口
【绘图方式】封闭空箭头的虚线,箭头指向接口
【实现关系图】
泛化和实现关系的区别:
泛化关系是指同一语义层的元素连接起来,通常在同一模型内;实现关系将不同语义层内的元素连接起来,通常在不同模型内。
1、序列图
序列图和协作图都是交互图,彼此等价,可以相互转化。序列图是对对象之间传送消息的时间顺序的可视化表示。序列图用于表现交互,侧重于强调时间顺序。
序列图将交互关系表示为一个二维图,如下图:
注:虚线表示,此时对象不处于激活状态,双道线,表示对象处于激活状态;消息使用从一个对象的生命线到另一个对象的生命线的箭头表示。
1.1序列图的作用:
- 确认和丰富一个使用语境的逻辑表达
- 细化用例,将用例表达的需求进一步精细表达
- 有效地描述各个类的职责以及各类具有相应职责的原因
1.2序列图的组成:
序列图是由对象、生命线、激活和消息等构成的,一张图胜过千余万语:
1.3序列图的高级概念:
2、协作图
协作:在一定的语境中一组对象以及实现某些行为的对象间的相互作用。
协作图就是表现对象协作关系的图。
2.1协作图的作用:
1、与序列图第一个相同
2、显示对象及其交互关系的空间组织结构
3、表现一个类操作的实现
2.2协作图的组成:
协作图是由对象、消息和链等构成的。对象和消息的概念与序列图中的概念是相同的,我重点讲链。
链:两个或多个对象之间的独立连接,是对象引用元组,是关联的实例。
链的表示形式:一个或多个相连的线或弧。
3、序列图和协作图的对比:
协作图和序列图表达的信息一样,只是方法不同,可通过适当的方式进行转化。协作图和序列图的不同点:
1、协作图明确表示了角色关系,通过协作角色来限定协作中的对象或链。
2、协作图不将时间作为单独的维来表示,必须使用顺序号来判断消息的顺序以及并行线程。
3、序列图和协作图都表示对象间的交互作用,序列图侧重时间顺序,协作图侧重对象间的关系,时间顺序可以从对象流经的顺序编号中获得。
4、序列图被用于表示方案,而协作图被用于过程的详细设计。
1、状态图
我先简单的理解一下,什么是状态机?
在日常生活中,状态机,我们理解为记录下给定时刻状态的机器,根据不同的输入对每个给定的变化而改变其状态或引发一个动作。
在UML中,状态机由对象的各个状态和连接这些状态的转换组成,是展示状态与状态转换的图。
状态图本质上就是一个状态机或是状态机的特殊情况。由表示状态的节点和表示状态之间转换的带箭头的直线组成。
1.1认识状态的概念和分类:
1.2状态图组成还包括:
2、活动图:
活动图是另一个种动态视图,描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。
2.1活动图的图形标准:
1、起点
【作用】描述活动图的开始状态
【表示方式】黑的实心圆
2、终止点
【作用】描述活动图的终止状态
【表示方式】实心圆的空心圆
3、活动
【作用】可以是手动也可以自动的执行任务
【表示方式】圆角矩形
4、状态
【作用】活动的所处状态
【表示方式】椭圆矩形
5、转换
【作用】描述一个活动转向另一个活动
【表示方式】带箭头的实线段,指向转向的活动
2.2活动图的组成
3、状态图中“动作”和活动图中的“动作状态”区别:
相同点:
1、都是原子性的,动作要么不执行,要么就完全执行,不能中断
2、执行时间都极短
不同点:
动作状态和状态图中的状态不同,不能有入口动作和出口动作,也不能有内部转移
4、了解活动图和状态图的各自作用:
状态图的作用:
1、清晰描述状态之间的转换顺序,通过转换顺序可以清晰看出事件的执行顺序
2、清晰的事件顺序有利于程序员在开发程序时避免出现事件错序的情况
3、清晰地描述了状态转换时所必须触发德尔事件、监护条件和动作等影响转换的因素,有利于程序员汇总非法事件的进入
4、通过判断更好地描述工作流因为不同的条件发生的分支
活动图的作用:
5、活动图和状态图的区别:
1、目的不同
活动图的主要目的是描述动作及对象的改变结果,而状态图则是描述对象、子系统、系统在生命周期中的各种行为
2、活动图中的状态转换不需要任何触发事件,状态图则需要触发事件
3、活动图种的动作可以放在泳道中,状态图不可以
为了描述系统实现方面的信息,使系统具有可重用性和可操作性的目的,构件图和部署图来表示实现单元。
1、构件
将系统中可重用的模块封装为具有可替代性的物理单元,称为构件。
构件的特征:
1、代码特征:包含和封装了实现系统功能的类、其他元素的实现代码以及某些构成系统状态的实例对象
2、身份特征:构件拥有身份和状态,用于定位在其上的物理对象
2、构件图
构件图是用来表示系统中构件与构件之间、类或接口与构件之间的关系图
2.1构件之间的依赖关系
与类图中类间依赖关系相同,都是使用虚线箭头表示
2.2构件和接口之间的依赖关系
一个构件使用了其他元素的接口,依赖关系可以用箭头的虚线表示,箭头指向接口符号
3、部署图
部署图描述一个系统运行时的硬件节点、在这些节点上运行的软件构件将在何处物理运行以及它们将如何彼此通信的静态视图
部署图的组成:
部署图的作用:
1、描述一个具体应用的主要部署结构
2、平衡系统运行时的计算资源分布
超市信息管理系统的部署图:
版权声明:本文为博主原创文章,未经博主允许不得转载。