`

UML类图符号 各种关系说明以及举例

 
阅读更多

UML类图符号 各种关系说明以及举例

 

UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。

  • 依赖Dependency:元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。
  • 泛化(Generalization:通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml中用带空心箭头的实线线表示Generalization关系,箭头指向一般个体。
  • 实现(Realize:元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,B realize A。这个关系最常用于接口。uml中用空心箭头和虚线表示Realize关系,箭头指向定义约定的元素。
  • 关联(Association:元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml中用实线表示Association关系,箭头指向被依赖元素。
  • 聚合(Aggregation:关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml中用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。
  • 合(Composition:组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml中用带实心菱形头的实线表示Composition关系,菱形头指向整体。

其中依赖(Dependency)的关系最弱,而关联(Association),聚合(Aggregation),组合(Composition)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的整体与部分关系的关联,而组合是表明整体与部分之间有相同生命周期关系的聚合。

而关联与依赖的关系用一句话概括下来就是,依赖描述了对象之间的调用关系,而关联描述了对象之间的结构关系。

后面的例子将针对某个具体目的来独立地展示各种关系。虽然语法无误,但这些例子可进一步精炼,在它们的有效范围内包括更多的语义。

1.1.1 依赖(Dependency):虚线箭头表示

1、依赖关系也是类与类之间的联结
2、依赖总是单向的。(#add 注意,要避免双向依赖。一般来说,不应该存在双向依赖。)
3、依赖关系在 Java 或 C++ 语言中体现为局部变量、方法的参数或者对静态方法的调用。

class Person

{

void buy(Car car)

{

...

}

}

 

虚线加箭头

1.1.2 关联(Association):实线箭头表示

1、关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法。
2、关联可以是双向的,也可以是单向的(#add还有自身关联)。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
3、在 Java 或 c++ 中,关联关系是通过使用成员变量来实现的。

 

class 徒弟

{

};

 

class 唐僧

{

protected: list<徒弟> tdlist;

};

 

 

1.1.3 聚合(Aggregation):带空心菱形头表示

1、聚合关系是关联关系的一种,是强的关联关系。
2、聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
3、聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
4、关联与聚合仅仅从 Java 或 C++ 语法上是无法分辨的,必须考察所涉及的类之间的逻辑关系。

class 引擎

{

};

 

class 轮胎

{

};

 

class 汽车

{

protected:引擎 engine;

protected:轮胎 tyre[4];

};

 

 

1.1.4 合成(Composition):带实心菱形头的实线表示

1、合成关系是关联关系的一种,是比聚合关系还要强的关系。
2、它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

class 肢

{

};

 

class 人

{

protected: 肢 limb[4];

};

一般是实心菱形加实线箭头表示

一般化关系(泛化和实现):表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化关系是子类指向父类的,或从实现接口的类指向被实现的接口,与继承或实现的方向相反。如下图所示:

 

 

 

 


图:一般化关系

1.1.5 泛化(Generalization):

带空心箭头的实线线表示

泛化(H)表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends关键字来直接表示这种关系。

泛化关系表示类与类之间的继承关系,接口与接口之间的继承关系。图H

 

 

1.1.6 实现(Realization):空心箭头和虚线表示

 

实例(I)关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。

图I

 

 

 

 

 

 

 

 

1、泛化(继承)
UML类图的符号 - xian_zx@126 - xian_zx@126的博客
实线箭头表示继承一个基类B类继承A

2、实现
UML类图的符号 - xian_zx@126 - xian_zx@126的博客
虚线箭头表示实现一个接口:C类实现接口Interface现在好像显示成线了没有了箭头

3、 关联
关联分为单向和双向关联两种。
关联和类的属性很相似
3.1 单向关联:仅能从一个类访问另一个类(前者的属性中有后者)
B类单向关联A类(B中有属性aA的对象)


UML类图的符号 - xian_zx@126 - xian_zx@126的博客

3.2
双向关联:两个类之间能相互访问(两个类的属性中都有对方)
B类关联A类(B中有属性aA的对象)
A类关联B类(A中有属性bB的对象的数组)
AB1n(n>0)的关联


UML类图的符号 - xian_zx@126 - xian_zx@126的博客
3.3 聚合关系
UML类图的符号 - xian_zx@126 - xian_zx@126的博客

由上图知道, Wheel类扮演wheels角色, 聚合4个到Car对象里面去
空心的菱形表示Wheel对象并不随Car的创建而创建,销毁而销毁。
3.4 组合关系
UML类图的符号 - xian_zx@126 - xian_zx@126的博客

由上图知道, Company类完全由Department对象组成。
实心菱形表示Department对象随Company对象的创建而创建,销毁而销毁。
4、 依赖
UML类图的符号 - xian_zx@126 - xian_zx@126的博客

依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。如果类A访问类B的属性或者方法,
或者类A负责实例化类B,那么可以说类A依赖类B。和关联关系不同,无须在类A中定义类B类型的属性。

分享到:
评论

相关推荐

    UML类图符号 UML类图符号 UML类图符号

    UML类图符号是 Unified Modeling Language(统一建模语言)的核心组成部分之一,用于描述系统中的类和对象之间的关系。类图是UML中的静态结构模型,用于描述系统中的类、对象、接口、继承、实现、关联、聚合、组合、...

    UML类图的各符号含义及表示

    类图是UML中最基础的图表之一,它用于描绘类与类之间的静态结构关系。下面我们将详细解释UML类图中各符号的含义。 1. 类(Class):在UML类图中,类通常用三层矩形表示。第一层写类的名称,如果类是抽象的,则名称...

    UML类图符号总结

    UML类图符号总结,包括UML类图符号的使用与定义,供大家一起共同分享学习。

    六大UML类图以及关系

    ### UML类图关系详解 #### 一、引言 UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的图形化语言,它帮助开发者理解和设计系统。其中,UML类图是最常用的一种图示方式,用于描述系统...

    UML类图说明类图关系

    本文旨在深入探讨UML类图中的各种关系类型及其在Enterprise Architect(简称EA)工具中的表现形式,并提供清晰的解释以帮助读者更好地理解和应用这些概念。 #### 二、类图基础 在开始讨论类图中的各种关系之前,...

    UML类图符号

    UML类图符号是Unified Modeling Language(统一建模语言)中的一个重要组成部分,它们用来描述类与类之间的关系。这些符号可以帮助开发人员更好地理解和设计软件系统。 类(Class) 在UML类图中,类用三层矩形框...

    JDK UML 类图大全

    UML通过各种图表,如类图、序列图、用例图等,来描绘系统的不同方面。 **JDK与UML类图** JDK(Java Development Kit)是Oracle公司提供的Java编程语言的官方开发工具包,包含了Java运行环境、编译器、调试器以及...

    UML类图符号简介

    UML类图是其中最重要的组成部分之一,用于可视化地展示系统中的类、接口以及它们之间的关系。本文将详细介绍UML类图中各类符号的意义及其应用场景。 #### 二、类(Class) 在UML类图中,类通常用三个部分组成的矩形...

    从UML类图到关系数据库表的代码生成方法

    从UML类图到关系数据库表的代码生成方法研究 UML(统一建模语言)是一种用于软件系统建模的标准化建模语言,它的类图是其中最常用的一种图示,用于表示系统中类的静态结构。关系数据库是目前主流的数据库管理系统,...

    spring源码全部uml类图

    此外,Spring还提供了对各种其他技术的支持,如缓存、任务调度、邮件服务等,这些都可以在UML类图中找到对应的类和接口。 通过深入研究Spring的UML类图,开发者不仅可以理解其设计理念,还能学习到如何使用面向切面...

    计算器 UML类图 c++

    首先,类图是UML中的核心概念之一,它展示了类的结构和关系。对于一个计算器应用,我们可以设想几个关键的类:`Calculator`(计算器)、`Expression`(表达式)、`Operand`(操作数)以及可能的`Operator`(运算符)...

    UML类图在关系数据库中的实现

    ### UML类图在关系数据库中的实现 #### 概述 在关系数据库设计过程中,实体关系模型(ER模型)作为一种标准方法被广泛采用以创建数据库的逻辑模型。然而,随着业务需求的日益复杂以及对数据模型灵活性的需求提高,...

    UML类图符号简介.docx

    UML类图符号简介.docx

    UML类图关系大全

    本文将详细介绍UML类图中的几种主要关系类型:关联、聚合/组合以及依赖,并通过具体的实例和代码示例来帮助读者更好地理解这些概念。 #### 二、关联 关联是UML中最基本的关系类型之一,用于描述两个类之间的连接。...

    uml 类图实例

    uml 类图实例 oom powerdesigner 绘制

    UML类图几种关系的总结

    UML类图是UML中最常用的一种图形化工具,用于描述系统的静态结构,包括系统中的类、接口以及它们之间的关系。在UML类图中,存在六种基本的关系类型:泛化、实现、关联、聚合、组合以及依赖。接下来,我们将详细介绍...

    eclipse画UML类图的jar包.zip

    UML类图是UML中的核心元素,它用于表示系统的静态结构,包括类、接口、继承关系、关联关系等。 这个压缩包包含以下三个文件: 1. net.java.amateras.xstream_1.3.4.jar:这是一个基于XStream库的Java类,用于对象...

    UML类图关系大全!!!!!

    通过“UML类图关系大全.doc”和“UML类图简介.doc”,你可以更详细地了解这些关系的图形表示、符号含义以及在实际设计中的应用。学习和熟练掌握这些关系对于理解和设计复杂的软件系统至关重要,因为它们有助于清晰地...

    UML类图中的类 抽象类,具体类,主动类等

    在UML(统一建模语言)中,类图是一种重要的模型表示工具,它用来描绘系统中的类、接口以及它们之间的关系。类图中的类扮演着核心角色,它们定义了系统的结构和行为。类可以分为抽象类和具体类,以及主动类和非主动...

    UML类图说明--各种UML元素的使用说明与示例

    以下是对UML类图中各种元素的详细说明: 1. 类(Class): 类通常用矩形表示,包含三个主要区域。第一层是类名,抽象类的名称用斜体表示。第二层是类的属性(Fields)和特性(Attributes),它们描述了类的数据...

Global site tag (gtag.js) - Google Analytics