依赖(Dependency)spa
依赖能够理解为一个类A使用到了另外一个类B,而这种使用关系是具备偶然性的、临时性的、很是弱的,可是B类的变化会影响到A;好比某人要过河,须要借用一条船,此时人与船之间的关系就是依赖;表如今代码层面,为类B做为参数被类A在某个method方法中使用。对象
图形表示以下:blog
代码实现以下(C#):生命周期
(PS:企鹅依赖于气候,一但南极春天到来,温度小于-10度后,它们将集体迁移到北极去。)ci
关联(Association ))it
关联和泛化是依赖的两种特别形式,关联分为单向关联和双向关联,单向关联是指某一个类中包含另外一个类的所有或一部份,而被包含的类是不知道另外一个类的存在。双向关联是指两个类中互相包含或引用,它们彼此都知道对方的存在。io
用图形表示以下(双向关联) :sso
PS:上图显示了两个类的双向关联的关系,一本书能够由多个做者编写,一个做者也能够编写多本书。引用
用代码实现以下:程序
(PS:一个做者能够写多本书,一样,一本书能够被多个做者编写)
关联类(Association Class)
关联类本质上是一个类附加在一个关联中,被用来做为UML类来建模一种关联关系,它有其本身的名称,属性和方法。然而,它所描述的属性并不属于关联中的对象。好比:一个员工类与一个公司类产生一个合同类的关联后,合同类中的签字日期 这个属性并不属于员工类或公司类。
用图形表示以下:
聚合(Aggregation)
聚合是关联关系的一种,是强的关联关系。聚合关系是总体和个体的关系。普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不一样的层次,一个是总体,一个是部分。同时,是一种弱的 拥有 关系。体现的是A对象能够包含B对象,但B对象不是A对象的组成部分。具体表现为,若是A由B聚合成,表现为A包含有B的全局对象,可是B对象能够不在A建立的时刻建立。
用图形表示以下:
(PS:一个教授拥有一个班级,一个班级至少由一个学生组成:总体 ---> 个体,班级中少一个学生或多一个学生,这将不会直接影响到这种聚合关系)
组合(composition)
组合是关联关系的一种,比聚合关系更强,它要求普通的聚合关系中表明总体的对象负责表明部分的对象的生命周期。组合关系是一种强的“拥有”关系,体现了严格的部分和总体的关系,部分和总体的生命周期一致。若是A由B组成,表现为A包含有B的全局对象,而且B对象在A建立的时刻建立。
用图形表示以下:
(PS:一台电脑由cpu 和其它部件组成,当CPU的生命周期结束后,组合的关系将不存在,computer类的生命周期也将结束。好比:拿掉cpu,电脑将没法再执行程序)