0%

UML类图

业精于勤,荒于嬉;行成于思,毁于随。 —— 唐·韩愈《进学解》

一、概念

  1. 类图(Class diagram),显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。它用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。

    • 类图以反映类结构和类之间关系为目的,用以描述软件系统的结构,是一种静态建模方法
    • 类图主要用在面向对象软件开发的分析和设计阶段,描述系统的静态结构
    • 类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系,它用于描述系统的结构化设计
    • 类图最基本的元素是类或者接口。
  2. 作用

    • 在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解。
    • 类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。
  3. 使用场合

    • 为系统词汇建模型:为系统的词汇建模实际上是从词汇表中发现类,发现它的责任。
    • 模型化简单的协作:协作是指一些类、接口和其他的元素一起工作提供一些合作的行为,这些行为不是简单地将元素相加能得到的。例如:当你为一个分布式的系统中的事务处理过程建模型时,你不可能只通过一个类来明白事务是怎样进行的,事实上这个过程的执行涉及到一系列的类的协同工作。使用类图来可视化这些类和他们的关系。
    • 模型化一个逻辑数据库模式:想象模式是概念上设计数据库的蓝图。在很多领域,你将想保存持久性数据到关系数据库或面向对象的数据库。你可以用类图为这些数据库模式建立模型。

二、类图结构

  1. 在UML类图中,使用长方形描述一个类的主要构成,长方形垂直地分为三层,以此放置类的名称、属性和方法。

  2. 类的名称表示方法

    • 一般的类的类名用正常字体粗体表示
    • 抽象类名用斜体字粗体
    • 接口则需在上方加上<<interface>>
  3. 类的属性和方法的访问控制符表示

    • +:表示public
    • #:表示protected
    • -:表示private

三、六种类关系

类关系表示方法

  1. 继承关系:继承关系(Extend)也称泛化关系(Generalization),用于描述父类与子类之间的关系。

    • 父类又称作基类,子类又称作派生类
    • 继承关系中,子类继承父类的所有功能(属性、方法)
    • 子类中除了与父类一致的信息以外,还包括额外的信息
  2. 实现关系:即Implementation,主要用来规定接口和实现类的关系。

    • 接口是方法的集合,在实现关系中,类实现了接口并要实现接口声明的所有方法
    • 抽象类也有类似的要求,即要实现所有的抽象方法
  3. 组合关系:即Composition,整体与部分的关系(不可以分开)。

    • 组合关系表示类之间整体与部分的关系,整体和部分有一致的生存期
    • 一旦整体对象不存在,部分对象也将不存在,是同生共死的关系
  4. 聚合关系:即Aggregation,整体和部分的关系(可以分开)。

    • 聚合关系也表示类之间整体与部分的关系,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在
  5. 关联关系:即Association,表示一个类的属性保存了对另一个类的一个实例(或多个实例)的引用。

    • 关联关系是类与类之间最常用的一种关系,表示一类对象与另一类对象之间有联系
    • 组合、聚合也属于关联关系,只是关联关系的类间关系比其他两种要弱
  6. 依赖关系:即Dependence,假设A类的变化引起了B类的变化,则说名B类依赖于A类。

    • 大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数

四、总结

  1. 六种类关系中,组合、聚合和关联的代码结构一样,可以从关系的强弱来理解,各类关系从强到弱依次是:继承→实现→组合→聚合→关联→依赖。
  2. 具体关系可参看下图

类及累的关系表示图