Class Diagram概念辨析

1. 两种关联关系的特例:

 

    1)  聚合 Aggregation ——

Aggregation: b can live without its context (object of A).
============================================
==C++==
class B{
    B* b;
}
==java==
class B{
    B b;
    public A(B b){
       this.b = b;
    }
}

    聚合是整体与部分、拥有的关系,即 has-a 的关系,此时整体和部分之间可以分离,他们可以具有各自的生命周期 ,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与 CPU 、公司和员工的关系等;表现在代码层面上,和关联关系一致,只能从语义级别区分。



    

 

    2)  组合 Composition ——

Composition: b's lifetime is up to its context (object of A).
==C++==
class A{
    B b;
}
==java==
class A{
    B b;
    public A(){
       b = new B();
    }
}

    组合也是关联关系的一种特例,他体现一种 contains-a 关系,这种关系比聚合关系更强,也称为强聚合;它同样体现为整体和部分见的关系,但此时整体和部分是不可分割的, 整体的生命周期结束时部分的生命周期也结束 。比如,你和你的大脑。在代码层面上,和关联关系一样,只能从语义级别区分。



    

 

2. 几个例子:

 

演出售票系统

      在用例驱动的开发过程中,通过分析各个用例及参与者得到类图。分析用例图的过程中需要根据面向对象的原则设计类和关系,根据用例的细节设计类的属性和操作



 

 

Composite模式



 

 

 

    * 从演出售票系统理解 multiplication 的使用—— SubscriptionSeriesTicket 之间的多重性是“ 0...1 ”和“ 3...6 ”:

    A. 特定的 1SubscriptionSeries 实例,在数据表中找得到它对应的 3...6Ticket 实例;

    B. 特定的 3...6Ticket 实例,在数据表中找得到他们对应的 1SubscriptionSeries ;或者 0SubscriptionSeries ,因为可能这些 Ticket 来自 IndividualReservation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值