`
jiagou
  • 浏览: 2530590 次
文章分类
社区版块
存档分类
最新评论

uml类图符号介绍

 
阅读更多

详解UML中的6大关系(关联、依赖、聚合、组合、泛化、实现) - eastnapoleon - Eastnapoleon

UML中的6大关系相关英文:

依赖关系

dependency

关联关系

association

聚合关系

aggregation

组合关系

composition

实现

realization

泛化

generalization

UML中的6大关系简单解释:关联:连接模型元素及链接实例,用一条实线来表示;依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示;聚合:表示整体与部分的关系,用一条实线加空心菱形来表示;组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示;泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示;实现:表示类与接口的关系,用一条虚线加空心箭头来表示;

注意:泛化关系和实现关系又统称为一般关系;

总之:一般关系表现为继承或实现(is a),关联关系、聚合关系、合成/组合关系表现为成员变量(has a),依赖关系表现为函数中的参数(use a);

UML中的6大关系详细说明:

1、关联关系:

含义:类与类之间的连结,关联关系使一个类知道另外一个类的属性和方法;通常含有“知道”,“了解”的含义

体现:在C#中,关联关系是通过成员变量来实现的;

方向:双向或单向;

图示:实线 + 箭头;箭头指向被关联的类;

举例:“渔民”需要知道“天气”情况才能够出海

//公司关联雇员

public class Company{

private Employee employee;

public Employee GetEmployee(){

return employee;

}

public void SetEmployee(Employee employee){

this.employee = employee;

}

//公司运作

public void Run(){

employee.StartWorking();

}

}

//A关联B

class A{

B b = new B();

}

class B{

}

2、依赖关系:

含义:是类与类之间的连接,表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系;

体现:在C#中体现为局部变量、方法/函数的参数或者是对静态方法的调用;

方向:单向;

图示:虚线 + 箭头;

举例:人依赖于水和空气;汽车依赖汽油

//人划船,人依赖于船

public class Person{

//划船

public void Oarage(Boat boat){

boat.Oarage();

}

}

//A依赖于B

class A{

public void Function(B b){

}

}

class B{

}

3、聚合关系:

含义:是关联关系的一种,是一种强关联关系;聚合关系是整体和个体/部分之间的关系;关联关系的两个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中,代表个体/部分的对象有可能会被多个代表整体的对象所共享;

体现:C++中,聚合关系通过将被聚合者的(数组)指针作为内部成员来实现的;

方向:单向;

图示:空心菱形 + 实线 + 箭头;箭头指向被聚合的类,也就是说,箭头指向个体/部分;

举例:鸭群与鸭子具有聚合关系;汽车由引擎、轮胎以及其它零件组成,因为汽车坏掉了,没有坏掉的引擎,轮胎和其他零件还可以继续使用。

4、组合关系:

含义:它也是关联关系的一种,但它是比聚合关系更强的关系.组合关系要求聚合关系中代表整体的对象要负责代表个体/ 部分的对象的整个生命周期;组合关系不能共享;在组合关系中,如果代表整体的对象被销毁或破坏,那么代表个体/部分的对象也一定会被销毁或破坏,而聚在合关系中,代表个体/部分的对象则有可能被多个代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏;

体现:在C#中,组合关系是通过成员变量来实现的;

方向:单向;

图示:实心菱形 + 实线 + 箭头;箭头指向代表个体/部分的对象,也就是被组合的类的对象;

举例:一个人由头、四肢、等各种器官组成,因为人与这些器官具有相同的生命周期,人死了,这些器官也挂了;

5、泛化关系:

含义:它表示一个更泛化的元素和一个更具体的元素之间的关系;也就是通常所说的类的继承关系;

体现:在C#中,泛化关系通过类的继承来实现的;

方向:单向;子类继承父类;

图示:空心箭头 + 实线;箭头指向父类;

举例:动物下面可以分为哺乳动物,脊椎动物,爬行动物等

6、实现关系:

含义:它指定了两个实体之间的一份合同;即:一个实体定义一份合同,另外一个实体则保证履行该合同;

体现:在C#中,实现关系通过类实现接口来实现的,即:一个类实现某个接口;
方向:单向;子类实现接口;

图示:空心箭头 + 虚线;箭头指接口向接口;

举例:唐老鸭(对象)会说话(接口),因为一般鸭子不会说话,所以不会将说话这个方法给一般的鸭子带上;超人(对象)会飞(接口)

UML类图符号简介

1. 类(Class):使用三层矩形框表示。
第一层显示类的名称,如果是抽象类,则就用斜体显示。
第二层是字段和属性。
第三层是类的方法。
注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。

2. 接口:使用两层矩形框表示,与类图的区别主要是顶端有<<interface>>显示。
第一行是接口名称。
第二行是接口方法。

3. 继承类(extends):用空心三角形+实线来表示。

4. 实现接口(implements):用空心三角形+虚线来表示

5. 关联(Association):用实线箭头来表示,例如:燕子与气候

6. 聚合(Aggregation):用空心的菱形+实线箭头来表示
聚合:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,例如:公司和员工

组合(Composition):用实心的菱形+实线箭头来表示
组合:部分和整体的关系,并且生命周期是相同的。例如:人与手

7. 依赖(Dependency):用虚线箭头来表示,例如:动物与氧气

8. 基数:连线两端的数字表明这一端的类可以有几个实例,比如:一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就用‘n’来表示。关联、聚合、组合是有基数的

类之间的关系

UML把类之间的关系分为以下5种.

● 关联:类A与类B的实例之间存在特定的对应关系

● 依赖:类A访问类B提供的服务

● 聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成

● 泛化:类A继承类B

● 实现:类A实现了B接口

关联(Association)

关联指的是类之间的特定对应关系,在UML中用带实线的箭头表示。按照类之间的数量对比,关联

可以分为以下三种:

● 一对一关联

● 一对多关联

● 多对多关联

注意:关联还要以分为单向关联和双向关联

依赖(Dependency)

依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。如果类A访问类B的属性或者方法,

或者类A负责实例化类B,那么可以说类A依赖类B。和关联关系不同,无须在类A中定义类B类型的属性。

聚集(Aggregation)

聚集指的是整体与部分之间的关系,在UML中用带实线的菱形箭头表示。

聚集关系还可以分为两种类型:

● 被聚集的子系统允许被拆卸和替换,这是普通聚集关系。

● 被聚集的子系统不允许被拆卸和替换,这种聚集称为强聚集关系,或者组成关系。

注:强聚集(组成)可用带实线的实心菱形箭头表示。

泛化(Generalization)

泛化指的是类之间的继承关系,在UML中用带实线的三角形箭头表示。

实现(Realization)

实现指的是类与接口之间的关系,在UML中用带虚线的三角形箭头表示。

以下是GOF设计模式中的描述

箭头和三角表示子类关系。

虚箭头线表示一个类实例化另一个类的对象,箭头指向被实例化的对象的类。

普通的箭头线表示相识(acquaintance也叫关联或者引用),意味着一个对象仅仅知道另一个对象。相识的对象可能请求彼此的操作,但他们不为对方负责,它只标示了对象间较松散的耦合关系。

尾部带有菱形的箭头线表示聚合(aggregation),意味着一个对象拥有另一个对象或者对另一个对象负责。一般我们称一个对象包含另一个对象,或者是另一个对象的一部分。聚合意味着聚合对象和其所有者具有相同的生命周期。
抽象类名以斜体表示,抽象操作也以斜体表示。图中可以包括实现操作的伪代码,代码将出现在带有褶角的框中,并用虚线将该褶角框与代码所实现的操作相连。

图一:



此实线箭头表示, 继承, 从一个非接口类的继承.

图二:



那条连线表示双向关联:
看左边, Flight扮演assignedFights角色, 有0到1个Plane跟他关联(一个航班要么取消了没有飞机,要么只能对应一架飞机)
看右边, Plane扮演着assignedPlane角色, 有0到多个Flight跟他关联(一个飞机可以参与多个航班, 也可以停在仓库里面烂掉)

图三:



那条连线表示单向关联:
基本的意义跟上面的是一样的, 唯一不同的是, 右边的类对左边的类是一无所知的.

图四:



那个大的包围的框叫软件包, 名字为Account, 就一些可以归类的类包装起来.

图五:



如此虚线的箭头表示实现一个接口.

图六:



水平的连线还是表示上面所说的关联, 但从关联连线中引伸出来的虚线, 这意味当Flight类的一个实例关联到 FrequentFlyer 类的一个实例时,将会产生 MileageCredit 类的一个实例.

图七:


带菱形的箭头表示基本聚合, 由上图知道, Wheel类扮演wheels角色, 聚合4个到Car对象里面去,
空心的菱形表示Wheel对象并不随Car的创建而创建,销毁而销毁.

图八:



意义和上面类似, 唯一不同的是, 实心菱形表示Department对象随Company对象的创建而创建,销毁而销毁.

图九:

分享到:
评论

相关推荐

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

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

    UML类图符号总结

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

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

    类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形。由这些基本的图形进行组合构成了类图的基本符号。这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程度。越向右耦合度...

    UML类图符号简介.docx

    UML类图符号简介.docx

    UML类图符号

    UML类图符号,很清楚地讲解了类与类之间的关系。

    UML类图符号简介[归纳].pdf

    UML类图符号简介[归纳].pdf

    UML类图符号简介

    介绍了UML类途中各种符号的作用,对了解类的含义及C++编程有一定提高作用。

    UML类图关系大全

    清晰简单的UML标识说明,对UML建模初学者十分有用。

    UML类图怎么画学习示例

    UML类图(Class diagram)是统一建模语言(UML)的一种图形表示,用于显示系统的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系。 在类图中,每个类由一个包含类名、属性和方法的矩形表示,...

    UML 类图的形式化及分析

    摘 要 统一建模语言( %+/) 是一种通用的图形化建模语言, 在面向对象系统的分析和设计中, 它已...文章采用 符号来表示 %+/ 类图的组成元素的语法和语义及其映射 关系, 最后对 %+/ 类图的一些性质进行分析和验证。

    UML符号说明文档

    常见的UML符号说明,比较适合编写论文时找不见官方的描述

    基于Common Logic 的UML 类图形式化及验证

    Common Logic 是一阶逻辑的一个特殊拓展,语法简洁,无符号,易读易掌握易使用,语义精确,满足一阶模型理论,相较于其它逻辑语言,更适合UML 类图进行形式化规约。因此,提出采用Common Logic 对UML 类图进行形式化...

    UML类图入门,看完基本懂了怎么画图了

    本文来自于csdn,文章主要以一个实例为入口介绍了uml类图的基本图示法等相关内容,希望对您的学习有所帮助。举一个简单的例子,来看这样一副图,其中就包括了UML类图中的基本图示法。 首先,看动物矩形框,它代表一...

    UML类图解义

    我给你举一个例子,来看这样一幅图,其中就包括了UML类图中的基本图示法。”UML类图图示样例大鸟:“首先你看那个‘动物’矩形框,它就代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用...

    软件体系结构与设计模式课堂笔记.docx

    1.软件思想UML:UML类图符号(依赖、关联、聚合、组合、泛化)、UML类符号相互之间的区别(聚合与组合、关联和聚合、关联和依赖、泛化和实现)。 2.Sping Boot:Spring Boot环境配置、Spring Boot核心配置和注解、...

    UML元素和UML关系图符号简介

    本文重点讨论UML类图中的元素和UML关系图符号。类图是最常用的UML图,它用于描述系统的结构化设计。其中包括类关系以及与每个类关联的属性及行为。类图能出色地表示继承与合成关系。为了将类图作为一种高效的沟通...

    UML九种建模图-类图

    UML九种建模图--类图 UML提供了九种建模图,其中类图是最常用的一种。类图是一种静态模型,主要用来显示系统中的类、接口以及它们之间的静态结构和关系。这些关系包括关联、泛化和依赖等。类图是面向对象系统建模的...

    uml统一建模试卷,期末考试复习资料

    两者采用不同的图形符号系统。 4、Statopia是一家大型公司,由于公司业务的扩大,准备对公司已有的软件系统进行升级,因此委托ObjectR公司负责该项工作。Statopia公司所使用的系统是很久以前开发的,且不是用OO方法...

Global site tag (gtag.js) - Google Analytics