详解:UML类图符号、各种关系说明以及举例
公众号程序猿DD
共 6876字,需浏览 14分钟
·
2020-08-28 15:28
点击上方蓝色“程序猿DD”,选择“设为星标”
回复“资源”获取独家整理的学习资料!
作者 | duanxz
-
依赖**(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关系,菱形头指向整体。
1.1.1 依赖(Dependency):虚线箭头表示
public class Person
{
void buy(Car car)
{
...
}
}
![](https://filescdn.proginn.com/8e363d75c20bfd69e408df8b673e562a/719935049119d0e78cec8157326eac9b.webp)
-
使用< -
调用< >--声明一个类调用其他类的操作的方法。 -
参数< >--声明一个操作和它的参数之间的关系。 -
发送< >--声明信号发送者和信号接收者之间的关系。 -
实例化< >--声明用一个类的方法创建了另一个类的实例。
-
跟踪< >--声明不同模型中的元素之间存在一些连接但不如映射精确。 -
精化< >--声明具有两个不同语义层次上的元素之间的映射。 -
派生< >--声明一个实例可以从另一个实例导出。
-
访问< >--允许一个包访问另一个包的内容。 -
导入< >--允许一个包访问另一个包的内容并为被访问包的组成部分增加别名。 -
友元< >--允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。
-
绑定< >--为模板参数指定值,以生成一个新的模型元素。
1.1.2 关联(Association):实线箭头表示
public class 徒弟
{
}
public class 唐僧
{
protected: list<徒弟> tdlist;
}
![](https://filescdn.proginn.com/3048779c74a936b0de99f69b55bef200/80df3815c6448498830b403db0f076cd.webp)
1.1.3 聚合(Aggregation):带空心菱形头表示
public class 引擎
{
}
public class 轮胎
{
}
public class 汽车
{
protected:引擎 engine;
protected:轮胎 tyre[4];
}
![](https://filescdn.proginn.com/c6faee7b94c4527df54ee6dbf13773eb/1d195487d856dae6103949d4f307dff2.webp)
1.1.4 组合(Composition):带实心菱形头的实线表示
class 肢
{
}
class 人
{
protected: 肢 limb[4];
}
![](https://filescdn.proginn.com/a25e067056e65ee21f88070f27e31175/c402762db40fe8c0233950e5596838af.webp)
1.1.5 泛化(Generalization):
带空心箭头的实线线表示
![](https://filescdn.proginn.com/adb5710f0fdb2b8493706e1f6e10d10f/7fe707db2b89cb62bd2adb8ce76fc007.webp)
1.1.6 实现(Realization):空心箭头和虚线表示
![](https://filescdn.proginn.com/c06bfebf94a83c0e4c8e846cf946dcdf/0097d6b178763482c0acaf91f90f08ea.webp)
二、相互之间的区别
![](https://filescdn.proginn.com/e2f8942e7827e01a5719c9f6775853a9/5eec7074925b5d5827ba715a44a97ea1.webp)
-
“弱”包含表示如果部门没有了,员工也可以继续存在; -
“强”包含表示如果部门没有了,员工也不再存在;
往期推荐
我的星球是否适合你?
点击阅读原文看看我们都聊过啥?
评论