什么是UML?为什么要用UML?
什么是UML?
UML是Unified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。
为什么要用UML?
通过使用UML使得在软件开发之前, 对整个软件设计有更好的可读性,可理解性,从而降低开发风险。同时,也能方便各个开发人员之间的交流。
UML提供了极富表达能力的建模语言,可以让软件开发过程中的不同人员分别得到自己感兴趣的信息。
Page-Jones 在《Fundamental Object-Oriented Design in UML》 一书中总结了UML的主要目的,如下:
- 为用户提供现成的、有表现力的可视化建模语言,以便他们开发和交换有意义的模型。
- 为核心概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
- 独立于特定的编程语言和开发过程。
- 为了解建模语言提供一个正式的基础。
- 鼓励面向对象工具市场的发展。
- 支持更高层次的开发概念,如协作,框架,模式和组件。
- 整合最佳的工作方法 (Best Practices)。
UML图有哪些?
- UML图分为结构图和行为图。
- 结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
- 行为图又分活动图、用例图、状态机图和交互图。
- 交互图又分为序列图、时序图、通讯图、交互概览图。
UML图概览
什么是类图?
- 【概念】 类图是一切面向对象方法的核心建模工具。类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
- 【目的】用来表示类、接口以及它们之间的静态结构和关系。
❝
在类图中,常见的有以下几种关系。
❞
泛化(Generalization)
- 【泛化关系】是一种继承关系,表示子类继承父类的所有特征和行为。
- 【箭头指向】带三角箭头的实线,箭头指向父类。
实现(Realization)
- 【实现关系】是一种类与接口的关系,表示类是接口所有特征和行为的实现。
- 【箭头指向】带三角箭头的虚线,箭头指向接口。
关联(Association)
- 【关联关系】是一种拥有关系,它使得一个类知道另一个类的属性和方法。
- 【代码体现】成员变量
- 【箭头指向】带普通箭头的实线,指向被拥有者。双向的关联可以有两个箭头,或者没有箭头。单向的关联有一个箭头。
❝
自己买的车,想什么时候开就开。但是车是车,人是人,没有整体与部分的关系。
❞
聚合(Aggregation)
- 【聚合关系】是一种整体与部分的关系。且部分可以离开整体而单独存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
- 【代码体现】成员变量
- 【箭头指向】带空心菱形的实线,空心菱形指向整体。
❝
电脑有键盘才能输入信息,电脑是整体,键盘是部分,键盘也可以离开电脑,单纯的拿去敲。所以是聚合。
❞
组合(Composition)
- 【组合关系】是一种整体与部分的关系。但部分不能离开整体而单独存在,组合关系是关联关系的一种,是比聚合关系还要强的关系。
- 【代码体现】成员变量
- 【箭头指向】带实心菱形的实线,实心菱形指向整体。
❝
鸟是整体,翅膀是部分。鸟死了,翅膀也就不能飞了。所以是组合。我们再看一下,下面的一组经典的聚合组合关系的例子。
❞
❝
一个公司拥有多个部门,公司和部门之间是组合关系,公司破产了,部门就不复存在了。部门和员工是聚合关系,部门被裁掉,员工就换下家了。
❞
依赖(Dependency)
- 【依赖关系】是一种使用关系,即一个类的实现需要另一个类的协助。
- 【箭头指向】带普通箭头的虚线,普通箭头指向被使用者。
❝
老司机只管开车,车是谁的不重要,给什么车开什么车。
❞
什么是组件图?
- 【概念】描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。
- 【目的】用来展示各个组件之间的依赖关系。
❝
订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。另外两个符号,表示组件连接器,一个提供接口,一个需要接口。
❞
什么是部署图?
- 【概念】描述了系统内部的软件如何分布在不同的节点上。
- 【目的】用来表示软件和硬件的映射关系。
❝
图中简单的表示,不同机器上面部署的不同软件。
❞
什么是对象图?
- 【概念】对象图是类图的一个实例,是系统在某个时间点的详细状态的快照。
- 【目的】用来表示两个或者多个对象之间在某一时刻之间的关系。
❝
图中就是描述的,某时间点bat这个公司有一个研发部,一个销售部,两个部门只有一个人iisheng。
❞
什么是包图?
- 【概念】描绘了系统在包层面上的结构设计。
- 【目的】用来表示包和包之间的依赖关系。
- 《Use》关系表示使用依赖,Web Shopping依赖Payment
- 《Merge》关系表示合并,Web Shopping合并了Shopping Cart就拥有了Shopping Cart的功能
- 《Access》关系表示私有引入,比如代码中的指定包名类名
- 《Import》关系表示公共引入,比如Java中的import之后,就可以直接使用import包中的类了。
什么是组合结构图?
- 【概念】描述了一个"组合结构"的内部结构,以及他们之间的关系。这个"组合结构"可以是系统的一部分,或者一个整体。
- 【目的】用来表示系统中逻辑上的"组合结构"。
❝
图中描述了Car是由车轴连接着的两个前面轮子、两个后面轮子,和引擎组合的。
❞
什么是轮廓图?
- 【概念】轮廓图提供了一种通用的扩展机制,用于为特定域和平台定制UML模型。
- 【目的】用于在特定领域中构建UML模型。
❝
图中我们定义了一个简易的EJB的概要图。Bean是从Component扩展来的。Entity Bean和Session Bean继承了Bean。EJB拥有Remote和Home接口,和JAR包。
❞
什么是用例图?
- 【概念】用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。
- 【目的】用来描述整个系统的功能。
用例图中包含以下三种关系:
- 包含关系使用符号《include》,想要查看订单列表,前提是需要先登录。
- 扩展关系使用符号《extend》,基于查询订单列表的功能,可以增加一个导出数据的功能
- 泛化关系,子用例继承父用例所有结构、行为和关系。
什么是活动图?
- 【概念】描述了具体业务用例的实现流程。
- 【目的】用来表示用例实现的工作流程。
❝
图中简单描述了,从开始到登录到查看订单列表,或者登录失败直接结束。
❞
什么是状态机图?
- 【概念】状态机图对一个单独对象的行为建模,指明对象在它的整个生命周期里,响应不同事件时,执行相关事件的顺序。
- 【目的】用来表示指定对象,在整个生命周期,响应不同事件的不同状态。
❝
图中描述了,门在其生命周期内所经历的状态。
❞
什么是序列图?
- 【概念】序列图根据时间序列展示对象如何进行协作。它展示了在用例的特定场景中,对象如何与其他对象交互。
- 【目的】通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
❝
图中展示的是支付宝条码支付场景的序列图。其中,loop是循环,alt是选择,序列图的其他关系这里就不介绍了。
❞
什么是通讯图?
- 【概念】描述了收发消息的对象的组织关系,强调对象之间的合作关系而不是时间顺序。
- 【目的】用来显示不同对象的关系。
❝
图中展示了一个线上书店的通讯图,方框和小人表示生命线,不同生命线之间可以传递消息,消息前面的数字可以表达序列顺序。
❞
什么是交互概览图?
- 【概念】交互概览图与活动图类似,但是它的节点是交互图。
- 【目的】提供了控制流的概述。
❝
图中表示一个调度系统的交互概览图,跟活动图很像。其中sd的框代表具体的交互流程,ref框代表使用交互。
❞
什么是时序图?
- 【概念】时序图被用来显示随时间变化,一个或多个元素的值或状态的更改。也显示时控事件之间的交互和管理它们的时间和期限约束。
- 【目的】用来表示元素状态或者值随时间的变化而变化的视图。
❝
图中展示了老年痴呆病人随着时间的变化病情的变化。
❞
总结
学习UML,我们没必要纠结比如像聚合关系是带箭头还是不带箭头,这样的问题。更重要的是UML图所给我们带来的画图思想,让我们画UML图或者其他图能让其他人更好的理解我们的设计思想。
各类知识点总结
最近整理了原创精美PDF,可以添加小助手VX:xuanwo008即可获取
- 92页的Mybatis
- 129页的多线程
- 141页的Servlet
- 158页的JSP
- 76页的集合
- 64页的JDBC
- 105页的数据结构和算法
- 142页的Spring
- 58页的过滤器和监听器
- 30页的HTTP
- 42页的SpringMVC
- Hibernate
- AJAX
- Redis
- ......
关注 转发+转发+转发 添加小助手VX:xuanwo008即可获取免费领取原创思维导图、精美PDF。任何不懂欢迎来问我。
什么是UML?为什么要用UML?相关推荐
- UML是什么?UML不是什么?
来源: http://blog.163.com/lzxin_2005/blog/static/15368423200826104042609/ 大多数软件人员应该对UML并不陌生,什么是UML?它是U ...
- UML笔记一:UML概述三(UML构成、UML中的事物)
1.UML中的构成: UML的基本结构块: ---UML中的事物 ---UML中的关系 ---UML中的图 UML的规则 UML中的公共机制 --规格说明 --修饰 --通用划分 --扩展机制 2.U ...
- 【UML 建模】在线UML建模工具 ProcessOn 使用具体解释
总结 : -- 推荐理由 : 近期从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款能够在线使用的 UML 工具, 用起来发 ...
- uml建模工具 支持php,【UML 建模】在线UML建模工具 ProcessOn 使用详解
总结: -- 推荐理由 : 最近从 Windows 操作系统 转到 MAC 上, 正在看设计模式 和 重构, 找不到好用的 UML 工具, 因此在网上找了一款可以在线使用的 UML 工具, 用起来发现 ...
- java uml建模_Java开源UML建模
ArgoUML 使用java编写的开源UML产品,功能比较全.最受欢迎的UML建模工具. Alma Alma是一个软件建模分析的工作平台,它读取几种不同的源代码,帮你设计面向对像的模型,修改结构和源代 ...
- java uml类图举例,uml类图(uml类图实例作业)
原发布者:dzq21cn 第4章UML类图[学习目标]·定义类图·为什么要建模类图·类图的主要标记符号·如何建模类图4.1UML基本类图面向对象设计的基础就是使用类.. UML是统一建模语言,一般用来 ...
- UML基本介绍与UML类图
1.UML 基本介绍 UML--Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 U ...
- [UML 扫盲]什么是UML?
文章目录 一.UML 是什么? 二.UML 与 面向对象 三.UML 基本要素 四.UML 常见图 概述 UML 是统一建模语言(Unified Modeling Language)的缩写.UML 提 ...
- 移动端UML图应用之UML交互图——顺序图和通信图
系列文章目录 移动端UML图应用之UML图简述 移动端UML图应用之UML行为图--用例图.活动图和状态机图 移动端UML图应用之UML交互图--顺序图和通信图 移动端UML图应用之UML结构图--包 ...
- OpenStack 虚拟机启动流程 UML 分析(内含 UML 源码)
目录 文章目录 目录 前言 API 请求 Nova API 阶段 Nova Conductor 阶段 Nova Scheduler 阶段 Nova Compute 阶段(计算节点资源分配部分) Nov ...
最新文章
- [认证授权] 6.Permission Based Access Control
- 鲜为人知的pandas骚操作
- P2831 愤怒的小鸟
- 011_Spring Data JPA多对多关系
- php 中文 过长 省略号,css实现文字过长显示省略号
- Java并发机制底层实现原理-volatile
- go语言中的匿名函数
- AAAI 2021 | 用于图拓扑演化的深度图谱进化网络
- oracle ORA-14452错误处理
- .NET 6新特性试用 | Nuget包验证
- Java Web开发技术详解~Web的概念
- ApacheCN Vue 译文集 20211115 更新
- ext列表禁止滑动_后台列表设计避坑指南(下)
- PHP函数strtotime()理解笔记
- 用C语言调用.bat批处理命令
- js字体溢出字体变小_可变字体:它们是什么,以及如何使用它们
- 2022阿里巴巴全球数学竞赛 第4题 虎虎生威(盲盒问题、集卡问题)解决思路
- Matlab 符号函数
- mapinfo10.5破解版安装
- 【RX解码MIPI输出】XS9922B 4通道模拟复合视频解码芯片 功能对标TP2815