关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等等。在UML类图中,用实线连接有关联关系的对象所对应的类。 通常将一个类的对象作为另一个类的成员变量。在使用类图表示关联关系时可以在关联线上标注角色名,一般使用一个表示两者之间关系的动词或者名词表示角色名(有时该名词为实例对象名),关系的两端代表两种不同的角色,因此在一个关联关系中可以包含两个角色名,角色名不是必须的,可以根据需要增加,其目的是使类之间的关系更加明确。

单向关联

一个只包含另一个的关系为单向关联,也就是一厢情愿。

class Button
{
public:
...
};class View
{
private:Button btn;
};

双向关联

也就是类与类之间相互包含彼此相辅相成而存在,就好比夫妻关系一样,好朋友的关系一样,你是我的好朋友,我也是你的好朋友等等。

class Wife
{
public:void make_baby(...);
private:Husband* self_husband;
};
class  Husband
{
public:void work(...);
private:Wife*   self_wife;
};

自关联

在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联 。这种关系表现为递归关系,如目录结构等等

class Tree
{
public:Tree*    left;Tree*  right;
private:int data;
};

多重性关联

多重性关联关系又称为重数性(Multiplicity)关联关系,表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示

class People
{
public:void work();
};class Factory
{
protected:std::list<People> workers;
};

聚合关系

聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示

class Bullet
{
public:void boom();
};
class Tank
{
public:Tank(Bullet* b);void setBullet(Bullet*);void shoot();
protected:Bullet* current_bullet;
};

组合关系

组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。在UML中,组合关系用带实心菱形的直线表示

class Eyes
{
public:void blink();
};
class People
{
public:Eyes eyes;
};

转载于:https://my.oschina.net/pirtt/blog/898673

UML类图之关联关系相关推荐

  1. 快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图

    快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图 前言 一.UML类图简介 二.类之间的六大关系及UML类图 1.依赖关系及UML类图表示 2.泛化关系及UML类图表示 3.实现关系及UM ...

  2. [UML] 类图之间的关系 | 1.关联关系

    [UML] 类图之间的关系 | 1.关联关系 1.关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系 在UML类图中, ...

  3. UML类图新手入门级介绍

    UML类图新手入门级介绍 看了大话设计模式,觉得很生动形象,比较适合于我这种初学者理解面向对象,所以就记录了一下. 举一个简单的例子,来看这样一副图,其中就包括了UML类图中的基本图示法. 首先,看动 ...

  4. 从零开始单排学设计模式「UML类图」定级赛

    阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...

  5. UML类图关系大全 and 报表的基本用法

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...

  6. uml 类图_UML 类图

    UML 类图基本符号 UML 类图基本符号含义 1.类(Class):一般是用三层矩形框表示,第一层表示类的名称,第二层表示的是字段和属性,第三层则是类的方法.第一层中,如果是抽象类,需用斜体显示. ...

  7. 【系统分析与设计】UML类图绘制方法(真の能看懂~!)

    文章目录 1 类的基本表示方式 2 类之间关系的表示方式 所有的面向对象(Object Oriented)语言都离不开类的概念,理解了程序中类的设计也就理解了程序的一半.但类的具体描述方式在各个类中都 ...

  8. 区分 UML 类图中的几种关系

    区分 UML 类图中的几种关系   2010-12-23 作者:fnw 来源:网络      区分 UML 类图中的几种关系  UML 类图中的 "关联关系(association) &qu ...

  9. UML类图与类的关系详解

    UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...

最新文章

  1. left join 和 left outer join 的区别
  2. thinkphp-条件判断-范围判断-range标签
  3. Apache下的ArrayUtils工具类总结
  4. 第 2 章:初出茅庐【初级篇 - 2.3 动态规划】
  5. 缓冲流、转换流、序列化流
  6. Java函数式编程:Javaslang入门
  7. SparkCore基础
  8. Flash动画制作实例教程
  9. COAP协议全面分析
  10. 实用小软件实现Mac读写ntfs U盘 移动硬盘
  11. 青蛙Pro绑定商户号(windows)
  12. 高光谱图像算法实习工程师面经
  13. 量子研究再获突破能否成功解决核潜艇通信难题?
  14. 在北京坐公交和大人流量地铁站换乘
  15. notify()和notifyAll()有什么区别?
  16. 观点:开放式元宇宙将释放每个人的创造力
  17. yolov5安装与环境配置
  18. Android音频子系统(十一)------耳机返听(耳返)原理实现
  19. springboot出现“org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?“的解决办法
  20. 【Pytorch】| Pytorch中softmax的dim的详细总结

热门文章

  1. Bugku-杂项-怀疑人生;红绿灯
  2. PDF批量加水印加密丨Acrobat Pro DC
  3. mysql if countif_通配符+countif()解决大于15位数的计数问题
  4. 每天提醒自己学习的软件?每天提醒学习任务怎么设置?
  5. python知识笔记_python笔记(1)--基础知识
  6. 31页大数据治理管理平台解决方案合集
  7. 最美中式别墅 | 与你相逢,诗意隽永心驰神往
  8. 出现Permission denied的解决办法
  9. admin密码对应的MD5值
  10. matlab如何进对图像进行透视变换,如何根据已知的内在和外在参数在Matlab中进行透视校正?...