一、UML类图基本介绍

1,UML介绍

  • UML — Unified modeling language(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用户帮助软件开发人员进行思考和记录思路的结果
  • UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用户描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛华、依赖、组合、聚合等。

2,UML图

  画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类:

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

  说明:类图是描述类与类之间的关系的,是UML图中最核心的

3,UML类图

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

二、类图——依赖(Dependence)

1,基本介绍

  • 依赖关系:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
  • 代码表现:局部变量、方法的参数护着对静态方法的调用
  • 标识符:带箭头的虚线,指向被使用者

2,示例图

  代码示例

//另外4个类与当前类都是依赖关系
public class PersonService {
    private PersonDao personDao;
    public void save(Person person) {
    }
    public IDCard getIDCard(Integer personid) {
        return new IDCard();
    }
    public void modify() {
        Department department = new Department();
    }
}

class PersonDao {}

class Person {}

class IDCard {}

class Department {}

  

3,总结

  • 类中用到了对方
  • 类的成员属性
  • 方法的返回类型
  • 方法接收的参数类型
  • 方法中使用到

三、类图——泛化(Generalization)

1,基本介绍

  • 泛化关系:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
  • 标识符:带三角箭头的实线,箭头指向父类

2,示例图

  代码示例

public abstract class Father {
    public void eat() {
    }
}

public class Son extends Father {}

  

3,总结

  • 泛化关系实际上就是继承关系
  • 如果A类继承了B类,我们就说A和B存在泛化关系

四、类图——实现(Implementation)

1,基本介绍

  • 实现关系:指的是一个class类实现Interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在java中此类关系通过关键字implements明确标识
  • 标识符:带三角箭头的虚线,箭头指向接口

2,示例图

  代码示例

public interface PersonService {
    public void delete(int id);
}

public class PersonServiceImpl implements PersonService {
    @Override
    public void delete(int id) {}
}

  

五、类图——关联(Association)

1,基本介绍

  • 关联关系:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生、丈夫与妻子关联等。关联可以是双向关联,也可以是单向关联。双向关联可以有两个箭头或没有箭头,单向关联有一个箭头。它是依赖关系的特例
  • 0..1:表示可以有0个或者1个实例;0..*: 表示对实例的数目没有限制;1   :表示只能有一个实例;1..* :表示至少有一个实例
  • 标识符:带普通箭头的实心线,指向被拥有者

2,示例图

  代码

public class Teacher {
}
public class Student {
    Teacher teacher;
}

  

六、类图——聚合(Aggregation)

1,基本介绍

  • 聚合关系:是整体与部分的关系,且部分可以离开整体而单独存在。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
  • 标识符:使用带空心菱形的实现表示

2,示例图

  代码示例,与关联代码一致

public class Computer {
    Mouse mouse;

    public void setMouse(Mouse mouse) {
        this.mouse = mouse;
    }
}

public class Mouse {
}

   

七、类图——组合(Composition)

1,基本介绍

  • 组合关系:是整体与部分的关系,但部分不能离开整体而单独存在组合关系也是关联关系的一种,是比聚合关系还要强的关系
  • 标识符:带实心菱形的实线,菱形指向整体

2,示例图

  代码示例,与关联代码一致

public class Computer {
    Mouse mouse = new Mouse();
}

public class Mouse {
}

  

八、总结

  组合、聚合、关联和依赖这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系。关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

版权声明:本文为bbgs-xc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bbgs-xc/p/15173646.html