UML类图


前言


不知道大家有没有跟我一样的情况,UML类图每次看的时候,第一眼,哎我认识,但是每当仔细考究里面的一个东西或关系的时候,就会立马又分不清了。为了增强记忆,便于以后的回顾,在参考了网上的文章后,写下了这篇笔记。

类图


定义:类图显示了一组类、接口、协作以及他们之间的关系。

类图一共分三层:

1、类名。如果类是抽象类,则类名为斜体。
2、特型。字段和属性。格式:可见性 属性名: 数据类型[=缺省值]
3、事件。方法 格式:可见性 方法名(): 返回类型

可见性:

+ 公有(public);
- 私有(private);
# 受保护的(protected);
~友好的,表示这个属性可以被同一个包中的类访问;
_ 表示静态(static)
斜体表示抽象

关系


常见的关系有6种:

继承(Generalization),  实现(Realization),组合(Composition),聚合(Aggregation),关联(Association),依赖(Dependency)

继承(Generalization)

继承是指一个类(字类、子接口),继承另一个类(父类、父接口)的功能。字类带有父类的特性和事件,并且可以新增属于自己的特性和事件。

表示方法:空心三角形+实线

方向:空心三角形指向父类,即字类指向父类。

实现(Realization)

指类实现接口的功能,实现是类与接口之间最常用的关系。

表示方法:空心三角形+虚线

方向:空心三角形指向接口,即类指向接口。

组合(Composition)

表示强拥有关系,体现了严格的整体和部分的关系,即contains-a得关系,整体和部分的生命周期是一致的。B对象是A对象的一部分,如果A对象不存在,那么B对象也不存在。

表示方法:实心菱形+实线+箭头

方向:箭头朝向部分

示例:鸟和翅膀

聚合(Aggregation)

表示一种弱拥有的关系,整体和部分的关系,即has-a关系。体现的是A对象包含B对象,但B对象不是A对象的一部分,两个对象各自有自己的生命周期。也就是说B对象完全可以脱离A对象存在。

表示方法:空心菱形+实线+箭头

方向:箭头朝向部分。即整体到部分。

示例:大雁群和大雁

关联(Association)

两个独立的类,其中一个类A包含另一个类B,B类将作为A类的一个属性变量存在。

表示方法:箭头+实线

方向:可以是单向的,也可以是双向的。

依赖(Dependency)

表示一种使用的关系,就是A类使用了B类,A类需要B类的协助。B类会影响到A类。尽量不要使用双向依赖,不然会造成死循环。

表示方法:箭头+虚线

方向:箭头朝向被使用者

示例:局部变量、方法参数或对静态方法的调用。

总结


各种关系的强弱顺序:

继承 = 实现 > 组合 > 聚合 > 关联 > 依赖

由于种种关系经常会搞混,经过整理后发现一些规律。

1、继承和实现

  • 都有空心三角形

  • 继承使用实线,父类真实存在,而且是父子关系,一家人这关系没得说。

  • 实现使用虚线,接口需要实现。

2、组合和聚合

  • 都有实线+箭头

  • 组合使用实心菱形,你就想啊,鸟和翅膀的关系,翅膀断了,那还不疼的喳喳叫,这关系实打实的。

  • 聚合使用空心菱形,一群大雁,随便走一只,对整个队形也不会由非常严重的影响

3、关联和依赖

  • 都有箭头

  • 关联使用实线,表示包含,被包含的类将作为属性存在,整个都属于另一个类,所以实线没得说。

  • 依赖使用虚线,表示使用、协助

posted @ 2020-12-31 09:59  ImLxp  阅读(127)  评论(0编辑  收藏  举报