UML类图
在UML类图中,常见的有以下几种关系: 继承(泛化)、实现、关联、依赖、聚合、组合
各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
依赖
依赖属于一种泛化的概念,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A
比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖
使用场景:在类中用到了对方、作为类的成员属性(聚合)、方法的返回值、方法的参数类型、方法中使用
带箭头的虚线,指向被使用者

继承(泛化)
继承是依赖关系的特例,其指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;
在Java中此类关系通过关键字extends明确标识。在UML类图中,用一种实线三角号表示继承关系,三角号指向父类

实现
指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识
在UML类图中,用虚线三角表示实现关系,三角号表示接口

聚合
聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,举例:
class Engine{
}
class Car{
    Engine engine;//汽车和引擎可分离
    public Engine getEngine() {
        return engine;
    }
    public void setEngine (Engine engine) {
        this.engine = engine;
    }
}
聚合通过空心菱形箭头的直线表示,UML类图表示为带空心菱形的实心线,菱形指向整体

组合
组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的
//部门
class Department{
}
//公司
class Corporation{
    Department department = new Department ();//不可分离的
    public Department getDepartment() {
        return department;
    }
    public void setDepartment(Department department) {
        this.department = department;
    }
}
UML类图如下,UML类图表示为带空心菱形的实心线,菱形指向整体

关联
关联关系是一种拥有的关系,属于依赖关系的特例。它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
双向关联举例:

 
                     
                    
                 
                    
                 
 posted on
 posted on 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号