一、基本介绍

UML:Unified Modeling Language 【统一建模语言】
① 是一种用于软件系统分析和设计的工具。用于帮助软件开发人员进行思考和记录思路的结果。
② UML 本身是一套符号的规定。这些符号用于描述软件模型中的各个元素和他们之间的关系。比如类、接口、实现、泛化、依赖、组合、聚合等。
Composite 组合
Aggregation 聚合
Realization 实现
Generalization 泛化(继承)
Association 关联
Dependency 依赖(使用)

二、UML 图分类

画 UML 图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理。
UML 图分类:
① 用例图(Use Case)
② 静态结构图:类图(描述类与类之间关系)、对象图、包图、组件图、部署图
③ 动态行为图:交互图(时序图与协作图)、状态图、活动图


三、UML 类图

用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
类之间的关系有:依赖、泛化(继承)、实现、关联、聚合与组合。


四、画图工具 Power Designer

画 UML 类图必然需要画图工具。在此,本人使用的是 Power Designer 工具。
本人是在电脑管家的【软件管理】中下载的…
在这里插入图片描述

五、基本使用

public class Student {
    private Double score;
    private String name;

    public Double getScore() {
        return score;
    }

    public void setScore(Double score) {
        this.score = score;
    }
}

画出上面的 Student 类的 UML 类图。
至于类图如何添加,按照完成图慢慢琢磨即可,在此不做详细介绍。

给类添加属性


给类的方法添加方法参数


在这里插入图片描述
在这里插入图片描述


六、类的依赖、泛化(继承)和实现

(1) 依赖 Dependency

依赖:假如在 A 类中使用到了 B 类,则说 A 类依赖 B 类。
出现以下几种情况都可以认为 A 类依赖 B 类。
① B 类是 A 类的成员属性
② B 类是 A 类的方法的返回类型
③ B 类是 A 类的方法接收的参数类型
④ B 类在 A 类的方法中被使用到

画出下面代码的 UML 类图。
在这里插入图片描述

public class StudentService {
    private StudentDao studentDao;

    private void save(Student student) {
    }

    public StudentCard getStudentCard(Integer studentId) {
        return new StudentCard();
    }

    public void modify() {
        // 不符合迪米特法则
        School school = new School();
    }
}
public class School {
}
public class Student {
}
public class StudentCard {
}
public class StudentDao {
}

在这里插入图片描述
在这里插入图片描述

(2) 泛化 Generalizatioin

泛化:泛化就是继承。如果 A 类继承了 B 类,就说 A 和 B 存在泛化关系。
画出下图代码的 UML 类图。

public abstract class DaoSupport {
    public void save(Object entity) {

    }

    public void delete(Object id) {

    }
}
public class StudentService extends DaoSupport {

}

泛化

在这里插入图片描述


## (3) 实现 Realization 实现:如果 A 类实现 B 接口,就说 A 类与 B 接口之间存在实现关系。 画出下面代码的 UML 类图。 ```java public interface PersonService { void delete(Integer id); } ```
public class PersonServiceImpl implements PersonService {

    @Override
    public void delete(Integer id) {

    }
}

implementation

在这里插入图片描述


七、类的关联、聚合、和组合

(1) 关联:Association

关联关系:类与类之间的联系。(一对一、一对多)
关联具有导航性:即双向关系或单向关系。
关系具有多重性:1(有且仅有一个);0…(0个或多个);0…1(0个或者一个);n…m(n到m个都可以);m…*(至少 m 个)

写出下面代码的 UML 类图。

public class Person1 {
    private IdCard1 idCard;
}
/**
 * 身份证
 */
/**
 * 身份证
 */
public class IdCard1 {
    
}

在这里插入图片描述
在这里插入图片描述

单向一对一关系:① 一对一(一个人只有一个身份证,一个身份证也只对应一个人);② 单向(Person1 依赖了 IdCard1,但 IdCard1 没有依赖 Person1)

画出下面代码的 UML 类图。

public class Person2 {
    private IdCard2 idCard2;
}
/**
 * 身份证
 */
public class IdCard2 {
    private Person2 person2;
}

在这里插入图片描述
在这里插入图片描述

双向一对一关系:① 一对一(一个人只有一个身份证,一个身份证也只对应一个人);② 双向(Person2 依赖了 IdCard2,IdCard2 也依赖 Person2)


自关联
在这里插入图片描述

(2) 聚合:Aggregation

聚合关系:表示整体和部分的关系,整体与部分可以分开。
聚合关系是关联关系的特例,因此也具有关联的导航性与多重性。
如:一台电脑(Computer)由键盘(Keyboard)、显示器(Monitor),鼠标(Mouse)等组成。但组成电脑的各个配件是可以从电脑上分离出来的。所以,Computer 与 Keyboard、Mouse、Monitor 之间是聚合关系。

画出下面代码的 UML 类图。

public class Keyboard {
    
}
public class Mouse {
    
}
public class Computer {
    private Keyboard keyboard;
    private Mouse mouse;

    public Keyboard getKeyboard() {
        return keyboard;
    }

    public Mouse getMouse() {
        return mouse;
    }
}

在这里插入图片描述
在这里插入图片描述

(3) 组合:Composition

组合关系:整体与部分的关系,但是整体与部分不可以分开
看下面的案例代码,并画出类图。

public class Computer {
    /*
           Computer 实例一创建,Mouse 和 Keyboard 实例就创建。
           所以,Mouse 和 Keyboard 与 Computer 是不可分离的。
           所以,Mouse 和 Keyboard 与 Computer 之间是组合关系。
     */
    private Mouse mouse = new Mouse();
    private Keyboard keyboard = new Keyboard();
}
public class Keyboard {
    
}
public class Mouse {
    
}

在这里插入图片描述
看下面的案例代码,并画 UML 类图。

public class Person {
    // Person 实例化,则 Head 必须实例化(组合)
    private Head head = new Head();
    // Phone 可以从 Person 中分离(聚合)
    private Phone phone;
}
public class Phone {
    
}
public class Head {
    
}

在这里插入图片描述

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