UML类图中各种关系的含义及对应的图示

在理解设计模式之前,首先要能看懂类图的含义,其实UML类图非常简单,一共就6种关系,以下来总结各种关系的含义,对应的图怎么画

泛化(继承)

在面向对象的语言中,继承是一大特点,无论是普通类继承普通类,普通类继承抽象类,抽象类继承抽象类,接口继承接口,都称为泛化关系。在这里插入图片描述
其在类图中的画法为:子类通过 实线,空心箭头 指向父类

实现

类对接口的实现

在这里插入图片描述

其在类图中的画法为:接口通过 虚线,空心箭头 指向实现类

关联

A类是B类的成员变量,则称A与B为关联关系

  • 单向关联
    B是A的成员变量,则A类单向关联B类
    在这里插入图片描述
    画法为A类通过 实线,箭头 在这里插入图片描述
    指向类
  • 双向关联
    A类与B类互为成员变量,则A与B双向关联
    在这里插入图片描述
    画法为:A类与B类通过 实线 连接
  • 自关联
    A类的成员变量中有A类本身,称为自关联
    在这里插入图片描述
    画法:A类通过 实心,箭头 指向它自己
  • 组合与聚合
    组合与聚合是一种特殊的关联方式,其本质也是A持有B类的成员变量,组合和聚合的区别,在于A类持有B类实例的时机不同,由于组合与聚合使用较多,在下文单独描述。

组合

A类的成员变量中包含B类,且当在A类初始化的时候就获取到了B类的实例,则该关系称为组合
代码中,可以是在定义成员变量的时候直接赋值,也可以在类的构造器中初始化

//法1 定义成员变量时直接赋值
class A {
	B b = new B();
}
class B{

}
//法2 在构造器中初始化
class A {
	public B b;
	A(B b){
		this.b = b;
	}
}
class B{

}

在这里插入图片描述
画法:A类通过 实心菱形,实线 指向B类

聚合

A类的成员变量中包含B类,且A类在系统运行中才获取到B类实例,则该关系称为聚合
代码中,在A类的set函数中获取B类实例

//法1 定义成员变量时直接赋值
class A {
	B b;
	public void setB(B b){
		this.b = b;
	}
}
class B{

}

在这里插入图片描述

画法:A类通过 空心菱形,实线 指向B类

依赖

以下三种情况称为A类依赖B类:

  1. A类方法中,B类作为参数
class A {
	public f1(B b){
		//使用B类,完成一些功能
	}
}
class B{

}
  1. A类方法中,B类作为局部变量
class A {
	public f1(B b){
		B b = new B();
		//使用B类,完成一些功能
	}
}
class B{

}
  1. A类方法中,使用到B类的静态方法
class A {
	public f1(B b){
		B.f2();
	}
}
class B{
	public static f2(){
	}
}

在这里插入图片描述
画法为:A 类通过 虚线,箭头 指向B类

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑白程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值