UML类图中的四种关系深入剖析

开发 架构
UML类图你是否熟悉,这里就向大家介绍一下UML类图中的四种关系,相信通过本文的介绍大家对UML类图有更加深刻的认识,欢迎大家一起来学习UML类图。

本节和大家一起看一下UML类图中的关系,UML类图中的关系分为四种:泛化、依赖、关联、实现,希望通过本节的介绍大家对UML类图关系有清晰的认识,下面就让我们一起来看一下它的四种关系吧。

UML类图中的关系

UML类图中的关系分为四种:泛化、依赖、关联、实现;关联关系又可以细化为聚合和组合。

1.泛化(Generalization)

UML类图中的泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。

2.依赖(Dependency)

依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用。

通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数。

如果模块A调用模块B提供的方法,或访问模块B中的某些数据成员(当然,在面向对象开发中一般不提倡这样做),我们就认为模块A依赖于模块B,模块A和模块B之间发生了耦合。

3.关联(Dependency)

关联是一种结构化的关系,指一种对象和另一种对象有联系。给定有关联的两个类,可以从一个类的对象得到另一个类的对象。UML类图中关联有两元关系和多元关系。两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。一般用实线连接有关联的同一个类或不同的两个类。当你想要表示结构化关系时使用关联。

关联关系是通过类的成员变量来实现的。

3.1聚合(Aggregation)

聚合是一种特殊的关联。它描述了“hasa”关系,表示整体对象拥有部分对象。

关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。聚合是较强的关联关系,强调的是整体与部分之间的关系。

与关联关系一样,聚合关系也是通过类的成员变量来实现的。

3.2组合(Composition)

组合是聚合的一种形式,它具有更强的拥有关系,强调整体与部分的生命周期是一致的。整体负责部分的生命周期的管理。如果整体被销毁,部分也必须跟着一起被销毁,如果所有者被复制,部分也必须一起被复制。

与关联关系一样,组合关系也是通过类的成员变量来实现的。

聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。

4.实现(Realization)

UML类图中第四种关系就是实现,实现关系指定两个实体之间的一个合约。换言之,一个实体定义一个合约,而另一个实体保证履行该合约。

类间关系有很多种,在大的类别上可以分为两种:纵向关系、横向关系。

纵向关系就是继承关系,它的概念非常明确,也成为OO的三个重要特征之一,这里不过多的讨论。

横向关系较为微妙,按照UML的建议大体上可以分为四种:

依赖(Dependency)

关联(Association)

聚合(Aggregation)

组合(Composition)

它们的强弱关系是没有异议的:依赖<关联<聚合<组合<泛化(继承)

在UML系统开发中有三个主要的模型:
功能模型:从用户的角度展示系统的功能,包括用例图。
对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括UML类图。
动态模型:展现系统的内部行为。包括序列图,活动图,状态图。

【编辑推荐】

  1. 利用UML类图进行系统建模技巧详谈
  2. 使用UML类图进行Java应用程序设计
  3. UML用例图用法实例剖析
  4. 术语汇编 UML统一建模语言简介
  5. 利用UML类图设计Java应用程序详解


 

责任编辑:佚名 来源: csdn.net
相关推荐

2010-06-09 10:04:59

UML类图

2010-06-28 16:54:49

UML类图关系

2010-06-12 18:12:34

UML类图关系

2010-07-08 15:56:52

UML类图依赖关系

2010-07-09 13:55:53

UML面向对象建模

2010-06-29 12:55:44

UML类图依赖关系

2010-06-17 09:48:54

UML动态建模

2010-07-02 14:34:53

UML类图

2010-07-05 15:26:03

UML九种视图

2010-06-18 14:43:28

UML关系图

2010-07-08 11:20:13

UML动态建模

2010-06-29 09:08:15

UML类图关系

2010-06-17 18:57:11

UML对象关系

2010-06-12 14:35:46

UML对象图

2010-07-07 17:36:35

UML序列图

2010-06-17 14:35:03

设计模式 UML

2010-07-07 10:23:31

UML建模

2010-06-29 13:11:40

UML类图依赖关系

2010-07-07 11:02:47

UML类图关系

2010-07-05 09:34:45

UML类关系图
点赞
收藏

51CTO技术栈公众号