[摘]UML类图符号的各种关系说明

shell脚本  2018年5月9日 pm11:30发布7年前 (2018)更新 城堡大人
110 0 0

本文摘抄于UML类图符号 各种关系说明以及举例,其实我一直在看UML内容,但有时候总是忘记,因此摘抄于此,谢谢原文作者无私分享

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

表示关系的强弱关系

组合>聚合>关联>依赖

相互间关系

  • 聚合是表明对象之间的整体与部分关系的关联
  • 组合是表明整体与部分之间有相同生命周期关系的聚合
  • 依赖描述了对象之间的调用关系
  • 关联描述了对象之间的结构关系

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

依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。uml中用带箭头的虚线表示,箭头指向被依赖元素。

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

//依赖--->用虚线箭头表示

class Person{
      void buy(Car car){};
}
[摘]UML类图符号的各种关系说明

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

关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml中用实线表示Association关系,箭头指向被依赖元素。

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

//关联--->用实线箭头表示
class Student{//徒弟
}
class Teatcher{ //唐僧
     private List<Student> list;
}  
[摘]UML类图符号的各种关系说明

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

聚合(Aggregation):关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml中用带空心菱形头的实线表示,菱形头指向整体。

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

//聚合--->带空心菱形头表示

class Engine{  //引擎

}
class Tyre{  //轮胎

}
class Car{  //汽车
       private Engine  engine;
       private Tyre tyre[4];
}  
[摘]UML类图符号的各种关系说明

四、组合(Composition):带实心菱形头的实线表示

组合(Composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml中用带实心菱形头的实线表示Composition关系,菱形头指向整体。

1、合成关系是关联关系的一种,是比聚合关系还要强的关系。

2、它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

//组合--->带实心菱形头表示

class Limb{
}
class Person{
     private Limb   limb[4];
}  
[摘]UML类图符号的各种关系说明

 五、泛化(Generalization)

泛化(Generalization):通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml中用带空心箭头的实线表示,箭头指向一般个体。

带空心箭头的实线线表示

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

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

[摘]UML类图符号的各种关系说明

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

实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系是Realize,B realize A。这个关系最常用于接口。uml中用空心箭头和虚线表示,箭头指向定义约定的元素。

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

[摘]UML类图符号的各种关系说明

特别推荐:云课堂-125啦·读书导航 - 阅读是一种生活方式

 

 历史上的今天

  1. 2024: Android关闭selinux(0条评论)
  2. 2023: IJKPlayer和MediaPlayer切换问题(0条评论)
  3. 2022: C语言输出格式符(0条评论)
  4. 2019: Android.mk 用法解析整理(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

吴念真:年糕

阿旺和我读同一个小学,低我两个年级,所以之前我并不认识他,不过他倒知道我,因为小学时代我是学校升降旗典礼的司仪。遇见他的时候,我已经十七岁,他十五岁,两个人都已经在台北工作了。阿旺做事的铁工厂和我住的地方其实就在同一条巷子里,只是没碰过面,直到有一天房东叫铁工来装铁窗,扛着铁架的小助手看看我,...

Vim复制和粘贴命令

前言简单记录一下Vim拷贝和粘贴命令正文dddeletedd是删除光标所在位置的整行内容,并复制到缓存区dd : 删除光标所在的整行内容[N]dd : 删除从光标所在的行开始,联系N行的内容yyYankyy是复制光标所在的整行内容,并复制到缓存区yy : 复制光标所在的整行内...

郑愁予:归航曲

飘泊得很久,我想归去了彷佛,我不再属于这里的一切我要摘下久悬的桅灯摘下航程里最后的信号我要归去了……每一片帆都会驶向斯培西阿海湾原注:像疲倦的太阳在那儿降落,我知道每一朵云都会俯吻汩罗江渚,像清浅的水涡一样在那儿旋没……我要归去了天隅有幽蓝的空席有星座们洗尘的酒宴在隐去...

毕淑敏:世上千寒,心中永暖

记得当年做医学生实习时,轮到去产科学接生。见那刚生下来的宝宝,一出母体,便放声大哭。倘在别处,听到有人痛嚎,众人必是关切不安,以示慰问。在产科接生室内,哭声便是捷报。若是不闻哭声,助产士便要心焦了。民间流传说,老式的接生婆如果听不到新生儿哭,会立马把孩子头朝下倒拎着,在屁股上猛砸几巴掌,娃儿惊哭出来...

SQLiteBlobTooBigException

前言记录一下查询数据库时的异常Caused by: android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1at and...

[摘]Android SD卡挂载状态

一、 Sd卡挂载主要ACTIONACTION_MEDIA_BAD_REMOVALsd卡已经从sd卡插槽拔出,但是挂载点还没解除ACTION_MEDIA_BUTTON“媒体”按钮被按下ACTION_MEDIA_CHECKING存在外部媒体,磁盘检查挂...