详解:UML类图符号、各种关系说明以及举例
小哈学Java
共 4540字,需浏览 10分钟
·
2020-09-05 05:32
点击上方蓝色“小哈学Java”,选择“设为星标”
回复“资源”获取独家整理的学习资料!
作者 | 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/3f371475cc4284e4c5432b704317e1ab/a489a66d160ccbb32ef070b309d1db43.webp)
使用< 调用< >--声明一个类调用其他类的操作的方法。 参数< >--声明一个操作和它的参数之间的关系。 发送< >--声明信号发送者和信号接收者之间的关系。 实例化< >--声明用一个类的方法创建了另一个类的实例。
跟踪< >--声明不同模型中的元素之间存在一些连接但不如映射精确。 精化< >--声明具有两个不同语义层次上的元素之间的映射。 派生< >--声明一个实例可以从另一个实例导出。
访问< >--允许一个包访问另一个包的内容。 导入< >--允许一个包访问另一个包的内容并为被访问包的组成部分增加别名。 友元< >--允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。
绑定< >--为模板参数指定值,以生成一个新的模型元素。
1.1.2 关联(Association):实线箭头表示
public class 徒弟
{
}
public class 唐僧
{
protected: list<徒弟> tdlist;
}
![](https://filescdn.proginn.com/022d86128de94af36ee529291f2ab6a3/4a6d18830d75f3f9e406946a4286fee2.webp)
1.1.3 聚合(Aggregation):带空心菱形头表示
public class 引擎
{
}
public class 轮胎
{
}
public class 汽车
{
protected:引擎 engine;
protected:轮胎 tyre[4];
}
![](https://filescdn.proginn.com/febcc7b067c7248d955d5c2d7f127dbb/bd7b0b8ab5e3ebd26934776d413590e3.webp)
1.1.4 组合(Composition):带实心菱形头的实线表示
class 肢
{
}
class 人
{
protected: 肢 limb[4];
}
![](https://filescdn.proginn.com/f11755753c68321ccb462152023cebc5/e378a998a099fd1bff3e3be16bb6d557.webp)
1.1.5 泛化(Generalization):
带空心箭头的实线线表示
![](https://filescdn.proginn.com/aca761048f197c968df71a30772e6154/b1699b960e1ef7c3dd7b5b90c4f1a2ec.webp)
1.1.6 实现(Realization):空心箭头和虚线表示
![](https://filescdn.proginn.com/1dc9ca8b6ce783a441e4dffce4dee165/5058ea66125280aecb137698dce4a7a0.webp)
二、相互之间的区别
![](https://filescdn.proginn.com/819ca323b26b727356d40aec16f5f714/ef18b4db4fc5205e28a1d0636c9ec665.webp)
“弱”包含表示如果部门没有了,员工也可以继续存在; “强”包含表示如果部门没有了,员工也不再存在;
END
有热门推荐?
1. What?数据量巨大还不分库分表? Sharding-JDBC 入门与项目实战
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
评论