面向对象:类之间的关系

1,关联关系(Dependence)

关联体现的是两个类之间语义级别的一种强依赖关系,有时也被称为“相识”或“引用”关系。这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。

例:

class Employee{
     private int eid;//员工编号
     private String name;//员工姓名
private Computer coumputer;//员工所使用的电脑
//....
}
class Computer{
}

依赖关系有三种情况:

1)A类是B类方法当中的一个参数;
2)A类是B类中的(某中方法的)局部变量;
3)A类向B类发送消息,从而影响B类发生变化;

2,泛化关系(Generalization)

表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的。

例:

public class Person 
 {
    protected String name;
    protected int age;
    public void move() 
    {
        ……
    }
    public void say() 
    {
       ……
     }
 }
 public class Student extends Person 
 {
    private String studentNo;
    public void study() 
    {
        ……
   }
}

3,依赖关系(Dependence)

依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如人出行需要坐车,这时候人和车之间的关系就是依赖。

例:

class A{
public B method(C c,D d){
E e = new E();
... 
B b = new B();
... 
return b; } }

4,聚合关系(Aggregation)

合是关联关系的一种特例,它体现的是整体与部分的关系。整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如公司和员工的关系,汽车类与引挚类,轮胎类之间的关系等等。

例:

class Car{
private Engine engine;//引擎
private Tyre[] tyres;//轮胎 
}

5,组合关系(Composition)

组合也是关联关系的一种特例,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。

例:

class Window{
private Menu menu;//菜单 
private Slider slider;//滑动条
private Panel panel;//工作区
}

6,实现关系(Implementation)

用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。

你可能感兴趣的