类与类之间的关系

类与类之间有五种关系,分别为:
  1. 关联关系(Association);
  2. 泛化关系(Generalization);
  3. 依赖(Dependency); 
  4. 聚合(Aggregation);
  5. 组合(Composite);
 
关联(Association)
两个相对独立的对象,当一个对象的实例与另一个对象的实例存在固定关系时,这两个对象之间就存在关联关系,关联体现的是一种强关联关系,关联关系形式有四种:单向关联、双向关联、自身关联和多维关联。
泛化(Generalization)
泛化就是类与类的继承关系、类与接口的实现关系。
依赖(Dependency)
类A要完成某个功能必须引用类B,则A和B存在依赖关系,依赖关系是弱关联关系。
聚合(Aggregation)
当对象A被加入到对象B中,成为对象B的一部分时,对象A和对象B就存在聚合关系。聚合关系时关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。 
组合(Composition)
对象A包含对象B,对象B离开对象A就没有存在的意义,是一种更强的关联关系。
单向关联关系:
若A类指向B类,则只需要在A类中实例化类B并使用即可。
双向关联关系:
A类与B类互相实现并使用。
聚合关系:
若A类指向B类,首先理解A是由多个B组合而成,然后根据此关系进行描述;
首先在A类中声明B类型的一个对象_b,而后构造函数A,传入一个B类型的参数b,然后在构造函数中对_b赋值_b=b,完成聚合关系的描述。
组合关系:
同聚合关系的实现思路类似,首先观察并分析组合关系的概念;(由于此处请教了许老师的讲解,所以进行较为详细的描述)
若A类指向B类,那么B类与A类就是相辅相成而存在的,同样,A类缺少了B类也就失去了存在的意义。
我们放入至一个场景中:
此处有一个人类,人类中有两个字段属性为灵魂和肉体,以及一个方法行为存活。
它与两个类,灵魂类、肉体类存在着组合的关系,显而易见,若是没有灵魂只有肉体,人类没有有意义;若只有灵魂没有肉体,人类依然么没有意义;人类没有灵魂和肉体,就更没有意义了。这很好体现了组合之间的关系,一种同生共死的状态,搞明白其中的关系,就可以进行描述了;
首先在人类中声明字段灵魂容器(soul)和肉体容器(body),然后构造函数人类,在人类中对灵魂类和肉体类进行实例化,在人类的构造函数中将两个容器实例化,然后将两个类中的灵魂和肉体分别赋予给人类的灵魂肉体字段,然后灵魂和肉体就有了灵魂方法和肉体方法,这样才会产生一个有意义的人类,完成组合关系的描述。
代码描述如下:
class People {
    public Soul soul;
    public Body body;
    public People () {
        soul = new Soul ();
        body = new Body ();
    }
    public Alive () {
    }
}
 
class Soul {
    public soul () {
    }
}
 
class Body {
    public body () {
    }
}

 

依赖关系:
若A类指向B类,则说明A是依靠B存在的,也就是说,B可以脱离A单独存在,而A脱离B将是毫无意义的;
A类中有一个方法行为传入一个B类的必要参数,即可完成依赖关系的描述。
泛化关系:
泛化关系主要为两种,一种是对于父类的继承;另一种就是对于接口的实现;此处不做过多赘述。
但是要强调一点,子类只能继承一个父类,但是可以实现多个端口,使用逗号分隔。
 
码路上的小白,哪里不对还望前辈们指出,感激不尽!
 
posted @ 2020-03-06 17:22  溺水的鲨鱼  阅读(698)  评论(0编辑  收藏  举报