在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. PHP - 代码分离

    总代码: <?php /* * Version:1.0 * CreateTime:2015年11月11日 * Author:HF_Ultrastrong *///引入公共文件,在公共文件中创建, ...

  2. Excel 公式(细节若干)

    查找与引用: 1.如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用 MATCH 函数而不是 LOOKUP 函数. 2.VLOOKUP的第一个参数允许使用通配符“*”来表示包含的意思,把*放在字 ...

  3. semaphore实现浏览器的读写原理

    在编程范式中的斯坦福大学的老师说了一个例子:好比世界上就只有一台互联网的服务器,当我们浏览网页的时候,就好比服务器进行了写操作,而浏览器则进行了读操作. 我如果用简单的伪代码c++写出来是这个样子的: ...

  4. c# 调用外部exe程序

    c#调用外部exe程序,首先要 using System.Diagnostics; 然后开启一个新process System.Diagnostics.ProcessStartInfo p=null; ...

  5. 初入Android--环境搭建

    Android SDK 可以下载adt-bundle:包含了装好插件的eclipse和android sdk.下载好后,首先设置ANDROID_HOME环境变量:ANDROID_HOME=/home/ ...

  6. 细节!重点!易错点!--面试java基础篇(二)

    今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断 ...

  7. 组件状态(TComponentState)11种和组件状态(TComponentStyle)4种

    TOperation = (opInsert, opRemove); TComponentState = set of ( csAncestor The component was introduce ...

  8. Silverlight技术调查(4)——完成的调查结果

    原文 Silverlight技术调查(4)——完成的调查结果 客户端使用Silverlight+DXperience,可以在线编辑各种常见文本及富文本文档(doc.docx.rtf.txt.html… ...

  9. inode结构体成员详解

    概述:inode译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间.档名.使用者及群组等.inode分为内存中的inode和文件系统中的inode,为了避免混淆,我们称前者为VFS ino ...

  10. UVA它11292 - Dragon of Loowater

    Problem C: The Dragon of Loowater Once upon a time, in the Kingdom of Loowater, a minor nuisance tur ...