UML---类图

简介+结构+事务+关系及代码映射+实例

📍类图简介

​ 类图(Class diagram)是显示了模型的静态结构,模型中存在的类、类的内部结构以及它们与其他类的关系等。(类图图示了所构建系统的所有实体、实体的内部结构以及实体之间的关系)

📍类图结构

指定接口的方式:再类名上方添加*< interface >*

📍类图中的事物

  • 接口:一组操作的集合,只有操作的声明而没有实现
  • 抽象类:不能被实例化的类,一般至少包含一个抽象操作
  • 模板类:一种参数化的类,在编译时把模板参数绑定到不同的数据类型,从而产生不同的类

📍类图中的关系及代码映射(java)

  • 类的映射

    java:
    1
    2
    3
    4
    5
    6
    public abstract class Vehicle{
    public abstract int Start();
    public abstract int Stop();
    public abstrct int Run(float fSpeed);
    private float fMaxSpeed;
    }
  • 关联关系(Association):对象之间一种引用关系,由使用类指向被关联类(可以是单向和双向)
    eg:客户类与订单类

    1. 双向关联
    1
    2
    3
    4
    5
    6
    7
    8
    public class Customer{
    private Order[] order;
    ...
    }
    public class Order{
    private Customer customer;
    ...
    }
    1. 单向关联
    1
    2
    3
    4
    5
    6
    7
    public class Customer{
    private Address address;
    ...
    }
    public class Address{
    ...
    }
    1. 自关联
    1
    2
    3
    4
    public class Node{
    private Node subNode;
    ...
    }
  • 聚合关系(Aggregation):一种不稳定的包含关系,较强于一般关联,整体和局部的关系,局部也可单独存在
    eg:学校类与学生类

    1
    2
    3
    4
    5
    6
    public class Student{
    ...
    }
    public class School{
    private List<Student> students;
    }
  • 组合关系(Composition):一种强烈的聚合关系,部分不能脱离整体存在

    eg: 窗口类和菜单类
    
    <img src="https://miedamie.oss-cn-beijing.aliyuncs.com/img/20210424171101192.png" />
    
    
    1
    2
    3
    4
    5
    6
    7
    public class Menu{
    ...
    }
    public class Window{
    private List<Menu> menus;
    ...
    }
  • 依赖关系(Dependency):对象之间最弱的一种关联方式,临时性的关联。一般指由局部变量、函数参数、返回值建立的对其他对象的调用关系。(使用类指向被依赖类)

    1
    2
    3
    4
    5
    6
    7
    public class Screwdriver {    //螺丝刀,作为人类的工具,是用来被人类使用的

    }
    public class Person{
    public void screw(Screwdriver src){ //拧螺丝,需使用螺丝刀
    }
    }

    依赖关系有如下三种情况:

    1. A类是B类中的(某中方法的)局部变量;
    2. A类是B类方法当中的一个参数;
    3. A类向B类发送消息,从而影响B类发生变化
  • 泛化关系(Generalization):对象之间耦合度最大的一种关系,子类继承父类的所有细节。(箭头从子类指向父类)

    要求:
    
    1. 子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
    2. 子类中除了与父类一致的信息以外,还包括额外的信息;
    3. 可以使用父类的实例的地方,也可以使用子类的实例;
    1
    2
    3
    4
    5
    6
    public class Animal{

    }
    public class Tiger extends Animal{

    }
  • 实现关系(Realization):接口和实现类的关系(实现类指向接口)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public interface Vechicle{
    public void move();
    }
    public class Ship implements Vehicle{
    public void move(){
    ...
    }
    }
    public class Car implements Vehicle{
    public void move(){
    ...
    }
    }

📍生动形象的实例

📌图源:https://www.jianshu.com/p/57620b762160

📌参考博客:https://www.cnblogs.com/chen-chen-chen/p/12295463.html

查看评论