学习地址:https://www.w3cschool.cn/uml_tutorial/
介绍
概念
- UML 是 OMG 在1997年1月提出了创建由对象管理组和 UML1.0 规范草案;
- UML 是一种为面向对象开发系统的产品进行说明、可视化、和编制文档的标准语言;
- UML 作为一种模型语言,它使开发人员专注于建立产品的模型和结构,而不是选用什么程序语言和算法实现;
- UML 是不同于其他常见的编程语言,如 C + +,Java中,COBOL 等,它是一种绘画语言,用来做软件蓝图;
- UML 不是一种编程语言,但工具可用于生成各种语言的代码中使用 UML 图;
- UML 可以用来建模非软件系统的处理流程,以及像在一个制造单元等
软件开发的时候,系统设计师/系统架构创师给出UML设计图,程序员将来要根据UML设计图进行编码/开发。
基本元素
三个基本模块:事务,关系,图。
-
四种事务
- 结构事务:类,接口,协作,用例,活动类,组件,节点。
- 行为事务:交互,状态机。
- 分组事务:包
- 注释事务:注释。
-
四种关系
依赖,关联,实现,泛化
-
十种图
用例图,类图,对象图,包图,部署图,活动图,状态图,序列图,协作图,组件图
事务
结构事物,行为事物,分组事物,注释事物
结构事务
结构事物是模型中的静态部分,用以呈现概念或实体的表现元素
- 类,Class
- 接口,Interface
- 协作,Collocation
- 用例,Use Case
- 组件,Component
- 节点,Node
行为事物
行为事物指的是 UML 模型中的动态部分,代表语句里的 “动词”,表示模型里随着时空不断变化的部分,
- 交互
- 状态机
分组事物
可以把分组事物看成是一个"盒子",模型可以在其中被分解。目前只有一种分组事物,即包(package)。结构事物、行为事物甚至分组事物都有可能放在一个包中。包纯粹是概念上的,只存在于开发阶段,而组件在运行时存在。
注释事物
注释事物可以被定义为一种机制来捕捉UML模型元素的言论,说明和注释。注释是唯一一个注释事物。
关系
显示元素是如何彼此相关联,此关联描述的一个应用程序的功能
依赖
协作
泛化
泛化可以被定义为一个专门的元件连接关系与一个广义的元素,
它基本上描述了在对象世界中的继承关系,是一种一般化-特殊化的关系;
实现
图
用例图
用例图(Use Case Diagram):站在系统用户(系统角色)的角度分析系统存在哪些功能。
组成:
- 参与者
- 系统边界
- 用例
- 关联
类图
类图(Class Diagram):描述类的信息(包括属性、方法),以及类和类之间的关系信息。
组合关系和聚合关系:
- 处于聚合关系的两个类生命周期不同步,则是聚合关系;
- 处于组合关系的两个类的生命周期同步;
- 聚合关系,当A创建的时候,B不一定创建;当A消亡时,B不一定消亡。
class A {private B;} class B {...}
- 组合关系,当创建一个A对象时,也会创建一个B对象;当A对象消亡时,作为A的属性的B对象也会消亡。
class A {private B b = new B();} class B {...}
时序图
时序图(Sequence Diagram):描述程序的执行过程,方法的调用过程,方法的返回值等信息。(程序是一步一步怎么执行的,怎么调用的。)
协作图
也称为通信图,描述了对象与对象之间的协作/合作关系
组成:
- 对象:对象,即类的实例,是为了共同完成某个目标的群体,通信图中主要描述在完成目标过程中,对象所参与的那部分活动。
- 链:链由一个或多个相连的线(直线或弧线)形成,链的两端是消息发送者和消息接收者,并且消息发送者与消息接收者可以是一样的。
- 消息
- 简单消息:指示消息类型未知或不重要的消息,可默认都使用简单消息替代。
- 同步消息:表示前一个消息处理完成后才能处理下一个消息。
- 异步消息:表示处理流不需要等到消息完成或传递反馈后才继续执行。
- 反身消息:对象自身内部的消息处理。
交互图中的时序(顺序)图和协作图的区别:
- 协作图可视化地表示了对象之间随时间发生的交互,它除了展示对象之间的关联,还显示出对象之间的消息传递。与顺序图一样,协作图也展示对象之间的交互关系。
- 顺序图强调的是交互的时间顺序,而协作图强调的是交互的语境和参与交互的对象的整体组织。
- 顺序图按照时间顺序布图,而协作图按照空间组织布图。
- 顺序图可以清晰地表示消息之间的顺序和时间关系,但需要较多的水平方向的空间。协作图在增加对象时比较容易,而且分支也比较少,但如果消息比较多时难以表示消息之间的顺序。
活动图
能够捕捉到该系统的动态行为,用来显示消息流从一个活动到另一个活动图。
状态图
主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。
状态图可以捕获对象、子系统和系统的生命周期,可以告知一个对象可以拥有的状态,并且事件(如消息的接收,时间的流逝、错误、条件为真等)会怎样随着时间的推移来影响这些状态。
组件图
又称为构件图,描述的是在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。
组件图 = 构件 + 接口 + 关系 + 端口 + 连接器
组件图给提供了将要建立的系统的高层次的架构视图,这将帮助开发者开始建立实现的路标,并决定关于任务分配及(或)增进需求技能。
部署图
部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。
部署图通常用来帮助理解分布式系统,一个系统模型只有一个部署图。
部署图是用来描述一个系统的静态部署视图。
例子: