一、 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类图

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