精华内容
下载资源
问答
  • 当对象A对象B依赖,关联和聚集的相同之处

    关联和聚集的相同之处:当对象A和对象B之间存在依赖关系时,对象A都有可能调用对象B的方法。

    1)依赖关系的特征

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

    例如:自行车Bicycle和打气筒Pump

    public class Bicycle{
        /*给轮胎打气*/
        public void expand(Pump pump){
            pump.blow();
        }
    }

    2)关联关系的特征

    对于两独立的系统,当A系统的实例和B系统的实例存在特定的对应关系时,该两系统之间为关联关系。(从业务上讲)

    例如:人和Person和自行车Bicycle

    public class Person{
        private Bicycle bicycle;//主人的自行车
        
        public Bicycle getBicycle(){
            return bicycle;
        }
    
        public void setBicycle(Bicycle bicycle){
            this.bicycle=bicycle;
        }
    
        /**骑自行车去上班*/
        public void goToWork(){
            bicycle.run();
        }
    }
    ?以上关联关系中存在依赖关系,主人依赖自行车去上班。

    ?从业务上讲,A依赖B,A依赖B才能成功;A关联B,A和B具有特殊的关系或者特殊的利益,A的成功不一定需要B。


    3)聚集关系的特征

    当系统A加入到系统B中,成为系统B的组成部分时,系统B和系统A为聚集关系。

    例如:自行车和响铃,电脑和主板

    public class Bicycle{
        private Bell bell;
    
        public Bell getBell(){
            return bell;
        }
    
        public void setBell(Bell bell){
            this.bell=bell
        }
    
        /**发出铃声*/
        public void alert(){
            bell.ring();
        }
    }



    展开全文
  • 在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。 1.依赖...

    在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A和对象B之间存在依赖、关联或聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。

    1.依赖关系的特征
    对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间主要体现为依赖关系,例如生产零件的机器和零件,机器负责构造零件对象。再例如充电电池和充电器,充电电池通过充电器来充电。再例如自行车Bicycle和打气筒Pump,自行车通过打气筒来充气。图1-39为Bicycle类与Pump类的类框图。



    图1-39 Bicycle类与Pump类的依赖关系

    Bicycle类和Pump类之间是依赖关系,在Bicycle类中无需定义Pump类型的变量。Bicycle类的定义如下:

    public class Bicycle{
    /** 给轮胎充气 */
    public void expand(Pump pump){
    pump.blow();
    }
    }
    在现时生活中,通常不会为某一辆自行车配备专门的打气筒,而是在需要充气的时候,从附近某个修车棚里借个打气筒打气。在程序代码中,表现为Bicycle类的expand()方法有个Pump类型的参数。以下程序代码表示某辆自行车先后到两个修车棚里充气:

    myBicycle.expand(pumpFromRepairShed1); //到第一个修车棚里充气
    myBicycle.expand(pumpFromRepairShed2); //若干天后,到第二个修车棚里充气

    2.关联关系的特征
    对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。例如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司;再例如自行车和主人,每辆自行车属于特定的主人,每个主人有特定的自行车,图1-40显示了主人和自行车的关联关系。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间也不存在固定的对应关系。

    图1-40 主人和自行车的关联关系


    Person类与Bicycle类之间存在关联关系,这意味着在Person类中需要定义一个Bicycle类型的成员变量。以下是Person类的定义:

    public class Person{
    private Bicycle bicycle; //主人的自行车

    public Bicycle getBicycle(){
    return bicycle;
    }
    public void setBicycle(Bicycle bicycle){
    this.bicycle=bicycle;
    }
    /** 骑自行车去上班 */
    public void goToWork(){
    bicycle.run();
    }
    }


    在现时生活中,当你骑自行车去上班时,只要从家里推出自己的自行车就能上路了,不象给自行车打气那样,在需要打气时,还要四处去找修车棚。因此,在Person类的goToWork()方法中,调用自身的bicycle对象的run()方法。假如goToWork()方法采用以下的定义方式:

    /** 骑自行车去上班 */
    public void goToWork(Bicycle bicycle){
    bicycle.run();
    }

    那就好比去上班前,还要先四处去借一辆自行车,然后才能去上班。


    3.聚集关系的特征
    当系统A被加入到系统B中,成为系统B的组成部分时,系统B和系统A之间为聚集关系。例如自行车和它的响铃、龙头、轮胎、钢圈以及刹车装置就是聚集关系,因为响铃是自行车的组成部分。而人和自行车不是聚集关系,因为人不是由自行车组成的,如果一定要研究人的组成,那么他应该由头、躯干和四肢等组成。由此可见,可以根据语义来区分关联关系和聚集关系。

    聚集关系和关联关系的区别还表现在以下方面:

    (1) 对于具有关联关系的两个对象,多数情况下,两者有独立的生命周期。比如自行车和他的主人,当自行车不存在了,它的主人依然存在;反之亦然。但在个别情况下,一方会制约另一方的生命周期。比如客户和订单,当客户不存在,它的订单也就失去存在的意义。

    (2) 对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如小王的自行车被偷了,那么自行车的所有组件也不存在了,除非小王事先碰巧把一些可拆卸的组件(比如车铃和坐垫)拆了下来。
    不过,在用程序代码来表示关联关系和聚集关系时,两者比较相似。图1-41为自行车Bicycle与响铃Bell的聚集关系。

    图1-41 自行车和响铃的聚集关系

    以下例程1-6是Bicycle类的源程序。

    例程1-6 Bicycle.java

    public class Bicycle{
    private Bell bell;

    public Bell getBell(){
    return bell;
    }

    public void setBell(Bell bell){
    this.bell=bell;
    }

    /** 发出铃声 */
    public void alert(){
    bell.ring();
    }
    }
    在Bicycle类中定义了Bell类型的成员变量,Bicycle类利用自身的bell成员变量来发出铃声,这和在Person类中定义了Bicycle类型的成员变量,Person类利用自身的bicycle成员变量去上班很相似。

    不妥的地方:

    第三部分——聚集关系的特征,作者并没有准确区分聚集关系和组合关系,把聚集关系和组合关系混为一谈了。组合关系指被包含对象是包含对象的一部分。组合和聚集都有“一个对象包含另外一个或多个对象”的意思,但是,组合意味着“被包含对象是包含对象的一部分”,而聚集意味着被包含对象更像是一个集合。自行车有响铃、龙头、轮胎、钢圈等,很显然这是组合关系;同样人的头、四肢和躯干和人之间也是组合关系。再比如,飞机场有飞机,飞机可以看着是一个集合,所以飞机和飞机场之间是聚集关系。

    展开全文
  • 在UML中,关联,依赖,聚集,组成的联系十分紧密,不容易区分,本文试图用通俗的语言来讲解这四种关系的区别关联,即是发生关系,一个类A关联类B,说明类A中的字段(或属性)中含有类B的实例链接(在C++中为...
    在UML中,关联,依赖,聚集,组成的联系十分紧密,不容易区分,本文试图用通俗的语言来讲解这四种关系的区别。
    关联,即是发生关系,一个类A关联类B,说明类A中的字段(或属性)中含有类B的实例链接(在C++中为指针),类B也可以关联类A,他们是对等的,没有主次之分。
    依赖,类A依赖类B,说明类A中用到了类B,这个“用到”,比关联的程度更浅,比如,在局部变量(函数中的变量和函数参数)中用到了类B,也可能是类A用到了类B的静态函数。
    聚集:聚集也是一种关联,但是对于关联来讲,关联的双方都是对等的,没有主次之分,在聚集中,则有主次之分,“主”的一方只能有一个。那计算机来说,“计算机”是一个对象,他就是“主”,而“硬盘”,“主板”,“显示器”等等则是“次”的一方,“硬盘”,“主板”,“显示器”聚集成“计算机”,他们只是聚集的关系,主板完蛋了,并不影响显示器,所以大家可以理解为聚集中的对象,即是一个整体,又各自独立。
    组成:组成是一种特殊的聚集(那当然也是关联喽),拿桌子来说吧,桌子有桌面和桌腿组成,然桌面没有了或桌腿没有了,都不能称之为桌子,这个意思就是说,对于组成对象的个部分来讲,他们有一个有机的整体,不可分割的整体。桌子对象(主体对象)要负责桌面,桌腿(“次”对象,主次之分的“次”)的生命周期。拿C++语言来讲,桌子对象内部含有桌面对象和桌腿对象的对象实例,这可不是指针喽,但在“聚集”中是指针,这也就是聚集和组成的区别。
    展开全文
  • 在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。 1...

    在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A和对象B之间存在依赖、关联或聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。

    1.依赖关系的特征


    对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间主要体现为依赖关系,例如生产零件的机器和零件,机器负责构造零件对象。再例如充电电池和充电器,充电电池通过充电器来充电。再例如自行车Bicycle和打气筒Pump,自行车通过打气筒来充气。图1-39为Bicycle类与Pump类的类框图。



    图1-39 Bicycle类与Pump类的依赖关系

    Bicycle类和Pump类之间是依赖关系,在Bicycle类中无需定义Pump类型的变量。Bicycle类的定义如下:

    public class Bicycle{
    /** 给轮胎充气 */
    public void expand(Pump pump){
    pump.blow();
    }
    }


    在现时生活中,通常不会为某一辆自行车配备专门的打气筒,而是在需要充气的时候,从附近某个修车棚里借个打气筒打气。在程序代码中,表现为Bicycle类的expand()方法有个Pump类型的参数。以下程序代码表示某辆自行车先后到两个修车棚里充气:

    myBicycle.expand(pumpFromRepairShed1); //到第一个修车棚里充气
    myBicycle.expand(pumpFromRepairShed2); //若干天后,到第二个修车棚里充气

    2.关联关系的特征
    对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。例如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司;再例如自行车和主人,每辆自行车属于特定的主人,每个主人有特定的自行车,图1-40显示了主人和自行车的关联关系。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间也不存在固定的对应关系。

     

     

    图1-40 主人和自行车的关联关系


    Person类与Bicycle类之间存在关联关系,这意味着在Person类中需要定义一个Bicycle类型的成员变量。以下是Person类的定义:

    public class Person{
    private Bicycle bicycle; //主人的自行车

    public Bicycle getBicycle(){
    return bicycle;
    }
    public void setBicycle(Bicycle bicycle){
    this.bicycle=bicycle;
    }
    /** 骑自行车去上班 */
    public void goToWork(){
    bicycle.run();
    }
    }


    在现时生活中,当你骑自行车去上班时,只要从家里推出自己的自行车就能上路了,不象给自行车打气那样,在需要打气时,还要四处去找修车棚。因此,在Person类的goToWork()方法中,调用自身的bicycle对象的run()方法。假如goToWork()方法采用以下的定义方式:

    /** 骑自行车去上班 */
    public void goToWork(Bicycle bicycle){
    bicycle.run();
    }

    那就好比去上班前,还要先四处去借一辆自行车,然后才能去上班。


    3.聚集关系的特征


    当系统A被加入到系统B中,成为系统B的组成部分时,系统B和系统A之间为聚集关系。例如自行车和它的响铃、龙头、轮胎、钢圈以及刹车装置就是聚集关系,因为响铃是自行车的组成部分。而人和自行车不是聚集关系,因为人不是由自行车组成的,如果一定要研究人的组成,那么他应该由头、躯干和四肢等组成。由此可见,可以根据语义来区分关联关系和聚集关系。

    聚集关系和关联关系的区别还表现在以下方面:

    (1) 对于具有关联关系的两个对象,多数情况下,两者有独立的生命周期。比如自行车和他的主人,当自行车不存在了,它的主人依然存在;反之亦然。但在个别情况下,一方会制约另一方的生命周期。比如客户和订单,当客户不存在,它的订单也就失去存在的意义。

    (2) 对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如小王的自行车被偷了,那么自行车的所有组件也不存在了,除非小王事先碰巧把一些可拆卸的组件(比如车铃和坐垫)拆了下来。
    不过,在用程序代码来表示关联关系和聚集关系时,两者比较相似。图1-41为自行车Bicycle与响铃Bell的聚集关系。

     


    图1-41 自行车和响铃的聚集关系

    以下例程1-6是Bicycle类的源程序。

    例程1-6 Bicycle.java

    public class Bicycle{
    private Bell bell;

    public Bell getBell(){
    return bell;
    }

    public void setBell(Bell bell){
    this.bell=bell;
    }

    /** 发出铃声 */
    public void alert(){
    bell.ring();
    }
    }


    在Bicycle类中定义了Bell类型的成员变量,Bicycle类利用自身的bell成员变量来发出铃声,这和在Person类中定义了Bicycle类型的成员变量,Person类利用自身的bicycle成员变量去上班很相似。

    展开全文
  • 图的描述抽象——动态聚集关联和依赖的应用实例 一、 问题描述 在数据结构图论中,我们经常会接触到“图”这种数据结构。“图”在很多程序中都有着极其重要的作用。因此,在计算机当中描述一个图,并将其显示...
  • 选取复杂网络特征变量—聚集系数为研究目标,通过数学推导与证明,清晰描述了k-核与聚集系数的关联性。通过仿真实验证明,随着k-核的不断解析、k值的不断增加,网络聚集系数亦呈现逐步增加的趋势。该结论为k-核解析...
  • 在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。 1.依赖关系...
  • 区分关联、依赖聚合、合成的关系 2008-10-12 15:15 ... 摘自《Java面向对象编程》一书 ... 在建立对象模型时,很...当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关...
  • 1网上查询:多态与重载的区别: 这个没有可比较性。重载是多态的一种。 多态的形式有: 覆盖:输入参数一样,但对于不同的...2.关联,组合和聚集,依赖,继承。 关联是一种描述两个类之间行为的一般二元关系。两...
  • matlab开发-用数据关联分析血小板聚集形态。二维自相关分析血小板聚集形态
  • 在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。 1.依赖关系...
  • 依赖和关联区别

    2012-12-06 14:40:19
    在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。 1.依赖...
  • 多态: 一个名称,多种形式。...聚合:关联关系的一种,一个对象成为另一个对象的组成部分,两个对象间存在“has a”关系一个对象作为另一个对象的属性存在,在外部对象被生产时,可由客户端指定与其关联的内部...
  • 1. 关联:连接模型元素及链接实例,用一条实线来表示;2. 依赖:表示一个元素以某种方式依赖于另... (关联,依赖,聚集,组成的异同见后描述)5. 泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头...
  • 聚集索引聚集索引的区别

    千次阅读 2013-01-16 16:14:27
    但非聚集索引因为与物理页面关联不大,可以建立多个这样的索引。 ======================参与他文==================================================  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,405
精华内容 20,162
关键字:

聚集和关联的区别