UML统一建模语言介绍

什么是 UML?

  UML 是 国际对象管理组织(OMG)在1997年1月提出了创建由对象管理组和 UML1.0 规范草案;
  UML 是一种为面向对象开发系统的产品进行说明、可视化、和编制文档的标准语言;
  UML 作为一种模型语言,它使开发人员专注于建立产品的模型和结构,而不是选用什么程序语言和算法实现;
  UML 是不同于其他常见的编程语言,如 C + +,Java中,COBOL 等,它是一种绘画语言,用来做软件蓝图;
  UML 不是一种编程语言,但工具可用于生成各种语言的代码中使用 UML 图;
  UML 可以用来建模非软件系统的处理流程,以及像在一个制造单元等.

UML 的目标

  UML 的目标是定义一些通用的建模语言并对这些建模语言做出简单的说明,这样可以让建模者理解与使用。UML 也是为普通人和有兴趣的人而开发的系统,它可以是一个软件或者使用非软件,它必须是明确的。我们不将 UML 作为一个开发方法,而是随着流程做一个成功的系统。
  现在我们可以明确的了解 UML 的目标就是 UML 被定义为一个简单的建模机制,帮助我们按照实际情况或者按照我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化。

UML 基本元素

1. 三个基本模块

  • 事务
  • 关系

2. 四种事务

  • 结构事务

  结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,接下来是对结构化物件的简要描述:

类(class)

类是指具有相同属性、方法、关系和语义的对象的集合。


接口((interface))

接口是指类或组件所提供的服务(操作),描述了类或组件对外可见的动作。


接口
协作(collaboration)

协作定义元素之间的相互作用。


协作
用例(use case)

用例定义了执行者(在系统外部和系统交互的人)和被考虑的系统之间的交互来实现的一个业务目标。


用例
组件(component)

组件描述物理系统的一部分。


组件
节点(node)

一个节点可以被定义为在运行时存在的物理元素。


节点
  • 行为事务:

  行为事物指的是 UML 模型中的动态部分,代表语句里的 "动词",表示模型里随着时空不断变化的部分,包含两类:

交互

交互被定义为一种行为,包括一组元素之间的消息交换来完成特定的任务。


交互
状态机

状态机由一系列对象的状态组成,它是有用的,一个对象在其生命周期的状态是很重要的。


状态机
  • 分组事务

  可以把分组事物看成是一个"盒子",模型可以在其中被分解。目前只有一种分组事物,即包(package)。结构事物、动作事物甚至分组事物都有可能放在一个包中。包纯粹是概念上的,只存在于开发阶段,而组件在运行时存在。

封装是唯一一个分组事物可收集结构和行为的东西。


  • 注释事务

  注释事物可以被定义为一种机制来捕捉UML模型元素的言论,说明和注释。注释是唯一一个注释事物。

注释

注释用于渲染意见,约束等的UML元素。


注释

3. 四种关系

  关系是另一个最重要的构建块UML,它显示元素是如何彼此相关联,此关联描述的一个应用程序的功能,UML中定义了四种关系:

  • 依赖

  依赖是两件事物之间的语义联系,其中一个事物的变化也影响到另一个事物。


依赖
  • 关联

  一种描述一组对象之间连接的结构关系,如聚合关系(描述了整体和部分间的结构关系)、组合关系(更强烈的聚合关系)。


关联
  • 泛化

  泛化可以被定义为一个专门的元件连接关系与一个广义的元素,它基本上描述了在对象世界中的继承关系,是一种一般化-特殊化的关系。


泛化
  • 实现

  类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。


实现

4. 九种图

  • 用例图
  • 类图
  • 对象图
  • 部署图
  • 活动图
  • 状态图
  • 序列图
  • 协作图
  • 组件图

UML 图的分类

根据RUP 4+1架构视图,分别为场景视图、逻辑视图、开发视图、进程视图和物理视图,如下图所示:


RUP 4+1视图

根据UML建模类型分类UML标准图,分别为结构图(静态)和行为图(动态),如下图所示:


