`

聚合和耦合

    博客分类:
  • C++
阅读更多

转自:
http://techfan.blogbus.com/logs/8069103.html

(1)   首先,别管什么名词,只要意思能够涵盖就够了,名字是随便叫的!  
  我认为类的关系只有4种:   继承(gerneraliztation),组合(composition),  
  关联(association),聚合(aggregation)。  
   
  继承是不用说了,组合就是整体和部分关系,也简单;关键是关联和聚合,我认为:  
   
  聚合是指该类里(A)有其它类(B)的指针或引用,在该类里(A)会调用其他类(B)的方法或属性来完成自身的功能。所以“聚合在类中定义为实例指针或引用”,定义中写定义类(A)时已有(B)。  
   
  关联(相识)仅仅是该类(A)会调用其他类(C)的方法或属性,但类本生并没有其它类(C)的指针或引用,所以“相识是以指针或引用来实现”,定义并没有写有啊!只是来实现!  
   
  比如:SendMessage给其它的类(C),有人问没有其它类指针怎么发消息,可以   App->GetXXXClass()啊,或者自己所拥有的某个其它类(B)的指针再Get另外类(C)的指针也可以啊,我想说的是关联是四种关系中耦合度最低的,所以“相识是以指针或引用来实现”且“相识关系则出现频率较高,但有时只存在于一个操作期间,相识也更具动态性,使得它在源代码中更难被辨别出来”。  
   
  最后:设计模式中描述写的清清楚楚,没有任何错误,而UML里仅仅是定义,但是类的关系只有在用的时候才体现,设计模式充分体现了类与类之间的关系,所以当然以实际用的所体现的关系为准,而设计模式描述又没有错误,故觉得楼主的迷惑是因为设计模式一书楼主看的还不够仔细!  

(2)

关联关系(Association):表示的是类与类之间的联接,注意这两个类是属于同一层次上的。  
   
  聚合关系(Aggregation):是关联关系的一种,是强的关联关系。但与关联关系不同的是,聚合关系中两个类是处在不同的层次上的,一个代表整体,一个代表部分。关联与聚合仅从语法上是分辨不出的,需要从逻辑关系上判断。  
   
  组合关系(Composition):也是一种关联关系,比聚合更强的关系,它要求普通聚合关系中代表整体的对象负责代表部分的对象的生命周期。代表整体的对象可以将代表部分的对象传递给另一个对象,但在同一时刻,代表部分的对象只能与一个对象发生合成关系,并由后者负责它的生命周期。

(3)

aggregate v.s. composite, see UML Reference.
是个概念,数学概念,设计层次上的概念;对应到代码,则有各种表现,未必划一的;甚至两者可以共享同一种记录结构,只是遵循不同的操作约定而已。
举一例:
class A
{
};
class B
{
    A a1, a2;
};
以上肯定是composite关系。

若class C
{
    A *a;
};
则既可用于aggregate关系,也可以通过遵循composite约定而用来实现composite关系。

分享到:
评论

相关推荐

    博客《面向对象编程中的聚合与耦合》配套flash

    博客原址http://blog.csdn.net/tumiz/article/details/22224067 转载自http://www.nowamagic.net/program/program_PolymerizationAndCoupling.php

    软件制造工程-程序设计概述(ppt-67页).ppt

    此外,模块的独立性可以通过聚合和耦合两个标准来衡量,理想的模块应该是高聚合、低耦合,这有助于降低接口成本,提高软件的可维护性和扩展性。 抽象和逐步求精是程序设计中的思维方式,抽象帮助我们理解复杂问题的...

    高项软考知识点.pdf

    - 模块的独立性通常用聚合和耦合来衡量。聚合度量模块内部元素的紧密程度,理想情况下,模块应有高聚合度。耦合度量模块间的依赖程度,低耦合度代表模块间相互影响较小,更利于维护和重用。 4. **IT 战略规划**: ...

    软考高项知识点(背会必过).doc

    3. **模块独立性**:衡量模块的两个主要标准是聚合和耦合。聚合度量模块内部元素的紧密程度,理想情况下,模块应有高内聚,表示内部元素紧密相关。耦合度量模块间的相互依赖,低耦合更佳,意味着模块间相互独立。 4...

    聚合收缩和吸湿膨胀耦合作用下受损牙齿结构位移与应力场研究

    在聚合收缩与吸湿膨胀的耦合作用下,充填材料的刚度降低会导致界面应力增加和受损牙齿位移增大。长期作用和缓慢发展的情况下,这种损伤作用对牙齿充填材料的使用寿命产生不利影响。 文章还探讨了不同的吸水性(超...

    以太网交换机端口耦合

    以太网交换机端口耦合,也称为端口聚合或Link Aggregation,是一种网络技术,用于通过将多个物理端口组合成一个逻辑接口来提高带宽和提供链路冗余。这种技术常用于数据中心、企业网络和高性能计算环境中,以增加...

    yamamotocoupling山本耦合反应.pdf

    山本耦合反应通常在温和的条件下进行,需要在干燥、惰性气体环境中进行反应,以避免水分和氧气对催化剂的影响。反应溶剂可以是多种溶剂,如 DMF、toluene 等。 催化剂: 山本耦合反应的催化剂是镍(II)络合物...

    聚合物定向耦合电光开关的高频响应特性分析

    应用耦合模理论、电光调制理论、保角变换法和镜像法, 给出了分析聚合物定向耦合电光开关高频响应特性的功率传输矩阵新方法, 导出了输出功率、上升时间、下降时间、开关时间及截止开关频率的表达式。为了获得较低的...

    用耦合波理论分析体光栅衍射效率

    例如,当光从一个介质进入另一个介质时,由于折射率的不连续性会产生反射和折射,这将对耦合波的传播特性产生影响。 全息理论部分,文章介绍了全息的基本概念,即通过两束或多束相干光的干涉记录下物体的全部信息,...

    领域驱动聚合设计工作坊

    4. **理顺对象图**:分析并调整对象之间的关系,消除不必要的复杂性和耦合。 5. **调整聚合边界**:根据业务需求和模型的演变,适时调整聚合的边界,使其保持清晰和有效。 案例分析:项目管理上下文 在项目管理领域...

    ssm+maven聚合

    Spring 是一个全面的企业级应用开发框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性,有助于减少代码间的耦合。在SSM框架中,Spring作为整体架构...

    【推荐】张逸-DDD聚合工作坊

    DDD是一种将业务领域的复杂性转化为软件模型的设计策略,强调通过与领域专家紧密合作,理解和表达业务核心概念,以创建高度内聚、低耦合的系统。在工作坊中,张逸可能涵盖了以下主要知识点: 1. **领域建模**:DDD...

    合成聚合复用原则_刘邦VS韩信.pdf

    合成聚合复用原则,简称CARP或CRP,是面向对象设计中的一项重要原则,它强调在构建新对象时应优先考虑使用已有对象的合成和聚合,而不是通过继承来达到复用目的。这一原则旨在降低类之间的耦合度,提高系统的可维护...

    用于基本模式正向耦合的侧壁光栅辅助聚合物波导定向耦合器

    通过上述知识点的总结,我们可以得出侧壁光栅辅助聚合物波导定向耦合器是一种高效的光学器件,它能够实现多模与单模波导间基本模式的高效率耦合,并通过简单的制备工艺和精确的温度调谐实现高效的模式选择和传输。...

    wpf事件聚合器

    而事件聚合器是一种设计模式,用于集中管理和分发应用中的事件,它有助于解耦事件发布者和订阅者,使代码更加灵活和可维护。 在传统的WPF事件处理中,一个控件直接将事件绑定到另一个控件或业务逻辑层。例如,按钮...

    聚合物光纤中的模式耦合及其对带宽的提高

    光在聚合物光纤(POF)中传输时存在较强的模式耦合,由于模式耦合的影响,聚合物光纤的传输带宽得以提高。根据能流方程对阶跃型聚合物光纤光传输中的模式耦合进行了研究,从实验上测量了聚合物光纤的模式耦合系数,测量...

    基于定向耦合结构的聚合物波导热光模式开关研究

    设计并制备了一种基于非对称定向耦合结构的聚合物波导热光模式开关。该器件由一个单模波导和一个双模波导组成。在双模波导上制作金属加热器,通过向加热器提供驱动电压,可以实现单模波导中的LP01模与双模波导中的LP...

    具有两段余弦传递CPWG电极的聚合物定向耦合器光电开关的傅立叶分析:新的理论观点

    ### 具有两段余弦传递CPWG电极的聚合物定向耦合器光电开关的傅立叶分析:新的理论观点 #### 摘要与背景介绍 本研究旨在通过采用特殊的电极结构来优化聚合物定向耦合器(DC)电光(EO)开关的设计。这种开关利用两...

    非光滑聚合博弈纳什均衡的分布式连续时间算法.pdf

    仿真结果验证了所提算法的有效性,显示在非光滑聚合博弈中,智能体能够通过分布式连续时间更新策略,成功地收敛到纳什均衡,即使面临复杂的非光滑性和耦合不等式约束。 总的来说,这项工作为解决多智能体系统中的非...

Global site tag (gtag.js) - Google Analytics