UML-Unified Model Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。
UML是在开发阶段,说明,可视化,构建和书写一个面向对象软件密集系统的制品的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软件
架构层次,已经被验证有效。统一建模语言(UML)是一种模型化语言。模型大多以图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附
加信息之用的文本。这些虽简单却非常重要,在UML规则中相互联系和扩展。
UML的构造快包含3种:
(1) 事物(4种):结构事物,行为事物,分组事物,注释事物
(2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系(另有两特殊的关联关系:聚合与组合)
(3) 图(10种):用例图,类图,对象图,(包图,组件图)--- 构建图,部署图,状态图,活动图,序列图,协作图
事物是对模型中最具代表性的成分的抽象;关系把事物结合在一起;图是聚集了相关的事物。
几种关系所表现的强弱程度依次为:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
一、UML的关系
UML定义的关系主要有六种:依赖、类属、关联、实现、聚合和组合。这些类间关系的理解和使用是掌握和应用UML的关键,而也就是这几种关系,往往会让初学者迷惑。这里
给出这六种主要UML关系的说明和类图描述,一看之下,清晰明了;以下就分别介绍这几种关系
继承(泛化)
泛化(generalization)关系:是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类
与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性。

实现
实现(realization)关系:指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,
在设计时一般没有争议性;
依赖
依赖(dependency)关系:可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,
需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用
//在java?中.?依赖关系体现为:?局部变量,?方法中的参数,?和对静态方法的调用

关联
关联(association)关系: 表示类与类之间的联接, 它使一个类知道另一个类的属性和方法.
关联可以使用单箭头表示单向关联, 使用双箭头或不使用箭头表示双向关联, 不建议使用双向关联. 关联有两个端点, 在每个端点可以有一个基数,
表示这个关联的类可以有几个实例.
常见的基数及含义:
0..1:0 或1 个实例.
0..*: 对实例的数目没有限制.
1: 只能有一个实例.
1..*: 至少有一个实例.
他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也
不是临时性的,一般是长期性的,而且双方的关系一般是平等的,表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类
A引用了一个类型为被关联类B的全局变量;在java 语言中关联关系是使用实例变量实现的.
聚合
聚合(aggregation)关系: 关联关系的一种特例, 是强的关联关系. 聚合是整体和个体之间的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可
以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一
致的,只能从语义级别来区分;
聚合关系也是使用实例变量实现的. 从java 语法上是分不出关联和聚合的.
关联关系中两个类是处于相同的层次, 而聚合关系中两个类是处于不平等的层次, 一个表示整体, 一个表示部分.

组合
组合(合成)关系(composition): 也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间
的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;合成关系不能共享. 。表现在代码层面,和
关联关系是一致的,只能从语义级别来区分。
组合跟聚合几乎相同,唯一的区别就是“部分”不能脱离“整体”单独存在,就是说,“部分”的生命期不能比“整体”还要长。

二、事物
UML语言的事物,包含4类:
结构事物:语言的静态构成要素,有7种:类和对象、接口、主动类、用例、协作、构件、节点。
行为事物:语言的动态构成要素,表示事物的变化和状态。
分组事物:对模型中事物分组组织的要素,包。
注释事物:对模型中事物标注,注解和解释。
结构事物
结构事物定义了业务或软件系统中的某个物理元素,描述了事物的静态特征。结构事物常用名词表示。结构事物有7种,
它们是:类和对象、接口、主动类、用例、协作、构件、节点。
1.类和对象
类是对具有相同属性、相同操作、相同关系的一组对象的共同特征的抽象,类是对象的模板,对象是类的一个实例。
(1)类的表示
在UML中,类是用一个矩形表示的,它包含三个区域,最上面是类名、中间是类的属性、最下面是类的方法。
例如,描述People(类)用图形表示,如图1所示。
假设,People类包含的属性和行为如下:
类名:People, 在第一栏。
字段名:name、age,字段名(也称属性)放在第二栏。
方法名:speak()、breathe( ),方法在第三栏

(2).对象的表示
对象是用一个矩形表示,在矩形框中,不再写出属性名和方法名,只是在矩形框中用“对象名:类名”的格式表示一个对象。
例如,属于类People中的对象张连海的图形表示如图2所示。
2.接口
因为外界对类(或构件)的使用,是通过类(或构件)的方法来实现的,因此,我们把
为类或构件提供特定服务的一组操作的集合称为接口。接口向外界声明了它能提供
的服务。接口分为供给接口和需求接口两种,供给接口只能向其它类(或构件)提供
服务,需求接口表示类(或构件)使用其它类(或构件)提供的服务。

3.主动类
主动类是指该类创建的对象至少拥有一个进程或线程,通过进程或线程控制任务的执行。
主动类的表示与一般类相似,只是最外框是粗线描述而已。
如主动类”Radio”的表示如图4所示。
4.用例
在系统中,为完成某个任务而执行的一序列动作,以实现某种功能,我们把这些动作的集合称为用例实例。
用例是对一组用例实例共同特征的描述,用例与用例实例的关系,正如类与对象的关系。
用例是用一个实线椭圆来表示的,在椭圆中写入用例名称。如,用例“用户登录”表示如图5
5.协作
协作是指有意义的交互,即,一组对象为了完成某个任务,相互间进行的交互。
用例的实现:实现某个用例的一组对象之间的交互,即,把一个用例表示为多个对象间的交互(协作)。从本质上说,协作就是用例的实现。
用一个带2个分栏的虚线椭圆表示协作。如,用例“销售房产”,用协作“销售房产”表示时,其对应的表示法如图6所示。

6. 构件
构件也称组件:系统设计中,一个相对独立的软件部件,它把功能实现部分隐藏在内部,对外声明了一组接口(包括供给接口和需求接口)。因此,两个具有相同接口的构件可以相互替换。
构件是比“类”更大的软件部件,例如一个COM组件、一个DLL文件、一个执行文件等等。
构件通常采用带有2个小方框的矩形表示,如下图7所示。
7.节点
节点是指硬件系统中的物理部件,它通常具有存储空间或处理能力。如,PC机、打印机、服务器等都是节点。在UML中,用一个立方体表示一个节点。如,节点“server”的表示方法如图8所示。
二)、行为事物
行为事物是用来描述业务系统或软件系统中,事物之间的交互或事物的状态变化。行为事物描述了事物的动态特征。行为事物用动词表示。行为事物有2种:交互和状态机。
1.交互
交互(interaction)是为了完成某个任务的对象之间相互作用,这种作用是通过信息的发送和接受来完成的。
交互的表示法很简单,用一条有向直线来表示对象间的交互,并在有向直线上面标有消息名称。如图9所示。
2.状态机
状态机(statemachine)在对象生命周期内,在事件驱动下,对象从一种状态迁移到另一状态的状态序列,
这些状态序列构成了状态机,即,一个状态机由多个状态组成。
在UML模型中,将状态表示为一个圆角矩形,并在矩形内标识状态名称。 如,“等待”表示如图10所示。

