UML是一种统一建模语言。可以用于项目设计过程的可视化。
是用于制造软件蓝图的图片语言,描述的是一个实时系统
什么是建模:建模就是把现实中的使建立一个模型,使人能够接受,能够理解
比如说地图,地址就是一种导向模型,地图上有很多图标,线,分别代表各种含义
有四个部分
- 定义图标和元素符号以及符号的含义的上层结构
- 定义上层建筑基于的核心元模型的基础设施
- 定义模型元素规则的OCL语言
- The UML Diagram Interchange that defines how UML 2 diagram layouts are exchanged
UML提供了可视化系统架构蓝图的方法,其中包含以下元素
- 所有活动(工作)
- 系统的各个组件
- 以及他们如何跟其他软件组件交互
- 系统怎么运行
- 实体如何与其他交互(组件和接口)
- 外部用户界面
为了了解什么是UML的概念模型,首先我们要知道什么叫做概念模型,以及它有什么用?
概念模型: 一个概念模型可以定义为由概念和关系构成的模型 绘制UML图之前,第一步要做的事就是创建一个概念模型,它有助于了解现实中的实体以及他们是如何相互作用的
软件的需求分析后,就得到了一个模型,这个模型就是概念模型
如何学习UML概念模型? UML的概念模型可以学习以下三个主要元素来掌握
- UML构建块(building blocks)
- 用规则来连接构建块
- UML的常用机制
UML可以被描述为面向对象分析和设计的接班人(嗯?就是面向对象的继承人吧,大概。。) 一个对象包含数据和控制数据的方法 数据表示对象的状态 一个类描述一个对象,这些类也形成一个层次结构以用来模拟现实世界的系统
层次表现为继承,也就是说,类与类之间通过继承来形成各种层次关系,用来模拟现实世界的系统 并且类也可以按照需求以不同的方式关联
对象是存在我们现实中的实体,面向对象中的抽象、继承、封装、多态都可以用UMl图来表示 UML很厉害的,可以表示面向对象分析和设计中的存在的所有概念,因此,在学习UML图之前,了解一下面向对象的概念是非常有必要的 以下是面向对象世界的一些基本概念(纯当复习的说)
- 对象(Object):对象表示一个实体和一个基本building block(构建块)
- 类(class):类是一个对象的蓝图
- 抽象(Abstraction): 抽象表示一个真实世界的实体的行为
- 封装:封装是把数据绑定在一起并将其从外界隐藏的一种机制
- 继承:继承是从现有的类创建新类的一种机制
- 多态:多态定义了类以不同形式存在的机制
OO可以定义为调查对象,设计意味着识别对象的协作 OO分析最重要的目的就是识别要设计的系统的对象,这个分析也可以用于已完成的系统。 只有当我们能够识别系统中的对象时,才有可能进行有效的分析 在识别对象之后,理清它们之间的关系并最终产生设计
OO分析的设计的目的可以总结如下
- 识别系统中的对象
- 理清对象之间的关系
- 使用OO语言,制作一个可执行的设计文件
有三个基本步骤 OO Analysis → OO Design → OO implementation using OO languages 详细描述的话,大概是酱紫
- 在OO分析中,最重要的就是识别对象并以适当的方式描述他们。 如果这个过程很容易,那么下一个工作-设计就会很简单 这个对象应该确定它的责任,责任就是对象执行的功能,每一个对象都有一些类型的责任来执行 当这些责任联合起来时,系统的目的就可以得以实现
- 接下来就是OO的设计,在这个阶段中,重点放在要求和实习上。 在这个阶段,对象是根据他们预期的联系来合作的,合作完成,设计也就是完成了 (也就是说,在这个阶段,要负责对象和对象之间,是怎么协作的,要想明白这一点)
- 第三个阶段就是实施,在这个阶段,设计主要是通过面向对象的语言来实现的 比如说JAVA,C++
UML图中的类图,对象图,协作图,交互图,都是基于对象来设计的 因此,OO设计和UML就是拴在同一根绳子上的蚂蚱。 而且呢,UML的输入其实就是OO的分析和设计
以骰子为例
确定问题领域(我们要干什么)
软件模拟游戏者投两个骰子,如果总点数是7则win,否则输
用例(这个软件是如何运行的,举个运行的例子)
- 游戏者请求骰子
- 系统展示结果,7则win,否则die
定义领域模型(业务模型)
最重要的是识别问题中的概念 ,在骰子游戏中,有游戏者,骰子,骰子游戏这几个概念,这几个概念中的联系
对象的定义-职责和协作
本章节主要讲building blocks。它可以被定义为
- Things(事)
- 关系
- 图表
Things是UML构建块中非常重要的部分,它可以是
- 结构(Structurl)
- 行为(Behavioral)
- 分组
- 注释
Structurl 定义了模型的静态部分,它代表了物理还有概念元素,以下是对Structurl的简要描述
- Class Class代表了代表一组具有相似职责的对象
- Interface Interface定义了一组操作,它们指定了一个类的责任
- Collaboration Collaboration定义了元素之间的协作
- Use case UseCase代表了系统针对特定目标而执行的一系列操作
- Component Component代表了系统的物理部分
- Node 一个Node可以定义为运行中存在的物理元素
一个Behavioral thing 由模型的动态部分组成,下面这些就是Behavioral thing
-
**Interaction(相互作用) ** Interaction 被定义为一种行为,由一组信息在元素中的交换以完成特定的任
-
state machine state mechine在对生命周期中的对象状态非常有用
它定义了对象经过事件响应过程中的状态变化,而事件是造成对象状态变化的重要因素
Grouping Of Things可以被定义为将UML模型中的元素组合在一起的机制,这样的话只有一个分组可用
Grouping things
特别的:package :package是唯一可以用于搜集结构和行为的Grouping things
Annotational things可以被定义备注,描述,和UML模型元素中的注释
Relationship 是UML一个重要的组成部分,它显示了元素是如何关联的,这个关联描述了应用程序的功能
有四个关系可用
-
Dependency(依赖)
-
Association(关联)
-
Generalization(概括,泛化)
-
Realization(实现)
实现可以被定义为两个元素之间的关系,其中一个元素描绘了一些责任,没有被执行
UML是这篇文章讨论的最终结果
所有的元素和关系都用来做一个完整的UML图,整个图表示系统
UML包括九个图表,这将在下面的几个章节来介绍它
- Class diagram 类图
- Object diagram 对象图
- Use case diagram
- Sequence diagram 序列图
- Collaboration diagram 协作图
- Activity diagram 活动图
- Statechart diagram 状态图
- Deployment diagram 部署图
- Component diagram 组件图
在设计系统之前,架构的设计要考虑不同观点。 这些观点可以是
- 设计
- 实现
- 处理
- 部署
这些观点通过用例图连接起来。用例代表了系统的功能
因此,这些观点和用例有关
-
设计:一个系统由类和接口协作完成,UML提供了类图和对象图来支持这一点
-
实现:组装在一起的组件可以实现一个完整的物理系统
UML通过组件图可以支持这一点
-
过程:定义了系统的流程,在UML中,可以通过使用相同的元素来支持这一个观点
-
部署代表构成系统的硬件的物理节点。
UML通过部署图来支持这个观点
区分不同的UML模型是至关重要的
不同的模型用于不同的UML建模。有三种不同的UML建模类型
结构建模捕捉系统的静态部分。它们包含以下内容
- 类图
- 对象图
- 部署图