在UML的定义中,描写叙述类和对象之间的关系,包含下面几种方式:依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Composition)、泛化(Generalization)和实现(Realization)。现分别说明例如以下:

1.依赖(Dependency)

在uml中,“依赖”表示为带箭头的虚线,箭头指向被依赖的元素。是类与类之间的连接,表示为一个类依赖于还有一个类的定义,当中一个类的变化将影响还有一个类。依赖总是单向的,不应该存在双向依赖,这一点要特别注意。更详细的说,依赖能够理解为:一个类(A)对不在事实上例作用域内的还有一个类或对象(B)的不论什么类型的引用。大致包括下面几种情况:

(1)局部变量;

(2)方法的參数;

(3)静态方法的调用;

以下是依赖关系的uml示意图:

2.关联(Association)

在uml中,关联表示为带箭头的实线。关联能够是单向的,也能够是双向的。假设是双向关联,则能够表示为双向箭头,或者没有箭头。一般来说,系统设计应表现为单向关联,这样利于维护。一个关联能够附加“多重性”的修饰符,表示两个类之间的数量关系。关联能够理解为:一个类(A)持有还有一个类或对象(B)。详细表现为:

(1)成员变量

以下是关联关系的uml演示样例图:

上面的关联表示,一个Employee持有(has)0个或多个TimeCard。

3.聚合(Aggregation)

在uml中,聚合关系表示为空心的菱形箭头线。聚合关系是关联关系的一种,表示一种“强”关联关系。对照与关联关系,两个类是处于同一个层次的。而聚合关系,两个类处于不同的层次,强调了一个总体/局部的关系。比如一辆汽车有一个引擎,4个轮胎。

在聚合关系中,体现了一种“弱拥有”的概念。也就是说,对象A拥有对象B,但B并非A的组成部分。更详细的表现为,假设A由B聚合而成,则A包括B的全局对象,但B对象能够不在A对象创建时创建。回到前面的样例,汽车对象由轮胎对象聚合而成,可是轮胎对象的生命期并不受汽车对象的左右。当汽车对象销毁时,轮胎对象也能够单独存在!

以下是聚合关系的uml示意图:

从代码上看,聚合和关联没有不论什么差别。这里只体现一种概念上的含义。在创建ClassA的时候,不一定须要同一时候创建ClassB的实例。

4.组合(Composition)

在uml中,组合关系表示为实心菱形箭头线。组合也叫合成。合成关系强调了比聚合关系更加强的总体/部分的关联,比如人和四肢。和聚合关系所不同的是,在组合关系中,尽管局部不一定随着总体的销毁而销毁,但总体要么负责保持局部的存活状态,要么负责将其销毁。也就是说,组合关系中,局部的存活期一定是小于,最多是等于总体的存活期的。

以下是组合关系的uml演示样例图:

 

5.泛化(Generalization)与实现(Realization)

泛化也就是通常所谓的继承关系,在uml中表示为一个带空心三角的实线。表示为is-a的关系,是对象间耦合度最大的一种关系,子类继承父类的全部细节,并能够在此基础上加入自己的特性。

以下是泛化关系的uml图:

所谓实现就是对接口的定义实现,非常easy。表现为带箭头的虚线。以下的实现的uml图:

