精华内容
下载资源
问答
  • 聚集和关联的区别
    更多相关内容
  • 区分关联、依赖聚合、合成的关系 2008-10-12 15:15 ... 摘自《Java面向对象编程》一书 ... 在建立对象模型时,很...当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关...
    区分关联、依赖和聚合、合成的关系
    2008-10-12 15:15

    摘自《Java面向对象编程》一书

     

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

    关联(Association)关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言里,关联关系是使用实例变量实现的。 聚合(Aggregation)关系是关联关系的一种,是强的关联关系。聚合是整体和个体之间的关系。例如,汽车类与引擎类、轮胎类,以及其它的零件类之间的关系便整体和个体的关系。与关联关系一种,聚合关系也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。 合成(Composition)关系是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,合成关系是不能共享的。代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,代表部分的对象在每一个时刻只能与一个对象发生合成关系,由后者排他地负责生命周期。部分和整体的生命周期一样。 依赖(Dependency)也是类与类之间的连接,依赖总是单向的。依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House类的定义,因为Person类引用了Car和House。与关联不同的是,Person类里并没有Car和House类型的属性,Car和House的实例是以参量的方式传入到buy()方法中去的。一般而言,依赖关系在Java语言中体现为局域变量、方法的参量,以及对静态方法的调用。每一个依赖关系都有一个名字。

     

    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成员变量去上班很相似。

     

    转载于:https://www.cnblogs.com/mikejay1234/archive/2009/01/19/1378373.html

    展开全文
  • 选取复杂网络特征变量—聚集系数为研究目标,通过数学推导与证明,清晰描述了k-核与聚集系数的关联性。通过仿真实验证明,随着k-核的不断解析、k值的不断增加,网络聚集系数亦呈现逐步增加的趋势。该结论为k-核解析...
  • 我们可以看到以下关系:主人喂宠物,宠物感谢主人(关联)尾巴是狗猫的一部分(聚集/组成)猫是一种宠物(遗传/概括)下图显示了三种类型的关联连接器:关联、聚合组合。我们将在这个UML指南中复习它们。下图显示了一个...

    考虑以下对象类之间的差异和相似之处:宠物、狗、尾巴、主人。

    我们可以看到以下关系:

    主人喂宠物,宠物感谢主人(关联)

    尾巴是狗和猫的一部分(聚集/组成)

    猫是一种宠物(遗传/概括)

    下图显示了三种类型的关联连接器:关联、聚合和组合。我们将在这个UML指南中复习它们。

    下图显示了一个概括。我们将在稍后的UML指南中讨论它。

    关联

    如果一个模型中的两个类需要彼此通信,那么它们之间必须有一个链接,并且可以通过一个关联(连接器)来表示。

    关联可以用这些类之间的一条线表示,该线带有指示导航方向的箭头。如果两边都有箭头,则这种关联称为双向关联。

    我们可以通过在表示关联的行中添加多重装饰来表示关联的多重性。该示例表明,一个学生有一个或多个导师:

    一个学生可以与多个老师关联:

    这个例子表明每个老师都有一个或多个学生:

    我们还可以使用角色名指示关联中对象的行为(例如,对象的角色)。

    关联vs聚合vs组合

    “关联、聚合和组合之间的区别是什么”这个问题最近经常被问到。

    聚合和组合是关联的子集,意味着它们是特定的关联案例。在聚合和组合中,一个类的对象“拥有”另一个类的对象。但有一个微妙的区别:

    聚合意味着子组件可以独立于父组件而存在。示例:班级(父类)和学生(子类)。删除类,学生仍然存在。

    组合意味着子元素不能独立于父元素而存在的关系。例子:房子(父母)和房间(孩子)。房间不能与房子分开。

    组合的例子:

    除了类A和类B之间的部分关系之外,我们还应该更具体地使用composition链接——这两个类之间存在很强的生命周期依赖关系,也就是说,当类A被删除时,类B也会被删除

    聚合的例子:

    值得注意的是,聚合链接没有以任何方式声明类A拥有类B,也没有声明两者之间存在父子关系(当父类删除时,其所有的子类也因此被删除)。事实上,恰恰相反!聚合链接通常用于强调类A实例不是类B实例的独占容器,因为实际上同一个类B实例拥有另一个容器/s。

    加起来-

    总而言之,关联是一个非常通用的术语,用于表示一个类使用另一个类提供的功能时的情况。如果一个父类对象拥有另一个子类对象,并且如果没有父类对象,这个子类对象就不能有意义地存在,那么我们称它为复合。如果可以,就称为聚合。

    泛化和专业化

    泛化是一种机制,用于将类似的对象类组合成一个更一般化的类。泛化标识一组实体之间的共性。共性可以是属性、行为,或者两者都有。换句话说,超类拥有最通用的属性、操作和可以与子类共享的关系。子类可能有更专门化的属性和操作。

    专门化是泛化的反向过程,泛化意味着从现有的类创建新的子类。

    例如,银行账户有两种类型——储蓄账户和信用卡账户。储蓄账户和信用卡账户从银行账户中继承了常见的/广义的属性,比如账户号、账户余额等,也有它们特有的属性,比如未结算的付款等。

    泛化和继承

    泛化是我们用来在UML中表示将公共属性抽象为基类的术语。UML图的泛化关联也称为继承。当我们在编程语言中实现泛化时,它通常被称为继承。泛化和继承是相同的。这些术语只是根据使用的上下文而有所不同。

    本文:http://jiagoushi.pro/node/1213

    谢谢大家关注,转发,点赞和在看。

    展开全文
  • matlab开发-用数据关联分析血小板聚集形态。二维自相关分析血小板聚集形态
  • 区分关联、依赖和聚集关系

    千次阅读 2015-07-16 17:18:39
    在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A对象B之间存在依赖(虚线实箭头)、关联(带实线的箭头)或聚集关系(带实线的菱形箭头)时,对象A都有可能调用对象B的方法,这是三种关系之间的相同...
    在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A和对象B之间存在依赖( 虚线实箭头 )、关联( 带实线的箭头 )或聚集关系( 带实线的菱形箭头 )时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。 


    1.依赖关系的特征 


    对于两个相对独立的系统, 当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时 ,这两个系统之间主要体现为依赖关系,例如生产零件的机器和零件,机器负责构造零件对象。再例如充电电池和充电器,充电电池通过充电器来充电。再例如自行车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.关联关系的特征 
    对于两个相对独立的系统, 当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系 。例如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司;再例如自行车和主人,每辆自行车属于特定的主人,每个主人有特定的自行车。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间也不存在固定的对应关系。 

    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-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成员变量去上班很相似。


    转载至http://blog.chinaunix.net/uid-20665441-id-305457.html

    展开全文
  • 我们可以看到以下关系:主人喂宠物,宠物感谢主人(关联)尾巴是狗猫的一部分(聚集/组成)猫是一种宠物(遗传/概括)下图显示了三种类型的关联连接器:关联、聚合组合。我们将在这个UML指南中复习它们。下图显示了一个...
  • 一、依赖(Dependency) 依赖:A类依赖B类,在B类发生变化时,A类也会随着B类发生变化;通常依赖的类是作为参数传入。 1. Car类是User类中的(某个方法的)局部变量; 2.... 3....二、关联(Association) ...关联
  • 在考虑属性关联的前提下,给出一种基于离散Choquet积分的人群聚集区域应急方案选择方法。将应急方案在各可能状态下针对属性的损益矩阵进行规范化;在考虑属性关联的前提下,借助于离散Choquet积分的思想,依据规范化...
  • Java中的组合、聚合和关联关系

    千次阅读 2019-09-09 11:37:03
    在本教程中,我们将重点介绍 Java 的三种关系类型,这些关系有时很容易混合:组合、聚合和关联。 2.组合 组成是一种"belong-to"的关系类型。这意味着其中一个对象是逻辑上较大的结构,其中包含另一个对象。 ...
  • 区分依赖,关联和聚集关系

    千次阅读 2014-05-01 21:55:07
    当对象A对象B依赖,关联和聚集的相同之处
  • 关联,聚合组成之间有什么区别? 请在执行方面进行说明。#1楼对于两个对象, FooBar可以定义关系关联 -我与一个对象有关系。 Foo使用Barpublic class Foo {void Baz(Bar bar) {}};构图 -我拥有一个对象,并且对...
  • 以中国2002年国民经济产业结构为例,构建了国民经济产业部门的投入产出关联网络,借助国民经济核算司发布的投入产出数据MATLAB软件工具,对产业关联网络的聚集相关性进行了分析,充分揭示了我国国民经济产业部门...
  • UML中关联(association)关系依赖关系比较难以让人理解。今天查了一下《UML参考手册》。归纳如下 关联(association) 如果几个类元的实例之间有联系,那么这几个类元之间的语义关系即关联关联描述了系统中对象...
  • 其次,MICHAC通过分层聚集聚类对特征进行分组,并从每个结果组中选择一个特征以去除冗余特征。 我们使用三个具有四个性能指标(精度,召回率,F量度AUC)的不同分类器,对11个被广泛研究的NASA项目四个开源AEEEM...
  • 简单理解聚集索引聚集索引

    千次阅读 2019-04-04 15:42:43
    聚集索引的形成: InnoDB要求表必须有主键(MyISAM可以没有),innodb会按照如下规则进行处理:  1,如果一个主键被定义了,那么这个主键就是作为聚集索引  2,如果没有主键被定义,那么该表的第一个唯一非空...
  • 依赖和关联区别

    2012-12-06 14:40:19
    在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。 1.依赖...
  • 聚集索引并不是一个单独的索引类型,实际上是一种数据存储的方式。聚集索引的实现细节各有不同,在InnoDB引擎中,聚集索引实际上是将索引数据行使用同样的结构存储在一个二叉树中。
  • 微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。 聚集索引非集聚索引 聚集索引:该索引中键值的逻辑...
  • 文章目录UML图之类图1、概述2、类图3、类图——依赖关系(Dependence)4、类图——泛化关系(Generalization)5、类图——实现关系(Implementation)6、类图——关联关系(Association)7、类图——聚合关系...
  • 结果表明:碳酸乙烯酯-乙二醇二元体系的密度黏度均随温度升高而降低,密度呈线性衰减,黏度呈指数衰减。由密度数据计算出超额摩尔体积VE、由黏度数据计算出混合黏度的变化△η,VE呈正值,△η基本聚集在0附近;...
  • 本文大家重点讨论一下UML类图关系中几种关系的异同,在UML类图关系中,关联,依赖,聚集,组成的联系十分紧密,不容易区分,本文试图用通俗的语言来讲解这四种关系的区别。 UML类图关系中关联、依赖、聚集等...
  • UML是在开发阶段,说明、可视化、构建书写一个面向对象软件密集系统的制品的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软件架构层次,已经被验证有效。统一建模语言(UML)是一种...
  • 采用灰关联分析方法对煤矿瓦斯爆炸事故发生的原因进行分析,首先确定煤矿瓦斯爆炸事故发生的原因,然后分别计算各类事故致因因素对事故发生的灰色关联度,并对灰关联度计算结果进行排序,从而确定各影响因素关联度的大小...
  • 在建立对象模型时,很容易把依赖、关联和聚集关系混淆。当对象A对象B之间存在依赖、关联聚集关系时,对象A都有可能调用对象B的方法,这是三种关系之间的相同之处,除此之外,它们有着不同的特征。 1...
  • 【转载】关联,聚合组合

    千次阅读 2019-09-24 02:05:39
    关联:指的是模型元素之间的一种语义联系,是类之间的一种很弱的联系。关联可以有方向,可以是单向关联,也可以是双向关联。可以给关联加上关联名来描述关联的作用。关联两端的类也可以以某种角色参与关联,角色可以...
  • uml的关联关系中聚合与组合的区别

    千次阅读 2016-04-26 20:39:11
    什么是关联关系?...一种特殊的关联关系,指明一个聚集(整体)与组成部分之间的关系。 什么是组合关系? 语义更强的聚合关系,组成部分与整体之间具有相同的生命周期。   相同:   聚合关系与组合关

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,983
精华内容 23,993
关键字:

聚集和关联的区别