UML标准图

类、接口、类之间关系的基本表示法

  类(Class)是指具有相同属性、方法和关系的对象的抽象,它封装了数据和行为,是面向对象程序设计(OOP)的基础,具有封装性、继承性和多态性等三大特性。在 UML 中,类使用包含类名、属性和操作且带有分隔线的矩形来表示。
(1) 类名(Name)是一个字符串,例如,Student。
(2) 属性(Attribute)是指类的特性,即类的成员变量。UML 按以下格式表示:
[可见性]属性名:类型[=默认值]
例如:-name:String
注意:“可见性”表示该属性对类外的元素是否可见,包括公有(Public)、私有(Private)、受保护(Protected)和朋友(Friendly)4 种,在类图中分别用符号+、-、#、~表示。
(3) 操作(Operations)是类的任意一个实例对象都可以使用的行为,是类的成员方法。UML 按以下格式表示:
[可见性]名称(参数列表)[:返回类型]
例如:+display():void。
学生类的 UML ,如下所示:


Student 类
  • 接口

  接口(Interface)是一种特殊的类,它具有类的结构但不可被实例化,只可以被子类实现。它包含抽象操作,但不包含属性。它描述了类或组件对外可见的动作。在 UML 中,接口使用包含接口名和操作且带有分隔线的矩形来表示。


Graph 接口
  • 类之间的关系

  在软件系统中,类不是孤立存在的,类与类之间存在各种关系。根据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

1. 依赖关系

  依赖(Dependency)关系是一种使用关系它是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。
  在 UML 类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类
人与手机的关系图,人通过手机的语音传送方法打电话,如下图所示:

依赖关系的实例

2. 关联关系

  关联(Association)关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。我们先介绍一般关联。
  关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。也可以在关联线的两端标注角色名,代表两种不同的角色
  在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系。每个老师可以教多个学生,每个学生也可向多个老师学,他们是双向关联。老师和学生的关系图,如下图所示:

关联关系的实例

3. 聚合关系

  聚合(Aggregation)关系是关联关系的一种,是强关联关系,是整体和部分之间的关系,是 has-a 的关系
  聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。
  在 UML 类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。大学和教师的关系图,如下图所示:

聚合关系的实例

4. 组合关系

  组合(Composition)关系也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 comtains-a 关系
  在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。
  在 UML 类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。头和嘴的关系图,如下图所示:

组合关系的实例

5. 泛化关系

  泛化(Generalization)关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系,是 is-a 的关系
  在 UML 类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类。在代码实现时,使用面向对象的继承机制来实现泛化关系。例如,Student 类和 Teacher 类都是 Person 类的子类,其类图如下图所示:

泛化关系的实例

6. 实现关系

  实现(Realization)关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作
  在 UML 类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。例如,汽车和船实现了交通工具,其类图如图下图所示:

实现关系的实例

UML与软件工程

UML图是软件工程的组成部分,软件工程从宏观的角度保证了软件开发的各个过程的质量。而UML作为一种建模语言,更加有效的实现了软件工程的要求。
在软件的各个开发阶段需要的UML图,如下图所示:


UML与软件工程

UML图的使用人员总结,每种颜色代表一种图,如黄色代表用例图,用例图是用户,分析人员,测试人员会使用的。如下图所示:


UML图的使用人员

参考文章

UML 教程
运用RUP 4+1视图方法进行软件架构设计

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • UML统一建模语言介绍 统一建模语言简介 统一建模语言(Unified Modeling Language,UML...
    你美你媚儿阅读 280评论 0 0
  • UML概述 面向对象软件开发的过程: (1)OOA(面向对象分析):建立分析模型并文档化。 (2)OOD(面向对象...
    m2fox阅读 1,097评论 0 0
  • UML 的定义 统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产...
    WEIJAVA阅读 1,871评论 0 2
  • 统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可...
    迷心迷阅读 335评论 0 0
  • 「英文时间」:UML: Unified Modeling Language n.统一建模语言 UML 是一种在面向...
    善倾阅读 331评论 0 0