一 官方定义

UML - Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,
用于帮助软件开发人员进行思考和记录思路的结果

基本介绍

UML图:通过不同的图形和符号,来描述软件模型以及各个元素之间的关系
在这里插入图片描述
依赖关系 :一条虚线加箭头的形式
泛化关系:一条实线加三角箭头,箭头要指向父类
实现关系:一条虚线加三角箭头 箭头方向指向接口
关联关系

单向关联: 一条实线加一个箭头
双向关联: 一条实线 (一条实线加两个箭头)

聚合关系: 一条实线加上空心菱形来表示聚合关系
组合关系: 一条实线加上实心菱形来表示组合关系

UML 图分类

  • 用例图(use case)
  • 静态结构图:类图、对象图、包图、组件图、部署图
  • 动态行为图:交互图(时序图与协作图)、状态图、活动图

UML类图:描述类之间的关系

建模工具

  • word,利用word工具可以绘制简单的UML图,但是这是一种非专业的手段,而且绘制起来比较麻烦
  • 利用VISIO工具进行UML图的绘制
  • 利用PowerDesigner工具绘制UML图形,PowerDesigner支持标准数据建模UML
  • IDEA中可以使用PlantUML插件来画类图,也可以下载安装UML Support插件 附录图

二 六大关系

2.1 依赖关系

是一种使用关系,一个类的实现,需要另一个类的协助,逻辑上 use a 表示
只要在类中使用到了对方,是依赖关系,是一种最基本的关系

其他的五种关系,都是依赖关系的特例

代码体现

  • 类中使用到了对方
  • 类的成员属性
  • 方法的接受的参数类型
  • 方法的返回值类型
  • 方法内部使用到了
//案例演示 - 依赖关系的形式
public class PersonServiceBean {
    //类的成员属性
    private PersonDao personDao; 
    //方法的接收参数类型
    public void save(Person person) {  
    }
    //方法的返回值类型
    public IDCard getIDCard() {  
        return new IDCard();
    }
    //方法内部使用到
    public void modify() {
        //违反了迪米特法则 可以这样写,
        Department department = new Department(); 
    }
    
}

class PersonDao {
}

class IDCard {
}

class Person {
}

class Department {
}

UML图示

UML符号:一条虚线加箭头的形式在这里插入图片描述

2.2 泛化关系

泛化关系指的就是继承关系 (语法)

代码体现

class PersonBean{

    public void save(){
        //TODO...
    }

    public void delete(){
        //TODO...
    }
}

public class PersonServiceBean extends PersonBean{


}

UML图示

UML符号:一条实线加三角箭头,箭头要指向父类
在这里插入图片描述

2.3 实现关系

实现关系实际上 A类实现了B接口,A,B存在实现关系 (语法层面)

代码体现

//案例演示 - 实现关系

interface PersonService{
    void delete();
}

public class PersonServiceBean implements PersonService{
    
    @Override
    public void delete() {
        System.out.println("true = " + true);
    }
}

UML图示

UML符号:一条虚线加三角箭头 箭头方向指向接口
在这里插入图片描述

2.4 关联关系

关联关系体现的是业务逻辑上的关系
关联关系具有导航性:单向关联,双向关联 (代码层面上)
关联关系还具有多重性:一对一,一对多,多对多 (业务逻辑上)

代码体现

//单向一对一 
class Person{
   public IDCard idCard; 
}
class IDCard{
   //并没有使用到Person类 
}

//双向一对一 
class Person{
   public IDCard idCard; 
}
class IDCard{
   public Person person; 
}

UML图示

UML符号
单向关联 一条实线加一个箭头
双向关联 一条实线 (一条实线加两个箭头)
在这里插入图片描述

2.5 聚合关系

部分和整体的生命周期不一致,整体消失了,部分仍然存在,部分可以脱离整体存在

聚合关系,是关联关系的一个特例
具有导航性
具有多重性

聚合关系描述的是业务逻辑上整体和部分的关系
整体和部分如果可以分开就构成聚合关系,分不开就是组合关系

解释:

公司和员工:公司倒闭了,员工仍然可以存在,脱离出来,继续换家公司。

代码体现

//案例演示    - 聚合关系
public class Computer {
   public Monitor monitor;
   public Mouse mouse;
}
class Monitor{ 
}
class Mouse{ 
}

UML图示

UML符号:一条实线加上空心菱形来表示聚合关系在这里插入图片描述

2.6 组合关系

部分和整体的生命周期一致,整体消失了,部分也消失了,部分不可以脱离整体而存在
聚合关系描述的是业务逻辑上整体和部分的关系
整体和部分如果可以分开就构成聚合关系,分不开就是组合关系

解释:
鸟和翅膀,鸟消失了,翅膀也就消失了。
公司和部门,公司倒闭了,部门也就不存在了。

代码体现

业务逻辑上人和身份证是可以分开单独存在的,但是人和头是不可以分开的。

//案例演示 - 组合关系
class Person{
    public IDCard idCard; //聚合关系
    public Head head = new Head(); //组合关系
}

class IDCard{
}
class Head{
}

UML图示

UML符号:一条实线加上实心菱形来表示组合关系
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