UML类图解析总结-2023/12/07

发布时间 2023-12-07 14:50:18作者: 小彭先森

一、概述

 

类图是描述类、接口以及它们之间关系的图,是一种静态模型,显示了系统中各个类的静态结构。类图根据系统中的类以及各个类的关系描述系统的静态视图,可以用某种面向对象的语言实现类图中的类。

 

UML类图详细总结

 

 

二、类之间的关系

 

UML类图详细总结

 

 

 

其中由若到强的关系:

 

依赖 ——> 聚合 —-> 组合

 

1、关联关系

关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。

在UML类图中,用实线连接有关联关系的对象所对应的类,在使用 java 、C++和C#等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。

在使用类图表示关联关系时可以在关联线上标注角色名。

 

UML类图详细总结

 

 

 

 

public class LoginForm {

private JButton loginButton; //定义为成员变量

……

}

public class JButton {

……

}

 

(1)双向关联

 

UML类图详细总结

 

 

public class Customer {

private Product[] products;

……

}

 

public class Product{

private Customer customer;

……

}

 

(2)单向关联

 

UML类图详细总结

 

 

public class Customer {

private Address address;

……

}

 

public class Address {

……

}

(3)自关联

 

UML类图详细总结

 

 

public class Node {

private Node subNode;

……

}

2、泛化关系

泛化描述了一般事物与该事物的特殊种类之间的关系。在解决复杂问题时通常需要将具有共同特性的元素抽象成类别,并通过增加其内容而进一步分类。例如,车可以分为火车、汽车、摩托车等。继承是类与类或者接口与接口最常见的关系,在Java中通过关键字extends来表示。

 

UML类图详细总结

 

 

 

UML类图详细总结

 

 

3、依赖

依赖(dependency)关系也是表示类与类之间的连接,表示一个类依赖于另外一个类的定义,依赖关系时是单向的。简单理解就是类A使用到了类B,这种依赖具有偶然性、临时性,是非常弱的关系。但是类B的变化会影响到类A。举个例子,如某人要过河,则人与船的关系就是依赖,人过河之后,与船的关系就解除了,因此是一种弱的连接。在代码层面,为类B作为参数被类A在某个方法中使用。

在java中,依赖表现为: 局部变量 ,方法中的参数和对静态方法的调用。

 

UML类图详细总结

 

 

4、聚合关系

聚合(Aggregation)关系表示整体与部分的关系;在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在;在UML中,聚合关系用带空心菱形的直线表示 。

 

UML类图详细总结

 

 

public class Car {

private Engine engine;

public Car(Engine engine) { //构造注入

this.engine = engine;

}

 

public void setEngine(Engine engine) { //设值注入

this.engine = engine;

}

……

}

 

public class Engine {

……

}

 

5、组合关系

组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。在UML中,组合关系用带实心菱形的直线表示。

 

UML类图详细总结

 

 

public class Head {

private Mouth mouth;

public Head() {

mouth = new Mouth(); //实例化成员类

}

……

}

 

public class Mouth {

……

}

 

6、实现关系(接口关系)

 

UML类图详细总结

 

 

 

UML类图详细总结

 

 

三、多重性关联

表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示。

 

UML类图详细总结

 

 

表示方式

多重性说明

(1) 1..1

表示另一个类的一个对象只与该类的一个对象有关系

(2) 0..*

表示另一个类的一个对象与该类的零个或多个对象有关系

(3) 1..*

表示另一个类的一个对象与该类的一个或多个对象有关系

(4) 0..1

表示另一个类的一个对象没有或只与该类的一个对象有关系

(5) m..n

表示另一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n)