`

UML 依赖 关联 聚合 组合

    博客分类:
  • java
UML 
阅读更多

<1>依赖

依赖关系用虚线加箭头表示,如图所示:

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

上图表示:Animal类依赖于Water类(动物依赖于水)。

依赖是类的五种关系中耦合最小的一种关系。因为依赖关系在生成代码的时候,这两个关系类都不会增加属性。这种微弱的关系可以用类之间的相互了解的程度来说明。(下图为代码生成图)

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

                      

由上图可见生成的代码中Animal类的属性中没有增加Water类。那么Animal类如何使用Water类呢,有三种方式:

依赖关系的三种表现形式:

     Water类是全局的,则Animal类可以调用它

     Water类是Animal类的某个方法中的变量,则Animal类可以调用它。代码演示如下:

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

PS:Animal有一个长大(GrownUp)方法,Water类作为该方法的变量来使用。
          请注意Water类的生命期,它是当Animal类的GrounUp方法被调用的时候,才被实例化。
         持有Water类的是Animal的一个方法而不是Animal,这点是最重要的。

     Water类是作为Animal类中某个方法的参数或者返回值时。代码演示如下

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

 

 

无用多说,Water类被Animal类的一个方法持有。生命期随着方法的执行结束而结束。

 

在依赖关系中,必须采用这三种方法之一。

 

<2>关联

关联是实线加箭头表示。表示类之间的耦合度比依赖要强。

例:水与气候是关联的,表示图如下

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

生成代码如下:

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

可见生成的代码中,Water类的属性中增加了Climate类。

关联既有单向关联又有双向关联。

单向关联:Water类和Climate类单向关联(如下图),则Water类称为源类,Climate类称为目标类。源类了解目标类的所有的属性和方法,但目标类并不了解源类的信息。

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

双向关联:源类和目标类相互了解彼此的信息。如将Water类和Climate类之间改为双向关联,如下图     UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客     UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

依赖和关联的区别:

     从类的属性是否增加的角度看:

发生依赖关系的两个类都不会增加属性。其中的一个类作为另一个类的方法的参数或者返回值,或者是某个方法的变量而已。

发生关联关系的两个类,其中的一个类成为另一个类的属性,而属性是一种更为紧密的耦合,更为长久的持有关系

     从关系的生命期角度看:

依赖关系是仅当类的方法被调用时而产生,伴随着方法的结束而结束了。

关联关系是当类实例化的时候即产生,当类销毁的时候,关系结束。相比依赖讲,关联关系的生存期更长。

 

关联关系的细化

关联关系又可以细化为聚合关系和组合关系

聚合关系图:

             UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

组合关系图:

                   UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

l       聚合和组合的区别:

由于聚合和组合都是特殊的关联关系,在生成的代码上看不出区别,都是关联的形式。那到底这两种关系如何来区分呢。

区分的关键有两点:

     构造函数不同

聚合关系下:雁群类(GooseGroup)和大雁类(Goose)代码如下:

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

组合关系下:大雁类(Goose)和翅膀类(Wings)代码如下:

  UML 依赖 关联 聚合 组合 - sundensky - 丁成云的博客

这两种关系的区别在于:

①构造函数不同

     聚合类的构造函数中包含了另一个类作为参数。

雁群类(GooseGroup)的构造函数中要用到大雁(Goose)作为参数传递进来。大雁类(Goose)可以脱离雁群类而独立存在。

     组合类的构造函数中包含了另一个类的实例化。

表明大雁类在实例化之前,一定要先实例化翅膀类(Wings),这两个类紧密的耦合在一起,同生共灭。翅膀类(Wings)是不可以脱离大雁类(Goose)而独立存在

     信息的封装性不同

在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的

而在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀类被严密的封装在大雁类中。

分享到:
评论

相关推荐

    UML中依赖泛化关联实现聚合组合的C#实现

    UML 中依赖泛化关联实现聚合组合的 C# 实现 UML 中类图是软件设计中最重要的工具之一,它能够帮助我们更好地设计和管理软件系统。今天,我们将讨论 UML 中的依赖泛化关联实现聚合组合的 C# 实现。 首先,让我们...

    UML中继承实现依赖关联聚合组合的联系与区别_线条箭头.doc

    UML 中继承、实现、依赖、关联、聚合、组合的联系与区别 UML 中的继承关系是指一个类继承另外一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。在 Java 中此类关系通过...

    UML关系(泛化,实现,依赖,关联(聚合,组合))

    UML关系(泛化,实现,依赖,关联(聚合,组合))

    UML中依赖泛化关联实现聚合组合的Java实现

    ### UML中依赖、泛化、关联、聚合与组合的Java实现详解 #### UML基础知识概览 统一建模语言(UML)作为一种图形化的标准化建模语言,为软件开发提供了强大的可视化工具,帮助开发者理解、设计和记录软件系统。UML...

    UML学习之依赖_关联_聚合_组合_继承

    ### UML学习之依赖、关联、聚合、组合与继承 #### 一、泛化(Generalization) **概念:** 泛化表示的是类与类之间的继承关系、接口与接口之间的继承关系,或者是类对接口的实现关系。在UML中,泛化关系通常用一个带...

    UML类关系-依赖,关联,聚合和组合

    UML类关系-依赖、关联、聚合和组合 UML(Unified Modeling Language)是软件设计领域中的一种标准化建模语言,用于描述软件系统的结构、行为和架构。UML类关系是UML中的一种基本概念,描述了类之间的关系。今天,...

    UML类关系:依赖、关联、聚合、组合

    本文将深入探讨UML类关系中的四种关键概念:依赖、关联、聚合和组合,以及它们在软件设计中的应用。 1. 依赖(Dependency) 依赖是UML中最弱的一种关系,表示一个类(或对象)的实现或行为需要另一个类(或对象)的...

    UML统一建模语言中依赖泛化关联实现聚合组合的C#实现_配UML图.doc

    本文将详细探讨UML中的一些关键概念,包括依赖、泛化、关联、聚合、组合以及实现,并结合C#语言给出具体实现示例。 1. 泛化(Generalization): 泛化关系在UML中代表了继承,它表示一个类(子类)继承自另一个类...

    [#0x003B] UML类图之关联、聚合、组合、依赖

    在这篇博客“#0x003B UML类图之关联、聚合、组合、依赖”中,作者探讨了类图中的四种主要关系:关联、聚合、组合和依赖,这些都是理解面向对象设计的关键概念。 关联是UML类图中最基本的关系,表示两个或多个类之间...

    UML类图关系大全(关联、组合、聚合、依赖、泛化)

    本篇文章将深入探讨UML类图中的五种主要关系:关联、组合、聚合、依赖和泛化,以及它们在实际编程中的应用。 **关联** 是类之间的一种结构关系,表示类之间的连接或相互作用。它通常用一条实线表示,可以是单向或...

    UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

    在UML中,有六种主要的类间关系:继承、实现、依赖、关联、聚合和组合。理解这些关系对于设计高质量的软件架构至关重要。 1. **继承**: 继承是类与类之间的一种层次结构关系,表示一个类(子类)可以从另一个类...

    UML 继承,实现,依赖,关联,聚合

    本文将深入探讨UML中的五个关键关系:继承、实现、依赖、关联和聚合,以及它们在软件设计中的作用。 1. **继承(Inheritance)**: 继承是面向对象编程的核心概念之一,它允许一个类(子类或派生类)从另一个类...

    UML类图关系泛化、继承、实现、依赖、关联、聚合、组合.doc

    UML类图关系泛化、继承、实现、依赖、关联、聚合、组合 UML类图关系是Unified Modeling Language(统一建模语言)的核心概念之一,用于描述系统中的对象之间的关系。本文将对UML类图关系中的泛化、继承、实现、依赖...

    UML中关联、泛化、依赖、实现的几种关系.docx

    UML 中关联、泛化、依赖、实现的几种关系 UML(Unified Modeling Language)是一种通用的建模语言,广泛应用于软件设计、开发和测试等领域中。在 UML 中,有多种关系来描述类之间的关系,包括关联、泛化、依赖、...

    UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合).doc

    UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合).doc

    几种类间关系:继承、实现、依赖、关联、聚合、组合

    几种类间关系:继承、实现、依赖、关联、聚合、组合。可做为开发设计时速查手册。

    UML 类图 关系 大全 泛化、关联、依赖等

    UML 类图关系大全中有多种关系,包括泛化、关联、依赖、聚合、组合等。 1. 关联关系 关联关系是类图中最基本的关系类型。它描述了类之间的相互关系,可以是单向的,也可以是双向的。双向关联关系表示两个类之间的...

    UML继承聚合泛化依赖的实用解释[收集].pdf

    在UML(统一建模语言)中,有几种关键的关系类型用于描述系统中类与类之间的关系,包括继承、聚合、泛化和依赖。这些关系是面向对象设计的基础,帮助我们理解不同对象如何共享特性、组合成更复杂的结构以及相互作用...

    [面试/笔试系列6]关联、聚合(Aggregation)以及组合(Composition)的区别

    ### 关联、聚合(Aggregation)以及组合(Composition)的区别 在面向对象设计中,类之间的关系是非常重要的概念。这不仅有助于理解系统架构,还能帮助开发者更好地组织代码。本篇文章将详细探讨关联、聚合...

    UML 类图 大全 带图说明

    关联、聚合/组合和依赖是描述类之间关系的不同类型,反映了类与类之间在逻辑和语义上的不同层次的联系。在实际建模中,理解这些关系的含义和区别,可以帮助我们更准确地表达系统的结构和行为。这些关系并不是孤立的...

Global site tag (gtag.js) - Google Analytics