UML类图和关系

UML类图是面向对象系统建模中最经常使用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。数据结构

类图基本元素

类、接口、关系,只简单介绍一下这三种元素。spa

类是对具备相同属性和行为的对象,抽象出来的一种数据结构,是面向对象设计的核心结构。图示以下:
设计

类名、属性、行为三部分组成。对象

    • 类名格式:字符串
    • 属性格式:可见性 名称:类型 [ = 缺省值 ]
    • 行为格式:可见性 名称(参数列表) [ : 返回类型]
    • 参数格式:类型 名称
    1. 可见性:表示元素对于类外的元素而言是否可见,包括公有(public)、私有(private)和受保护(protected)三种,在类图中分别用符号+、-和#表示。
    2. 名称:标识名,用字符串表示。
    3. 类型/返回类型:表示数据类型,能够是基本数据类型,也能够是引用数据类型。
    4. 缺省值:是一个可选项,园所默认值。
    5. 参数:多个参数用逗号“,”分隔。

    接口

    描述行为的集合。图示以下:
    继承

    接口名和操做两部分组成。接口

    • 接口名格式:字符串
    • 行为格式:名称(参数) [ : 返回类型]
    • 参数格式:类型 名称
    1. 名称:标识名,用字符串表示。
    2. 返回类型:表示数据类型,能够是基本数据类型,也能够是引用数据类型。
    3. 参数:多个参数用逗号“,”分隔。

    注:<<接口名>>中的尖括号不必定非要有。如实现关系就一种,接口的泛化关系只是标识行为没有属性。生命周期

    关系

    类图中的元素存在六种基本关系。分别是:实现,泛化,组合,聚合,关联和依赖。ci

    类图元素的关系

    实现(Realization)

    表示类对接口的实现操做,类具备接口的全部行为。用带有空心三角箭头的虚线表示,箭头指向接口。 实线图示以下:
    rem

    泛化(Generalization)

    类或接口之间的继承,表示通用与具体的差别。用带有空心三角箭头的实线表示,箭头指向父类。图示以下:
    字符串

    组合(Composition)

    总体与部分的关系,部分不能离开总体而单独存在。总体和部分生命周期同样,同生同死。用带有实心菱形的实线表示,菱形指向总体。图示以下:

    聚合(Aggregation)

    总体与部分的关系,部分能够离开总体而单独存在。总体对部分只是有使用权。总体和部分的生命周期是独立存在的。用带空心菱形的实心线表示,菱形指向总体。图示以下:

    关联(Association)

    同级类之间的引用,彼此不存在包含关系,引用者知道被引用者的属性和行为。关联能够是双向的,也能够是单向的。在Java语言中,关联关系通常使用成员变量来实现。
    用带普通箭头的实心线表示,箭头指向被引用者。图示以下:

    依赖(Dependency)

    一个类的实现依赖另外一个类的数据。
    带箭头的虚线,指向被使用者。图示以下:

    总结

    • 实现:类实现接口。
    • 泛化:类或接口之间的继承。
    • 组合:结构上总体和部分不能分开,生命周期同样,由总体维护。
    • 聚合:结构上总体和部分能分开,各自维护本身的生命周期。
    • 关联:类之间存在使用和被使用关系。
    • 依赖:一个类用到另外一个类的数据。

    关系的强到弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。