UML中的四大关系
来源:互联网 发布:淘宝聚划算怎么买东西 编辑:程序博客网 时间:2024/05/16 16:06
在今天的这篇博文中,我来向大家介绍一下在UML学习中四大关系:关联关系(普通关联关系/聚合关系/组合关系)、依赖关系、泛化关系、实现关系。这些关系集中体现在UML中的类与类、类与接口、接口与接口之间的相互联系中。
依赖(Dependency)关系:
1.UML表示法:虚线+箭头
2.关系:“…use a…”
3.解释:是类与类之间连接的一种,表示一个类依赖于另一个类的定义。简单的理解,就是一个类A使用了另一个类B,类B只是作为一个工具被A使用。
4.释义:一个人想要过河,但是需要一条船,那么人要想过河就得依赖一条船的作用,所以此时人与船之间的关系就是依赖;
泛化(Generalization)关系:
1.UML表示法:实线+空心箭头
2.关系:“…is kind of…”
3.解释:也称继承关系,是一个类(称为子类/子接口)继承另外的一个类(称为父类/父接口)的功能。继承是类与类或者接口与接口之间最常见的关系;
4.释义:汽车是交通工具的一种,也就是汽车类继承了交通工具类。此时汽车与交通工具之间的关系就是继承。
实现(Realization)关系:
1.UML表示法:虚线+空心箭头
2.关系:“…realize…”
3.解释:指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。也就是元素A定义一个约定,元素B实现这个约定,则A与B的关系即为实现:Brealize A。
4.释义:人要参加一个活动,就必须遵守这个活动的一些约定,比如用餐。
关联(Association)关系:
一.基本关联(Association)关系:
1.UML表示法:实线+箭头
2.关系:“…has a…”
3.解释:表示类与类之间的联接,所谓的关联就是某个对象会长期的持有另一个对象的引用,使一个类知道另一个类的属性和方法,而二者的关联往往也是相互的。但是关联的两个对象彼此间没有任何强制性的约束。可以用单双箭头表示单向或双向关联,不建议使用双向关联。在关联的两个端点,每个端点可以有一个基数,表示这个关联的类可以有几个实例。
常见的基数及含义:
0..1…0或者1个实例
0..*…对实例的数目没有限制
1…只能有一个实例
1..*…至少有一个实例
4.释义:一个人可以有很多朋友,然而没有理由认为朋友的生死与我的生死有必然的联系,所以他们的生命期没有关联,而且我的朋友又可以是别人的朋友。
二.聚合(Aggregation)关系:
1.UML表示法:空心菱形+实线+箭头
2.关系:整体-部分
3.解释:是强的关联关系,是整体和个体之间的关系,但是整体与部分之间是可以分离的,有各自的生命周期,部分可以属于多个整体对象
4.释义:比如机器和引擎,计算机和CPU,公司与员工之间的关系。
三.组合(Composition)关系:
1.UML表示法:实心菱形+实线+箭头
2.关系:“…is a partof…”
3.解释:是比聚合关系还强的一种关联关系,也是整体和部分的关系,但是代表整体的对象负责代表部分的对象的生命周期。如果整体不存在,则部分一定不存在。即部分不可以脱离整体而存在。
4.释义:比如List和node,没有List则node不复存在。或者人与其大脑。
至此,在UML中所涉及到的各种关系都已经讲述完毕,这样看来各种关系在类别上可以分为两种:纵向关系和横向关系,纵向关系就是继承关系,概念非常明确;横向关系就比较微妙,按照UML的建议大体上可以分为四种:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition)。
他们之间的强弱关系是没有异议的:依赖<关联<聚合<组合。
然而他们之间的差别却需要我们好好体会,在实践中长经验。
- UML中的四大关系
- UML中的四大关系
- UML中的四大关系
- UML中的四大关系
- UML中的四大关系
- UML— 四大关系
- UML之四大关系
- UML四大关系篇
- UML:UML中的关系
- [UML]UML中的关系
- UML 之 UML中的关系
- 实例解析四大UML类关系图
- 区分四大UML类图关系
- UML中四大关系的理解
- UML中的关系定义
- UML中的关系定义
- UML中的几个关系
- UML中的六大关系
- HDU 4571——Travel in time(dp)
- 开始学习php源码
- UIViewController/uinavigationcontroller
- mysql系列:ddl数据库定义+sql操作语句
- arm-linux-gcc工具链下载
- UML中的四大关系
- 复杂流程设置
- 交互设计学习笔记(一)
- 归属地查询代码
- 下发任务设置
- Java 7之多线程线程池 - Callable和Future
- 从中医的角度认识感冒
- Error处理:Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException.
- 在VS2010中调用MATLAB内建函数