`
king_tt
  • 浏览: 2084081 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的整体与部分关系的关联,而组合是表明整体与部分之间有相同生命周期关系的聚合。

各种关系的强弱顺序:

泛化=实现>组合>聚合>关联>依赖

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

类的命名

尽量应用领域中的术语,应明确、无岐义,以利于相互交流和理解。类的属性、操作中的可见性使用:+、#、-分别表示public、protected、private



1.泛化(Generalization)

【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

【箭头指向】:带三角箭头的实线,箭头指向父类


2.实现(Realization)

【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.

【箭头指向】:带三角箭头的虚线,箭头指向接口


3.关联(Association)

【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

【代码体现】:成员变量

【箭头及指向】:带普通箭头的实心线,指向被拥有者

上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

下图为自身关联:


4.聚合(Aggregation)

【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

【代码体现】:成员变量

【箭头及指向】:带空心菱形的实心线,菱形指向整体

5.组合(Composition)

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

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

【代码体现】:成员变量

【箭头及指向】:带实心菱形的实线,菱形指向整体


6.依赖(Dependency)

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

【代码表现】:局部变量、方法的参数或者对静态方法的调用

【箭头及指向】:带箭头的虚线,指向被使用者

下面这张UML图,比较形象地展示了各种类图关系:




参考推荐:

UML类图几种关系的总结

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

UML类图(百度百科)

UML建模免费工具


分享到:
评论

相关推荐

    UML类图几种关系的总结 - OPEN 开发经验库

    在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖

    UML:类图关系总结

    UML类图几种关系的总结,泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition...

    比较常用UML类图几种关系的小结

    本文给大家总结了UML类图中几种比较常用的关系小总结,需要的朋友可以参考下

    UML几种类图

    本文档是对类图的几种关系的描述,希望对大家学习UML有用!

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

    学习《设计模式》好长时间了,可是到现在还是分不太清楚几种UML中的几种关系。如果这几种关系理解的不是很透彻的话,那么会直接影响到对类图之间关系的理解,下面就来分析下几种关系吧!

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

    UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别 这是一堂关于UML基础知识的补习课;现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更...以下就分别介 绍这几种关系:

    matlab终止以下代码-UML_Parser:BUAA面向对象的编程单元4

    matlab终止以下代码 第四单元总结 总 本部分是2019年北航面向对象(OO)课程第四单元作业(UML)的总结。两次作业的要求大致如下: 第一次作业:实现一个UML类图解析器,可以...类图中涉及到以下几种类型的对象 UMLC

    UML基础教程:用例图、类图、序列图

    UML基础教程,详细介绍了UML几种不同的画图标准,用例图、类图、序列图等等

    Java与UML交互图

    前面我们主要讨论的是UML类图,下面我们要讨论的是另一种UML图——交互图(InteractionDiagram)。交互图描述的是一组对象之间的交互过程,或者说,这里我们实际上要回答这样一个问题:“方法调用过程在UML中怎样...

    dotnet-microservices:分布式微服务项目实战

    微服务系列 用户服务 docker docker安装mysql 外部volume挂载资料卷 ef生成数据库 生成数据和数据初始化 dapper dapper contain,仓储,事务,工作单元应用 webapi Restful ...UML类图几种关系 MongoDB

    UML和模式应用(架构师必备).part07.rar

    第16章 UML类图 16.1 应用UML:常用类图表示法 16.2 定义:设计类图 16.3 定义:类元 16.4 表示UML属性的方式:属性文本和关联线 16.5 注解符号:注解、注释、约束和方法体 16.6 操作和方法 16.7 关键字 ...

    系统需求规格说明书1

    1.2 画法这里只描述UML类图的画法:类之间的几种关系:泛化(Generalization)、实现(Realization)、关联(Association)

    UML和模式应用(架构师必备).part06.rar

    第16章 UML类图 16.1 应用UML:常用类图表示法 16.2 定义:设计类图 16.3 定义:类元 16.4 表示UML属性的方式:属性文本和关联线 16.5 注解符号:注解、注释、约束和方法体 16.6 操作和方法 16.7 关键字 ...

    UML和模式应用(架构师必备).part02.rar

    第16章 UML类图 16.1 应用UML:常用类图表示法 16.2 定义:设计类图 16.3 定义:类元 16.4 表示UML属性的方式:属性文本和关联线 16.5 注解符号:注解、注释、约束和方法体 16.6 操作和方法 16.7 关键字 ...

    軟件建模技術與與UML說明

    4.3 类图 4.4 对象图 4.5 几个特殊问题 5.1 概述 5.2 顺序图 5.3 协作图 5.4 顺序图与协作图比较 6.1 状态图 6.2 活动图 6.3 两种图的比较 7.1 构件图 7.2 部署图 7.3 包图 8.1 UML视图和应用领域 8.2 软件模型与UML...

    graphvizuml:使用 Graphviz 绘画 UML 图

    利用 Graphviz 去生成 UML 类图有几个好处:用文本表示图,容易更新,容易做版本管理。能自动排布节点位置,在大型复杂的图特别方便。统一文档风格。实际上,文档生成工具 也是采用 Graphviz 生成类图的。不过,我们...

Global site tag (gtag.js) - Google Analytics