UML(Unified Model Language)统一建模语言
一、九种图
二、类间关系
一、UML中的九种图
1、用例图(use case diagrams)
【概念】描述用户需求,从用户的角度描述系统的功能
【描述方式】椭圆表示某个用例;人形符号表示角色
【目的】帮组开发团队以一种可视化的方式理解系统的功能需求
【用例图】

2、静态图
2-1)类图(class diagrams)
【概念】显示系统的静态结构,表示不同的实体是如何相关联的
【可见性】公有类型(public)、受保护类型(protected)、私有类型(private)、Implementation
【描述方式】三个矩形 
【目的】表示一个逻辑类或实现类,逻辑类通常是用户的业务所涉及的事物;实现类是程序员处理的实体
【类图】

2-2)对象图(object diagrams)
【概念】类图的一个实例,描述系统在具体时间点上所包含的对象以及各个对象的关系
【对象图】

3、交互图——用来描述对象之间的交互关系
3-1)序列图(顺序图)
【概念】描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序
【描述方式】横跨图的顶部,每个框表示每个类的实例或对象;类实例名称和类名称使用冒号分开
【目的】显示流程中不同对象之间的调用关系,还可以显示不同对象的不同调用。
【序列图】

3-2)协作图(Collaboration diagrams)
【概念】描述对象之间的合作关系,侧重对象之间的消息传递
序列图和协作图的对比:
协作图和序列图表达的信息一样,只是方法不同,可通过适当的方式进行转化。协作图和序列图的不同点:
1)协作图明确表示了角色关系,通过协作角色来限定协作中的对象或链。
2)协作图不将时间作为单独的维来表示,必须使用顺序号来判断消息的顺序以及并行线程。
3)序列图和协作图都表示对象间的交互作用,序列图侧重时间顺序,协作图侧重对象间的关系,时间顺序可以从对象流经的顺序编号中获得。
4)序列图被用于表示方案,而协作图被用于过程的详细设计。
4、行为图:描述系统的动态模型和对象之间的交互关系
4-1)状态图(Statechart diagrams)
【概念】描述对象的所有状态以及事件发生而引起的状态之间的转移
【描述方式】
- 起始点:实心圆
- 状态之间的转换:使用开箭头的线段
- 状态:圆角矩形
- 判断点:空心圆
- 一个或多个终止点:内部包含实心圆的圆
【目的】表示某个类所处的不同状态以及该类在这些状态中的转换过程
4-2)活动图(Activity diagrams)
【概念】描述满足用例要求所要进行的活动以及活动时间的约束关系
【描述方式】
- 起始点:实心圆
- 活动:圆角矩形
- 终止点:内部包含实心圆的圆
- 泳道:实际执行活动的对象
【目的】表示两个或多个对象之间在处理某个活动时的过程控制流程
【活动图】

活动图和状态图区别:
1)活动图的主要目的是描述动作及对象的改变结果,而状态图则是描述对象、子系统、系统在生命周期中的各种行为
2)活动图中的状态转换不需要任何触发事件,状态图则需要触发事件
3)活动图种的动作可以放在泳道中,状态图不可以

5、实现图
5-1)构件图(Component diagrams)
【概念】描述代码构件的物理结构以及各构件之间的依赖关系
【描述方式】构件
【目的】提供系统的物理视图,根据系统的代码构件显示系统代码的整个物理结构
【构架图】

5-2)部署图(Deployment diagrams)
【概念】系统中硬件的物理体系结构
【描述方式】
- 三维立方体表示部件
- 节点名称位于立方体上部
【目的】显示系统的硬件和软件的物理结构
【部署图】

