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