类与类之间的关系

类与类之间存在以下关系

1. 泛化(继承/实现),Generalization

2. 依赖,Dependency

3. 关联,Association

4. 聚合,Aggregation

5. 合成,Compostiton

 

UML图与应用代码例子:

1. 泛化(Generalization)

 [概念]

表示类与类间的继承,接口与接口间的继承,或类对接口的实现。关系是从子类指向父类的,与关系的方向相反。

 [UML图] 

 

[表现]

父类 父类实例 = new 子类();

[代码示例]

class People{ }

class Man extends People{ }

class Test{

    void  test(){

        People wantsong = new Man();

    }

 

2.  依赖(Dependency)

 [概念]

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系

 [UML图]

 

 [表现]

局部变量,方法的参数和静态方法调用

[代码示例]

class Car{ } 

class People{

    void drive(Car car) {

    }

}

 

 

3.  关联(Association)

 [概念]

对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。

 [UML图]

 

 [表现]

实例变量

[代码示例]

class Wheel{}

class Car{

    private Wheel[] wheels;
    public Wheel[] Wheels{

        get{return wheels};

        set{wheels=value;}

    }

    public void run{

        foreach(Wheel wheel in Wheels){

           wheel.rotate();

        }

    } 

[说明]

a. 现实中的订单与订单明细, 客户和订单,公司和员工等等都具有关联关系;

b. 以下的聚合和合成关系首先也是 关联关系,但是关系密切程度更强。

 

 

4.  聚合(Aggregation)

 [概念]

当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系

 [UML图]


 [表现]

实例变量

[代码示例]

类似于关联。

[说明] 

a. 关联关系和聚合关系从语法上是没办法区分的,只能从语义上区别。

b. 关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。

 

5. 合成(Compostiton)

 [概念]

是关联的一种,比聚合关系更强的关系。要求代表整体的对象会负责代表部分的对象的生命周期。

 [UML图]

 

[表现]

实例变量

[代码示例]

类似于关联。

[说明]

a. 对于具有合成关系(也就是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如订单与订单明细项,订单明细项是不能脱离订单而单独存在的;同样一个订单的消除,也就意味着所有相关的订单明细项也会消除。

b. 我们不能确定一个关系是不是合成关系,可以将其先设置为聚合关系,甚至是关联关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值