UML——九种图和几大关系UML——九种图和几大关系
大家好,又见面了,我是你们的朋友全栈君。
UML中的图画完已经有一段时间了,前几天师父验收的时候,发现对这些图及其关系还需要进一步的理解,所以又整理了一下。
九种图
1.用例图
用来定义系统的功能需求。
描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如关联、依赖和泛化。
图例:
2.类图
对静态结构的描述,用来定义系统中的类和类之间的关系。
类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。
图例:
3.对象图
表示类的对象实例。
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
图例:
4.活动图
表示一个连续的活动流,用于描述某个操作执行时的活动状况。
描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
图例:
5.状态图
类所描述事物的补充说明,类所有对象可能具有的状态,以及引起状态变化的事物。
描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
图例:
6.序列图
反应若干对象之间的动态协作关系,在时间轴上,对象之间是如何交互的。
序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
图例:
7.协作图
和序列图作用相同,强调时间和序列顺序选择顺序图,强调对象之间的关系选择协作图。
和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
图例:
8.构件图
反应代码的物理结构。
描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
图例:
9.部署图
用来显示系统中软件和硬件的物理构架。
是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。
图例:
几种图的区别:
一:这九种模型图各有侧重
1:用例图侧重描述用户需求,
2:类图侧重描述系统具体实现;
二:描述的方面都不相同
1:类图描述的是系统的结构,
2:序列图描述的是系统的行为;
三:抽象的层次也不同
1:构件图描述系统的模块结构,抽象层次较高,
2:类图是描述具体模块的结构,抽象层次一般,
3:对象图描述了具体的模块实现,抽象层次较低。
结构分类、动态行为和模型管理:
1:结构分类包括用例图、类图、对象图、构件图和部署图,
2:动态行为包括状态图、活动图、顺序图和协作图,
3:模型管理则包含类图。
关系
1.泛化
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何实例化父类的所有行为和特征。
【箭头及指向】:带空心三角箭头的实线,箭头指向父类。
2.实现
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实线。
【箭头及指向】:带空心三角箭头的虚线,箭头指向接口。
3.关联
【关联关系】:是一种拥有关系,一个类知道另一个类的属性和方法。如老师与学生的关联可以是双向的,也可以是 单向的。双向关联可以有两个箭头或都没有箭头,单向关联只有一个箭头。
【箭头及指向】:带普通箭头的实心线,指向被拥有者。
4.聚合
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如火车和发动机就是整体和部分的关系,发 动机离开火车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系。
【箭头及指向】带空心菱形的实心线,菱形指向整体。
5.组合
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如我们的胳膊就不能离开人的身体。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象 负责代表部分对象的生命周期。
【箭头及指向】:带实心菱形的实线,菱形指向整体。
6.依赖
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,依赖关系普遍存在,当有其他关系时,尽 量不用依赖关系。
【箭头及指向】:带箭头的虚线,指向被使用者。
7.包含
【包含关系】:包含关系是用来把一个较复杂的用例所表示的功能分解成较小的步骤。包含关系是依赖的一种。
包含关系是指当多个用例中存在相同的事件流时,可以把这些公共事件流抽象成为公共用例,这个公共用例成为抽象用例,而原始用例称为基础用例,基础用例与抽象用例之间就是包含关系。对于包含关系而言,基础用例是抽象用例执行中不可缺少的一部分,基础用例一般不单独存在且基础用例不知道抽象用例的存在,但是抽象用例知道基础用例的存在。
【箭头及指向】:带虚线的箭头,箭头指向基础用例(父类指向子类)。
8.扩展
【扩展关系】:扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。扩展关系是依赖的一种。
如果一个用例明显的混合了两种或两种以上的不同场景,可以将这个用例分为一个基础用例和一个扩展用例。扩展关系是基础用例在某些特定条件下才触发产生的,扩展用例不是基础用例必须存在的部分,扩展用例可以单独存在,扩展用例知道基础用例的存在,而基础用例不知道扩展用例的存在。
【箭头及指向】:带虚线的箭头,箭头指向基础用例(子类指向父类)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105778.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...