【大话设计模式】UML图以及六种常见类间关系

一、 UML类图示例


构成要素:


第一行:类名称
第二行:特性(字段或属性)
第三行:操作(方法或行为)

注意属性和方法前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。

接口
矩形表示法,顶端<<interface>>
第一行:接口方法名称
第二行:接口方法 


二、六种类间关系

在UML类图中,常见的有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 

1.泛化(Generalization)

【关系定义】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为。
【类图表示】:空心三角形+实线,箭头指向为父类。

public class Bird : Animal
{
}

2.实现(Realization)

【关系定义】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
【类图表示】:空心三角形+虚线,箭头指向接口。

 【代码实现】:

public interface IFly
{
    void Fly();
}

public class WideGoose : IFly
{
    public void Fly()
    {
    }
}

 另外一种表示方法:棒棒糖表示法

3.关联(Association)

【关系定义】:是一种拥有的关系,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码表现】:代码中的成员变量
【类图表示】:带箭头的实线,箭头指向被拥有者

企鹅需要“了解”气候的变化,需要“知道” 这一个类

【代码实现】:

public class Penguin : Bird
{
    // 在企鹅 Penguin 中引用到气候 Climate 对象
    private Climate climate;
}

4. 依赖(Dependency)

【关系定义】:是一种使用的关系,所以要尽量不使用双向的互相依赖。
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【类图表示】:带箭头的虚线,箭头指向被使用者

【代码实现】:

public abstract class Animal
{
    public void Metabolism(Oxygen oxygen, Water water)
    {
    }
}

5. 聚合(Aggregation)

【关系定义】:表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但是B对象不属于A对象的一部分。(部分脱离整体能单独存在)
【代码表现】:成员变量
【类图表示】:空心菱形+实线,菱形指向整体

【代码实现】:

public class WideGooseAggregate
{
    // 在雁群 WideGooseAggregate 类中,有大雁数组对象 arrayWideGeese
    public WideGoose[] arrayWideGeese;
}

6. 组合(Composition)

【关系定义】:是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分与整体的生命周期一样。(部分脱离整体不能单独存在)
【代码表现】:成员变量
【类图表示】:实心菱形+实线,菱形指向整体

【代码实现】:

public class Bird
{
    private Wing wing;
    public Bird()
    {
        // 在鸟 Bird 类中,初始化时,实例化翅膀 Wing,他们之间同时生成
        wing = new Wing();
    }
}

定义参考

UML类图几种关系的总结_PlayBoy's 部落格-CSDN博客_uml类图

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枫蜜柚子茶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值