二、类间关系
类与类之间的关系通常有4种,即依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization)
- 依赖关系(Dependency)
【概念】表示两个或多个模型元素之间语义上的连接关系
【绘图方式】虚线箭头,箭头指向被使用者
【依赖图】
- 泛化关系(继承)(Generalization)
【概念】描述类的一般和具体之间的关系,描述的“is a kind of ”的关系
【绘图方式】实线空心三角箭头,箭头指向父类
【继承方式】
- 单继承:一个类只有一个父类
- 多继承:一个类可以有多个父类,可以从每一个父类中获得允许继承的信息
【泛化图】
- 关联关系(Association)
【概念】表示一个事物的对象与另一个事物的对象之间的语义上连接,简单的理解为两个类或类与接口之间的强依赖关系
【绘图方式】实线箭头,双向箭头或无箭头
【包括】
- 聚集
【概念】描述的是部分与整体关系,描述了“has a”的关系,部分离开整体可以单独存在
【绘图方式】空菱形的实线,头部指向整体
【聚集关系图】
- 组成
【概念】一种更强形式的关联,在整体中拥有管理部分特有的职责,也被称为强聚合关系,部分不能脱离整体存在
【绘图方式】实菱形的实线,头部指向整体
【组成关系图】
- 实现关系(Realization)
【概念】将一种模型关系与另一种模型关系连接起来,从而说明和其实现之间的关系,简单的理解为一个类或多个类实现一个接口
【绘图方式】封闭空箭头的虚线,箭头指向接口
【实现关系图】
泛化和实现关系的区别:
泛化关系是指同一语义层的元素连接起来,通常在同一模型内;实现关系将不同语义层内的元素连接起来,通常在不同模型内。
UML(Unified Model Language)统一建模语言的更多相关文章
- UML(Unified Modeling Language)统一建模语言
什么是模型 模型是对现实的简化 模型是提供系统的蓝图,模型可是包括详细计划.也可是是从更高程度考虑系统的总体计划,每个系统可以从不同的方面用不通过的模型来描述.因而每个模型都是在语义上闭合的抽象系统. ...
- UML(Unified Modeling Language)同一建模语言
wiki定义: UML is a general-purpose, developmental, modeling language in the field of software engineer ...
- 技术人应该学习的行话--UML统一建模语言
新生代码农如何在硝烟弥漫的商业丛林中生存和崛起? 洞见,让一部分先遇见未来. 最近公司技术部在组织架构师培训,有幸参与.导师老刘特别推荐了UML语言的学习.回想多年来,自己习惯做一些流程图,框图或者所 ...
- 2017.12.23 第二章 统一建模语言UML概述
第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...
- 统一建模语言UML---类图
什么是统一建模语言,来看看百科中的介绍统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模 ...
- 设计模式学习总结(一)——设计原则与UML统一建模语言
一.概要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计 ...
- 统一建模语言UML
目录 1. UML定义 2. UML结构 2.1 视图(View) 2.2 图(Diagram) 2.3 模型元素(Model element) 2.4 通用机制(General mechanism) ...
- 【UML】统一建模语言
如果是准备学习设计模式的同学,可以只了解类图相关的知识 而如果是在准备软件设计师考试的同学,或许会对你有点帮助 正在施工...... 参考博客:https://blog.csdn.net/unique ...
- 1. UML统一建模语言
(1)UML概述: 建模: 对现实系统进行适当的过滤, 用适当的表现规则描述出简洁的模型. 建模是一种深入解决问题的方法. UML: UML(United Modeling Language, 统一建 ...
- UML统一建模语言
概述 统一建模语言(UML)是一种图形化的语言,用于软件密集系统要素的可视化.制定规范.构建对象和编写文档.UML提供了一种标准的方式来描述系统的设计图,既包括概念方面,例如业务过程和系统功能,也包括 ...
随机推荐
- Atitit 衡量项目的规模
Atitit 衡量项目的规模 1. 预估衡量项目的规模的方法1 1.1. 方法一.Delphi 法1 1.2. 方法二. 类比法1 1.3. 方法三.功能点估计法1 1.4. 方法四.PERT估计法2 ...
- 使用gulp解决外部编辑器修改Eclipse文件延迟更新的问题
本人前端用惯了Hbuilder,修改了eclipse项目中的文件后,由于是外部编辑器修改过的,eclipse不会自动部署更新,一般按F5刷新项目,或者在 preferences > genera ...
- 做JavaWeb开发不知Java集合类不如归家种地
Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...
- 使用virtualenv搭建python3开发环境
问题描述 环境: CentOS6.5 想在此环境下使用python3进行开发,但CentOS6.5默认的python环境是2.6.6版本. 之前的做法是直接从源码安装python3,替换掉现有的开发环 ...
- SQLite使用(二)&&数据类型
1.概述 我们熟知的数据库引擎大部分采用静态数据类型,即列定义的类型定义了值的存储,并且值要严格满足列的定义,同一列所有值的存储方式都相同,比如定义了一个列类型为整型 int,不能在该列上输入'abc ...
- redis-cli中那些或许我们还不知道的一些实用小功能
玩过redis的朋友都知道,redis中有一个叫做redis-cli的小工具,我们可以利用它在test和develop环境下进行高效的模拟测试,然而在现实环境中, 我们只知道直接键入redis-cli ...
- centos编译安装mysql
groupadd mysql #添加mysql组useradd -g mysql -s /sbin/nologin mysql #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系 ...
- python学习7
1.函数作为返回值 eg: 调用执行结果如下: 在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量(eg:args),当lazy_sum返 ...
- jpa+springdata
学习爱酷学习网尚硅谷springdata笔记: 1.在 Spring 配置文件 <?xml version="1.0" encoding="UTF-8"? ...
- lombok在IntelliJ IDEA下的使用
lombok是一款可以精减java代码.提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码.代码越少,意味着出b ...