三)、分组事物
对于一个中大型的软件系统而言,通常会包含大量的类、接口、交互,因此也就会存在大量的
结构事物、行为事物,为了能有效地对这些事物进行分类和管理,就需要对其进行分组。在UML
中,提供了“包(Package)”来实现这一目标。表示“包(Package)”的图形符号,与windows中

四)、注释事物
在模型中,用来对其它事物的解释部分(文本解释)称为注释。注释事物是用一个右上角折起来的矩形,解释的文字就写在矩形中。注释符号如图12所示。

UML基本关系的更多相关文章

  1. 【建模】UML类关系分析

    一.UML类关系分析 1.关联(asociation) 一般是一方拥有另一方对象的指针.箭头的方向是访问方向. 2.聚合(Aggregation)和组合(Composition) 聚合和关联一般不做区 ...

  2. UML六种关系

    UML六种关系 基础之上,并对其进行了扩展.在程序中是通过继承类实现的.比如狗是对动物的具体描述,在面向对象设计的时候一般把狗设计为动物的子类. 表示方法:空心三角形箭头的实线,子类指向父类 实现 概 ...

  3. 设计模式学习---UML常见关系的实现

    一.UML基本构造 UML的基本构造含3种: (1) 事物(4种):结构事物,行为事物,分组事物,注释事物 (2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系 (3) 图(10种):用例图, ...

  4. UML——六大关系整理

    UML——六大关系整理 1.定义 是一种面向对象的建模语言,它是运用统一的.标准化的标记和定义实现对软件系统进行面向对象的描述和建模(百度百科). 2.六种关系 这六种关系分别为,继承.实现.关联.聚 ...

  5. UML中关系的分类及其概念——总结备忘

    UML中关系分类: 依赖:依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义. 关联:关联是类与类之间的联接,它使一个类知道另一类的属性和方法. 聚合:聚合 ...

  6. UML中类关系表示与Java代码中的对应关系

    UML中类关系表示与Java代码中的对应关系 1. 类的UML表示法 上图中,Employee 类有两个String类型的私有属性和一个返回值为String类型public 方法 getName(); ...

  7. 学习设计模式第三 - 基础使用UML表示关系

    面向对象的思想中存在如下几种关系,一般为了方便交流都使用UML的类图来展现类之间的关系.所以了解类图中符号的含义对看懂类图,尤其是用类图展示的设计模式很有帮助.下面依次介绍这几种关系 类继承关系 继承 ...

  8. 我所理解的OOP——UML六种关系

    最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继 ...

  9. 软件开发与UML的关系

    今天,我们上<统一建模语言UML>.课上老师给我们讲解了软件开发与UML之间的关系:UML常用于建立软件系统的模型,适用于系统开发的不同阶段.UML的应用贯穿于系统开发的不同阶段.1.需求 ...

随机推荐

  1. codevs 3385 拯救Oier(一) Save Oier—first

    3385 拯救Oier(一) Save Oier—first 传送门  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 青铜 Bronze 题解       题目描述 Descr ...

  2. 16.copy_to定制组合field解决cross-fields搜索弊端

    主要知识点: 在index的mapping中加copy_to字段的方法 copy_to搜索方法     用most_fields策略,去实现cross-fields搜索,有3大弊端,为了解决这三个弊端 ...

  3. libcloud代码研究(三)——bugs

    Bug 1:对不可迭代类进行迭代(libcloud.storage.driver.cloudfile line. 141-142)      使用libcloud连接自搭建swift服务,自己在服务器 ...

  4. 本地数据文件加载到hive表

    1.在test数据库下创建表格 hive> create table vod_record_all( > watch_time date, > device_id string, & ...

  5. [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序

    菜肴制作 bzoj-4010 HNOI-2015 题目大意:给定一张n个点m条边的有向图,求一个toposort,使得:(1)满足编号为1的点尽量在前:(2)满足(1)的情况下编号为2的点尽量在前,以 ...

  6. 51Nod——T 1242 斐波那契数列的第N项

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1242 基准时间限制:1 秒 空间限制:131072 KB 分值: 0  ...

  7. HDU 4534

    AC自动机+状态DP. 虽然很明显的AC自动机+状态DP题,但要分析问题上还是欠缺一点了.一直在犹豫枚举每一个字符选或不选的状态会不会超时,以为会达到状态有2^n,但其实根本没有.因为有很多状态是可以 ...

  8. [Vue-rx] Access Events from Vue.js Templates as RxJS Streams with domStreams

    The domStreams component property enables you to access Events from your Vue.js templates as Streams ...

  9. poj 1837 Balance (0 1 背包)

    Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10326   Accepted: 6393 题意:给你n个挂 ...

  10. 浏览器最小字体小于12px解决方案

    <style> p{font-size:10px;-webkit-transform:scale(0.8);} /*这里的数字0.8,是缩放比例,可以根据情况变化.*/ </styl ...