博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UML中的几种关系(UML Relationships)
阅读量:6231 次
发布时间:2019-06-21

本文共 1153 字,大约阅读时间需要 3 分钟。

依赖(Dependency)

依赖可以理解为一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用。

图形表示如下:

代码实现如下(C#):

(PS:企鹅依赖于气候,一但南极春天到来,温度小于-10度后,它们将集体迁移到北极去。)

关联(Association ))

关联和泛化是依赖的两种特别形式,关联分为单向关联和双向关联,单向关联是指某一个类中包含另一个类的全部或一部份,而被包含的类是不知道另一个类的存在。双向关联是指两个类中互相包含或引用,它们彼此都知道对方的存在。

用图形表示如下(双向关联) :

PS:上图显示了两个类的双向关联的关系,一本书可以由多个作者编写,一个作者也可以编写多本书。

用代码实现如下:

(PS:一个作者可以写多本书,同样,一本书可以被多个作者编写)

关联类(Association Class)

关联类本质上是一个类附加在一个关联中,被用来作为UML类来建模一种关联关系,它有其自己的名称,属性和方法。然而,它所描述的属性并不属于关联中的对象。比如:一个员工类与一个公司类产生一个合同类的关联后,合同类中的签字日期 这个属性并不属于员工类或公司类。

用图形表示如下:

聚合(Aggregation)

聚合是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。同时,是一种弱的 拥有 关系。体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。

用图形表示如下:

   

(PS:一个教授拥有一个班级,一个班级至少由一个学生组成:整体 ---> 个体,班级中少一个学生或多一个学生,这将不会直接影响到这种聚合关系)

组合(composition)

组合是关联关系的一种,比聚合关系更强,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。组合关系是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。

用图形表示如下:

PS:一台电脑由cpu 和其它部件组成,当CPU的生命周期结束后,组合的关系将不存在,computer类的生命周期也将结束。比如:拿掉cpu,电脑将无法再执行程序)

转载于:https://www.cnblogs.com/youshan/p/4487302.html

你可能感兴趣的文章
win11.2.0.4lsnrctl status hang
查看>>
黑盒测试实践作业进度报告(周四)
查看>>
json和jsonp
查看>>
js form表单 鼠标移入弹出提示功能
查看>>
机器学习(一)
查看>>
.NET Framework 简介
查看>>
VMWare 虚拟机
查看>>
DHCP 协议 1
查看>>
django配置一个网站建设
查看>>
Window 消息大全
查看>>
EM算法
查看>>
lstm clip
查看>>
vue腾讯地图的的应用
查看>>
Linux下编译程序时,经常会遇到“undefined reference to XXX” 报错,
查看>>
hdu3065 AC自动机
查看>>
leetcode 215 第K个最大的元素
查看>>
读书笔记之:C++标准程序库(2)
查看>>
override和new的区别【摘】
查看>>
阿里云服务器上使用apt-get install出现404 Not Found
查看>>
很简单的一个C for testing
查看>>