UML中类图的符号解释的更多相关文章

  1. 北风设计模式课程---UML类图各符号含义

    北风设计模式课程---UML类图各符号含义 一.总结 一句话总结: 用脑子,挺好记的:实线关系肯定比虚线重,箭头.三角形.菱形的关系肯定依次加重,三角形是继承和实现, 1.UML类图中 线+箭头 表示 ...

  2. UML中类图的一些基本知识

    一.类 类(class)封装了数据和行为,是面向对象的重要组成部分,他是具有相同操作.属性.关系的对象集合的总称. 在软件运行时,类被实例化成对象(object),对象对应某个具体的事物,是类的实例( ...

  3. UML中类图(Class Diagram)的关系整理

    什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包 ...

  4. UML中类图的四种关系及其代码实现

    在uml图中 最复杂的也就是泛化,实现.依赖,关联.这四种关系了,假设弄清了这几种关系那么在理解UML图的时候就会变得轻车熟路了! 假设你对着几种关系一点都不熟悉的话能够看一下uml中的四种关系.这篇 ...

  5. 第一章 简单工厂模式 及 UML中类图的表示方法

    写一个简单计算器程序时,可以写一个操作类,然后加.减.乘.除操作分别继承它,复写操作计算结果的方法.写一个简单工厂类,通过输入的操作符,使用操作类来new一个相应的操作类的子类对象.这样,工厂就实例化 ...

  6. UML类图详解

    下面是类图的实例: (注:飞翔接口那里应为空心三角形) UML中类图实例 接口:空心圆+直线(唐老鸭类实现了‘讲人话’):依赖:虚线+箭头(动物和空气的关系):关联:实线+箭头(企鹅需要知道气候才迁移 ...

  7. 什么是UML类图

    百度了下,看评论不错我就收藏了,学习,真心不懂!!! 首先是复习一下UML中九种图的理解:http://xhf123456789plain.blog.163.com/blog/static/17288 ...

  8. UML 类图常用表示方法.

    UML中类图实例 接口:空心圆+直线(唐老鸭类实现了‘讲人话’): 依赖:虚线+箭头(动物和空气的关系): 关联:实线+箭头(企鹅需要知道气候才迁移): 聚合:空心四边形+实线+箭头(雁群和大雁的关系 ...

  9. 【转载】UML类图中箭头和线条的含义和用法

    文章转载自 http://blog.csdn.net/hewei0241/article/details/7674450 https://blog.csdn.net/iamherego/article ...

随机推荐

  1. 向架构师进军--->系统架构设计基础知识

    假设你对项目管理.系统架构有兴趣,请加微信订阅号“softjg”,增加这个PM.架构师的大家庭 在解说系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师和架构设计等相关的概 ...

  2. .cmd文件与.bat文件

    .cmd文件与.bat文件的区别 包括ASSOC.FTYPE.APPEND.PATH.PROMPT.SET等6个命令在.bat和命令行环境下与.cmd环境下的执行表现不尽相同在.cmd环境下这些命令无 ...

  3. 基于visual Studio2013解决面试题之0901奇偶站队

     题目

  4. Android 调整屏幕分辩率

    Android 可设置为随着窗口大小调整缩放比例及设定fixed的窗口大小. 对于surface的控制在SurfaceHolder类中进行 而Android 屏幕分辩率中已经有一个类DisplayMe ...

  5. Twenty Newsgroups Classification任务之二seq2sparse

    seq2sparse对应于mahout中的org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles,从昨天跑的算法中的任务监控界面可以看到 ...

  6. 读书与写论文的引导书——leo鉴书60

    我是专科直接考的研究生.在论文写作方面基本能够算是初级.MBA毕业那会儿要写论文,在网上找了不少这方面的书,<论文与治学>是当中之中的一个. 这本那时为应景儿卖的书,成了我之后学习与工作的 ...

  7. Oracle的序列

    Oracle的序列 序列介绍 序列是Oracle提供的用于产生一系列唯一数字的数据库对象. 使用序列能够实现自己主动产生主键值.序列也能够在很多用户并发环境中使用.为所实用户生成不反复的顺序数字,并且 ...

  8. windows live writer插件说明文档(附录网盘地址)

    百度云地址:http://pan.baidu.com/s/1hqnjzjY 1.Screen Capture tool 用于直接在WLWriter中进行截图的一个插件,要配合SnagIt 这个软件使用 ...

  9. java http 分段下载

    http://www.iteye.com/topic/1136815 http://www.iteye.com/topic/1128336 http://blog.chinaunix.net/uid- ...

  10. Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary lo

    mysql> show slave status\G *************************** 1. row ***************************         ...