美文网首页
UML类图的几种关系

UML类图的几种关系

作者: 程序员修仙 | 来源:发表于2017-08-02 12:38 被阅读18次

    类图是描述类与类之间关系的示意图,它形象的描述了系统的结构,有助于与更深刻的理解软件的设计思想。
    类图中类的关系由强到弱可以分为4种:泛化 ---> 实现 ---> 关联 ---> 依赖。

    1. 泛化

    关系说明:泛化是一种继承。它指定了子类如何特化父类的所有特征和行为。
    代码说明:父类与子类
    图例:空心三角形的实线箭头,箭头指向父类
    代码:

    public class Base{
    }
    public class BaseExt extends Base{
    }
    

    2. 实现

    关系说明:实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。
    代码说明:实现类和接口
    图例:空心三角形虚线箭头,箭头指向接口
    代码:

    public interface IBase{
        public void doSomething();
    }
    
    public class BaseImp implements IBase{
        @Override
        public void doSomething(){
           System.out.println("doSomething!");
        }
    }
    

    3. 关联

    关系说明:关联表示类与类之间的拥有关系。即一个类是另一个类的成员。
    关联的种类:自关联、单向关联、双向关联、多重关联、聚合、组合等

    3.1 自关联

    关系说明:一个类包含自己。
    代码说明:成员变量
    图例:普通实线箭头指向自己
    代码:

     public class Node {
         private Node node;
    }
    

    3.2 单向关联

    关系说明:一个类包含另一个类的成员,另一个类没有该类的成员
    代码说明:成员变量
    图例:普通实线箭头指向被关联的类
    代码:

    public class NodeA{
    }
    public class NodeB{
       private NodeA nodeA;
    }
    
    

    3.3 双向关联

    关系说明: 两个类互相包含另一个类的成员。(容易循环引用,造成内存泄漏)
    代码说明:成员变量
    图例:普通实线,不带箭头
    代码:

    public class NodeA{
        private NodeB nodeB;
    }
    
    public class NodeB{
        private NodeA nodeA;
    }
    
    

    3.4 多重关联

    关系说明:一个类中包含另一个类的多个成员。
    代码说明:成员变量
    图例:带数量关系说明的实线,不带箭头。
    代码:

    public class NodeA{
    }
    public class NodeB{
        private NodeA[] nodeAs;
    }
    

    3.5 聚合

    关系说明:聚合是整体与部分的关系,成员对象是整个对象的一部分,成员对象的可以独立存在。如:轮胎和汽车关系
    代码说明:成员变量
    图例:带空心菱形的实线箭头,菱形指向整体,箭头指向部分。
    代码:

    public class Car{
        public Tire tire;
    }
    public class Tire{
    }
    

    3.6 组合

    关系说明:组合是整体与部分的关系,成员对象是整体的一部分,整体对象控制着成员对象的生命周期,一旦整体不存在,成员对象也不存在。如:人的身体和手
    代码说明:成员变量
    图例:带实心菱形的实线箭头,菱形指向整体,箭头指向部分
    代码:

    public class Body{
        private Hand hand;
    }
    public class Hand{
    }
    

    4. 依赖

    关系说明:依赖表示类与类之间的使用关系。表示一个事物使用另一个事物。
    代码说明:局部变量、方法的参数或者对静态方法、成员的调用
    图例:带箭头的虚线,指向被使用者
    代码:

    public class Boat{
    }
    public class People{  
        public int acrossRiver(Boat boat){
              .........
        }
    }
    

    5. 总结

    对类图关系的理解,可以帮助更好的理解设计模式的精髓。后面笔者将逐步介绍几种常见的设计模式。

    相关文章

      网友评论

          本文标题:UML类图的几种关系

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