UML 类图
今天讲讲UML类图, 是不是有的伙伴还不清楚什么是合成/聚合/关联/依赖关系, 像抽闲类/普通类/接口以及他们的继承/实现关系我们用UML类图又怎么表示的呢?
刚开始学设计者模式的时候我对这些基础的概念确实懵逼了一段时间,不过这些关系拿出实际分钟我们就可以理解的特别清楚了
类
类表示方法为一个一列三行的矩形
- 第一层表示类的名称.如果名称为斜体则表示这个类为抽象类
- 第二层表示类的特性,即字段属性
- 第三层表示方法行为
- 属性和方法前面的符号类别 即方法和属性的访问权限
- '+'表示public
- '_'表示private
- '#'表示protect
- '~'表示package private
动物 |
---|
+年龄 |
+新陈代谢(氧气,水) +繁殖 |
大雁 |
---|
+下蛋 +飞() |
接口
接口的表示方法分为两种一种为一列两行的表示方法,一种为棒棒糖表示法(棒棒糖表示法百度吧,不好画)
- 第一层上面有<>显示和接口名称
- 第二层有接口方法
<< interface >> 飞翔 |
---|
+飞() |
继承
继承关系用空心三角形+实线表示 -▷
实现
我们实现一个接口用空心三角形+虚线表示 --▷
关联关系
关联关系指的是一个类A知道另一个类B,也就是B类作为A的属性
我们通过 实线箭头来表示 ->
public class Penguin extends Bird{
private Climate climate; //企鹅的生存跟气候有很大关系,所有这里引用到了气候,所以 气候和企鹅是关联关系.
@Override
void layEggs() {
System.out.println("下蛋");
}
}
聚合关系
聚合关系表示一种弱拥有关系,体现的是A对象包含B对象,但是B对象不是A对象的一部分
聚合关系用空菱形+实线箭头来表示◇->
public class WidegooseAggregate {
private List<Widegoose> widegooses; //大雁群中有大雁 大雁是燕群中的一部分 所以燕群和大雁是聚合关系 他两个是一种弱拥有关系
}
合成关系
合成关系也叫组合关系,是一种强的拥有关系,体现了严格的部分和整体的关系,部分这真题的生命周期一致.
合成关系通过实体菱形+实现箭头表示 ◆->
合成关系中还有基数这个概念基数表示一段类有几个实力,使用方法是写在菱形和箭头下方,关联关系和聚合关系也可以有基数.
public abstract class Bird extends Animal {
public Feather feather; //羽毛
public String mouth; //嘴
public Wing wing; //鸟儿拥有翅膀 这里鸟儿和翅膀应该是组合/合成关系
public Bird() {
//这里鸟和羽毛 翅膀 应该是组合关系,因为他们的生命周期应该保持一致
wing = new Wing();
feather = new Feather();
Duck duck = new Duck();
}
依赖关系
依赖关系表示对象行为所依赖的对象,即行为的参数
依赖关系用虚线箭头表示
public abstract class Animal {
public int age;
//繁殖
public void reproduction(){}
//新陈代谢
//新晨代谢依赖氧气和水 这里表示的是依赖关系
public void metabolize(Oxygen oxygen, Water water){}
}
关系名称 | 表示方法 | 示例 |
---|---|---|
继承关系 | 空心三角形+实线表示 | -▷ |
实现关系 | 空心三角形+虚线表示 | –▷ |
关联关系 | 实线箭头 | -> |
聚合关系 | 空菱形+实线箭头来表示 | ◇-> |
合成关系 | 实体菱形+实现箭头 | ◆-> |
依赖关系 | 虚线箭头 | –> |