详解:UML类图符号、各种关系说明以及举例
码农突围
共 4509字,需浏览 10分钟
·
2020-09-05 05:45
点击上方“码农突围”,马上关注
这里是码农充电第一站,回复“666”,获取一份专属大礼包
真爱,请设置“星标”或点个“在看”
![](https://filescdn.proginn.com/dd5090ce245c152cbe93315f2a9f0f2e/9dc8f7c55515a6f2c082a85fad6ebe61.webp)
依赖**(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/165bf6e11a0d3fa7aad299fa5ed9e75d/8f473bcd1b6677a42fa33a1adc469e9a.webp)
使用< 调用< >--声明一个类调用其他类的操作的方法。 参数< >--声明一个操作和它的参数之间的关系。 发送< >--声明信号发送者和信号接收者之间的关系。 实例化< >--声明用一个类的方法创建了另一个类的实例。
跟踪< >--声明不同模型中的元素之间存在一些连接但不如映射精确。 精化< >--声明具有两个不同语义层次上的元素之间的映射。 派生< >--声明一个实例可以从另一个实例导出。
访问< >--允许一个包访问另一个包的内容。 导入< >--允许一个包访问另一个包的内容并为被访问包的组成部分增加别名。 友元< >--允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。
绑定< >--为模板参数指定值,以生成一个新的模型元素。
1.1.2 关联(Association):实线箭头表示
public class 徒弟
{
}
public class 唐僧
{
protected: list<徒弟> tdlist;
}
![](https://filescdn.proginn.com/2a2488492f4efd68e5e5e865c4192e6a/f9d01eecc5c63c0665ed1a97e2867e8c.webp)
1.1.3 聚合(Aggregation):带空心菱形头表示
public class 引擎
{
}
public class 轮胎
{
}
public class 汽车
{
protected:引擎 engine;
protected:轮胎 tyre[4];
}
![](https://filescdn.proginn.com/81fe769ea5fc8d6b965bcb51270ee40c/99342341f673662641a516dcbb909391.webp)
1.1.4 组合(Composition):带实心菱形头的实线表示
class 肢
{
}
class 人
{
protected: 肢 limb[4];
}
![](https://filescdn.proginn.com/d3eaa5598e80db435d5e01ac54ba2e67/a94bd74308f681247820378b39f76765.webp)
1.1.5 泛化(Generalization):
带空心箭头的实线线表示
![](https://filescdn.proginn.com/cedb63201baf36497ac0518631db594d/6f51bee9ad2ebcb5e741519ac54fb9f1.webp)
1.1.6 实现(Realization):空心箭头和虚线表示
![](https://filescdn.proginn.com/dedf4c3a22033741299538e3a0bbd1c5/dc40e3132460f9be4a9deedee8c4f647.webp)
二、相互之间的区别
![](https://filescdn.proginn.com/517be53b9638cef869ceb0ee79a30178/d76062ec449f1898b24a5c476e91e343.webp)
“弱”包含表示如果部门没有了,员工也可以继续存在; “强”包含表示如果部门没有了,员工也不再存在;
最近热文
• 外包公司干了不到 3 个月,我离职了...(防坑指南) • MATLAB被禁,中国重新开发要多久? • 网传互联网公司加班表,排名第一的没有悬念! • 查询速度提升200倍,ClickHouse到底有多快? 最近整理了一份大厂算法刷题指南,包括一些刷题技巧,在知乎上已经有上万赞。同时还整理了一份6000页面试笔记。关注下面公众号,在公众号内回复「刷题」,即可免费获取!回复「加群」,可以邀请你加入读者群!
明天见(。・ω・。)ノ♡
评论