UML类图

作者: stanJ | 来源:发表于2021-04-25 15:42 被阅读0次

    具体概念待学习
    以下四种图示比较容易混淆

    依赖(Dependency)

    --------> 虚线箭头表示
    依赖关系是一种使用关系,某事物的改变有可能会影响到使用该事物的其他事物。
    通过三种方式来实现:

    • 最常见的是将一个类的对象作为另一个类中方法的参数
    • 在一个类的方法中将另一个类的对象作为局部变量
    • 在一个类的方法中调用另一个类的静态方法
      方式一举例 驾驶员开车
    public class Driver {
      public void drive(Car car) {
        car.move();
      }
    }
    public class Car {
      public void move() {
      ...
      }
    }
    

    聚合(Aggregation)

    <>——> 空心菱形+实线箭头表示
    表示整体和部分的关系。成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
    实现方式:成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。
    与关联区别:
    关联不是整体和部分的区别,所以一般不会作为构造方法参数传入。ps:自己的理解
    与组合的区别:
    成员对象可以独立存在,组合通常直接在构造方法中直接实例化成员类
    例子一 汽车与引擎

    public class Car {
      private Engine engine;
      // 构造注入
      public Car(Engine engine) {
        this.engine = engine;
      }
      // 设值注入
      public void setEngine(Engine engine) {
        this.engine = engine;
      }
      ...
    }
    public class Engine {
      ...
    }
    

    例子二 雁群与大雁

    public class GooseGroup {
      private Goose[] gooseArray;
      public GooseGroup(gooseArray) {
        this.gooseArray = gooseArray;
      }
      public void flyInVFormation() { // V形飞行
        ...
      }
      ...
    }
    public class Goose {
     ...
    }
    

    组合/合成(composition)

    ◆——> 实心菱形+实线箭头
    也表示整体与部分的关系。但是整体对象可以控制成员对像的生命周期,两者同生共死。
    实现方式,在整体类的构造方法中直接实例化成员类
    例子一:头与嘴

    public class Head {
      private Mouth mouth;
      public Head() {
        mouth = new Mouth();
      }
      ...
    }
    public class Mouth {
      ...
    }
    

    例子二:鸟与翅膀

    public class Bird {
      private Wing wing;
      public Bird() {
        wing = new Wing();
      ...
      }
    }
    public class Wing {
      ...
    }
    

    关联(association)

    ——> 实线箭头表示
    通常将一个类的对象作为另一个类的成员变量
    比如表单里包含一个按钮

    public class LoginForm {
      private JButton loginButton; // 定义为成员变量
      ...
    }
    public class JButton {
      ...
    }
    

    双向关联 比如顾客购买商品并拥有商品,反之,卖出的商品总有某个顾客与之关联

     public class Customer {
      private Product[] products;
      ...
    }
    public class Product {
      private Customer customer;
    }
    

    相关文章

      网友评论

          本文标题:UML类图

          本文链接:https://www.haomeiwen.com/subject/bfqhrltx.html