UML之类图关系(继承实现依赖关联聚合组合)

Posted 花姓-老花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML之类图关系(继承实现依赖关联聚合组合)相关的知识,希望对你有一定的参考价值。

继承

    指的是一个类(称为子类,子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能,继承是类与类或者接口与接口之间最常见得关系,一个类最多只能继承一个类

   

public class ClassA extends ClassB     


public class ClassB 




实现

    指的是一个class类实现interface接口(可以多实现),实现是类与接口之间最常见关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性


public class ClassA implements InterfaceA 

    @Override
    public void test() 
        
    


public interface InterfaceA 
    void test();


依赖

可以简单的理解,就是一个类A使用到另一个类B,而这种使用关系是具有偶然性、临时性,但B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖,为类B作为参数被类A在某个method方法中使用


public class ClassA 

    public void depend(ClassB b)
    


public class ClassB 

或A为一个圆柱体类,要求A实例的体积

//圆柱体类
public class A 
    public static void main(String[] args) 
        double zArea = 0;
        //底面积及为一个圆(B类)的面积
        B b = new B();
        double height = 1.6;
        //调用B类的getArea()方法,形成依赖关系
        zArea = b.getArea(4)*height;
    


//圆类B
public class B 

    public double getArea(int r)
        double area = 0;
        area = Math.PI*r*r;
        return area;
    

关联(Association)

它体现的是两个类、或者类与接口之间语义级别的一种强依赖关系。比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、临时性,一般是长期性而且双方的关系一般是平等的;关联可以是单向的,也可以是双向的,表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;


public class ClassA 
    private ClassB classB;


public class ClassB 


聚合

聚合是关联关系的一种特例,聚合关系是整体和个体/部分之间的关系,即has-a(包含)的关系;关联关系的两个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中,代表个体/部分的对象有可能会被多个代表整体的对象所共享

has-a 是组成关系,在组成关系中,一个对象将一个或者多个其它对象作为自己的成员。


public class Family  
    int id;  
    String name;  
    Child child;//Child is a class  
    ...  
在这种情况下,Family有一个实体引用Child,因此关系是:Family HAS-A Child。

组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;房子和房间的关系,当房子没有了,房间同样不可能单独存在


//房子
public class House 

    private Room room ;
    public House()
        room = new Room() ;
    

    public void createHouse()
        room.createRoom() ;

    


//房间
public class Room 

    public Room createRoom()
        System.out.println("创建房间");
        return new Room() ;
    
 

聚合和组合的区别:聚合是个体离开了整体,依然可以存在
                              组合是个体和整体不可以分开,个体不能离开整体单独存在

几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;


以上是关于UML之类图关系(继承实现依赖关联聚合组合)的主要内容,如果未能解决你的问题,请参考以下文章

UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合)

UML类图关系(泛化(继承)实现依赖关联聚合组合)

UML类图关系(泛化 继承实现依赖关联聚合组合)-转

UML类图关系(泛化 继承实现依赖关联聚合组合)

UML中的6大关系(关联依赖聚合组合泛化实现)

架构漫谈:UML中几种类间关系:继承实现依赖关联聚合组合的联系与区别