UML介绍
UML(Unified Modeling Language) 统一建模语言
UML定义: 是一种面向对象的建模语言, 它是运用统一的、标准化的标记和定义实现对软件系统进行面向对象的描述和建模. 这种语言是一种图形化语言, 通过几种不同的图来代替语言的描述.
UML由三部分构成
一. 构造块(由3部分构成)
1. 事物(视图)
事物包含:结构事物, 行为事物, 分组事物, 注记事物.
参考: https://blog.csdn.net/u013036274/article/details/41383395
2. 关系
UML中核心是九种图, 这九种图的核心就是四种关系, 关联(association)、依赖(dependency)、泛化/继承(generalization)、实现(realization)这四种关系. 关联又可以分成(普通关联, 聚合, 组合), 所以也可以说有六种关系
3. 图
- 用例图(Use Case Diagram): 用例图展现了一组用例、参与者及它们之间的关系,说明的是谁要使用系统,以及他们使用该系统可以做些什么.
- 类图(Class Diagram): 根据用例图,通过抽象得到类,类图展示了一组类、接口和协作及他们间的关系.
- 对象图(Object Diagram): 对象图是类图的变体,可以说对象图是类图的一个例子,用于显示在某一时间点上系统可能呈现的样子.
- 状态图Statechart Diagram): 用来描述类的对象所有可能的状态以及事件发生时状态的转移条件.
- 活动图(Activity Diagrams): 用来描述满足用例要求所要进行的活动以及活动间的约束关系,使用活动图有利于识别系统的并行活动.
- 序列图(Sequence Diagram): 描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序,强调对象之间消息的发送顺序,同时也显示对象之间的交互过程.
- 协作图(Collaboration Diagrams): 描述对象之间的合作关系,更侧重于说明哪些对象之间有消息的传递.
- 构件图(Coponent Diagram): 构件图由组件、接口及其关系构成。表示的是系统中的不同物理部件及其关系.
- 实施图(Deployment Diagrams): 部署图定义了系统中硬件的物理体系结构,用来描述实际的物理设备以及他们之间的连接关系.
二. 规则
命名规范:是为事物、关系和图命名做的一些要求. 和任何语言一样, 名字都是一个标识符.
范围:与类的作用域相似.
可见性:UML 中的访问权限控制:Public(+), Protected(#), Private(-), Package
完整性:UML 中各个图要要完整,一直的表现出事物间的联系.
执行:运行或模拟动态模型的含义是什么
三. 机制
规格说明:描述系统的细节. 每一种图形都是在一定的语义环境下进行理解的, 只有图形, 没有解释说明, 所以一个图有N种理解,所以UML中的图都是有一定的规格说明的.
修饰:各种符号的含义.
通用划分:类/对象二分法;接口/实现二分法……
类/对象二分法:在UML中类到处都存在,但是类是一种抽相化的描述,需要有对象来进行具体的实例化.
接口/实现二分法:接口只是定义了操作规范,需要类或者构件来实现其中的契约.
扩展机制:对UML中的图示符号进行的扩展.
约束:用来增加新的语义或改变已存在规则的一种机制,放在相关元素的附近进行说明.
参考: https://blog.csdn.net/fanxiaobin577328725/article/details/51587957
参考: https://blog.csdn.net/wangyongxia921/article/details/8247887
UML图主要可分为两类:静态图和动态图
- 静态图:UML中有5种静态图:用例图、类图、对象图、组件图和配置图
- 动态图:UML中有4种动态图:时序图、协作图、状态图、活动图
- 外加:包图 (非正式的UML图)
UML关系详解
类与类之间的关系通常有4种, 即依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization).
1. 依赖关系 (Dependency)
概念: 表示两个或多个模型元素之间语义上的连接关系
绘图方式: 虚线箭头,箭头指向被使用者
【依赖关系图】
2. 泛化(继承)关系 (Generalization)
概念: 描述类的一般和具体之间的关系,描述的“is a kind of ”的关系
绘图方式: 实线空心三角箭头,箭头指向父类
继承方式:
- 单继承: 一个类只有一个父类
- 多继承: 一个类可以有多个父类,可以从每一个父类中获得允许继承的信息
【泛化关系图】
3. 关联关系(Association)
概念: 表示一个事物的对象与另一个事物的对象之间的语义上连接,简单的理解为两个类或类与接口之间的强依赖关系
绘图方式: 实线箭头,双向箭头或无箭头
包括:
- 聚集
概念: 描述的是部分与整体关系,描述了“has a”的关系,部分离开整体可以单独存在
绘图方式: 空菱形的实线,头部指向整体
【聚集关系图】
- 组成
概念: 一种更强形式的关联,在整体中拥有管理部分特有的职责,也被称为强聚合关系,部分不能脱离整体存在
绘图方式:实 菱形的实线,头部指向整体
【组成关系图】
4. 实现关系(Realization)
概念:将一种模型关系与另一种模型关系连接起来,从而说明和其实现之间的关系,简单的理解为一个类或多个类实现一个接口
绘图方式: 封闭空箭头的虚线,箭头指向接口
【实现关系图】
泛化和实现关系的区别:
泛化关系是指同一语义层的元素连接起来,通常在同一模型内;实现关系将不同语义层内的元素连接起来,通常在不同模型内。
用UML建模的重要性
模型: 模型是对现实世界的形状或状态的抽象模拟和简化. (模型是对现实的简化)
模型提供了系统的蓝图。模型既可以包括详细的计划,也可以包括从很高的层次考虑系统的总体计划。一个好的模型包括那些有广泛影响的主要元素,而忽略那些与给定的抽象水平不相关的次要元素。每个系统都可以从不同的方面用不同的模型来描述,因而每个模型都是一个在语义上闭合的系统抽象。模型可以是结构性的,强调系统的组织。它也可以是行为性的,强调系统的动态方面。
建模理由: 建模是为了能够更好地理解正在开发的系统.
建模方法 = 建模语言(UML) + 建模过程(描述进行设计所需要遵循的步骤)
通过建模可以达到4个目的:
(1)模型有助于按照实际情况或按照所需要的样式对系统进行可视化。
(2)模型能够规约系统的结构或行为。
(3)模型给出了指导构造系统的模板。
(4)模型对做出的决策进行文档化。
系统越大、越复杂, 建模的重要性就越大, 一个很简单的原因是: 因为很难完整地理解一个复杂的系统, 所以要对它建模.
人对复杂问题的理解能力是有限的, 通过建模, 缩小所研究问题的范围,一次只着重研究它的一个方面, 这就是Edsger Dijkstra提出的“分而治之”的基本方法,即把一个困难问题划分成一系列能够解决的小问题;解决了这些小问题也就解决了这个难题.