`

(转)Java中的泛化,依赖,关联,聚合,合成

阅读更多

本文参考

http://blog.csdn.net/accplong/article/details/7462265

http://hi.baidu.com/yxj1141/item/f4a5174d1c008aea1e19bc28

 

今天给一个很有思想网友解释 关联, 聚合,合成 的区别.结果把我自己给绕进去了.赶紧的 查漏补缺. 做个备份.

 

处于聚合关系的两个类生命周期不同步,则是聚合关系;处于组合关系的两个类的生命周期同步;

eg:聚合关系,当A创建的时候,B不一定创建;当A消亡时,B不一定消亡。

class A{ private B;}

class B{....}

eg:组合关系,当创建一个A对象时,也会创建一个B对象;当A对象消亡时,作为A的属性的B对象也会消亡。

class A{private b=new B();....}

class B{....}

 

具体UML解释

 

 

依赖(Dependency)

实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例(图D)。 更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所 示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的 各个类之间的关系,表示出包和包的关系。

图D


关联(Association)

实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在Java中,关联(图E) 转换为一个实例作用域的变量,就像图E的“Java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性(Multiplicity)修饰符暗示 着实例之间的关系。在示范代码中,Employee可以有0个或更多的TimeCard对象。但是,每个TimeCard只从属于单独一个 Employee。

图E

聚合(Aggregation)

聚合(图F)是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成Java中的一个实例作用域变量。

关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。

图F



组合(Composition)

组合 (图G) 是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局 部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。

Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。

图G

泛化(Generalization)

泛化(图H)表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends关键字来直接表示这种关系。

图H


实现(Realization)

实例(图I)关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。

图I

 


 

我觉得这个图不错

分享到:
评论

相关推荐

    UML元素与Java对照教程(高清PDF)

    类间关系描述了类与类之间的各种联系,包括依赖(Dependency)、关联(Association)、聚合(Aggregation)、合成(Composition)和泛化(Generalization)等。依赖关系指的是一个类使用另一个类,如果依赖关系发生...

    UML.rar_dependent UML_uml _软件工程泛化

    "UML.rar_dependent UML_uml _软件工程泛化"这个标题表明了压缩包的内容主要关注UML中的泛化关系,以及与之相关的其他概念,如依赖、关联、聚合和合成。接下来,我们将深入探讨这些概念。 首先,泛化是UML中的一种...

    java之UML类图元素

    在Java中,合成通常不直接表示,但可以通过特定的生命周期管理策略实现。 - **泛化(Generalization)**:泛化表示继承关系,UML中用箭头表示,Java中用`extends`关键字实现。 - **实现(Realization)**:实现关系...

    Java与UML映射关系简介

    5. 泛化(Generalization)对应于Java中的继承,用extends关键字表示,一个类可以从另一个类派生并继承其属性和方法。 6. 实现(Realization)表示类实现了接口的约定,对应Java中的implements关键字,确保类遵循...

    认识UML类图素java之UML.doc

    - **泛化(Generalization)**:泛化关系模拟了面向对象编程中的继承,用`extends`关键字在Java中表示。 - **实现(Realization)**:实现关系表示一个类实现了接口或继承了抽象类。在Java中,用`implements`或`extends...

    UML中类图实例.docx

    * 泛化(Generalization):空心三角形+实线,表示继承关系。 * 实现(Realization):空心三角形+虚线,表示实现接口。 * 关联(Association):实线+箭头,表示两个类之间的关联关系。 * 聚合(Aggregation):...

    软件设计模式(JAVA)习题答案.docx

    **UML 类图**是统一建模语言中表示类和对象之间关系的一种图形工具,包括依赖关系、关联关系、聚合关系、组合关系、泛化关系(继承)和实现关系。这些关系的耦合度不同,其中泛化和实现关系具有最强的耦合度。 设计...

    面向对象-全面认识UML类图元素

    本文将深入探讨UML类图中的各个元素,并详细介绍它们在Java编程中的具体应用。 #### UML类图元素详解 ### 1. 类(Class) **定义:** - 类是对象的蓝图,定义了对象的属性和行为。 - 在UML类图中,类由三个部分...

    UML图 符号的意义

    关联在Java中通常表现为实例变量。 - **多重性(Multiplicity)**:附加在关联上,表示对象间的关系数量,如“0..*”表示零个或多个。 - **聚合(Aggregation)**:表示整体与部分的关系,是非共享的,表示局部...

    Java面向对象程序设计杨晓燕面向对象基本原则和模式PPT教案学习.pptx

    UML中还描绘了不同类型的关联关系:依赖关系用虚线加箭头表示,关联关系用空心菱形加实线箭头,组合关系用实心菱形加实线箭头,泛化关系(继承)用实线加空心三角形,实现关系则用虚线加空心三角形。 面向对象设计...

    UML_基本元素符号

    合成中的部分不能独立存在,其生存周期完全取决于整体。 **表示方式:** 合成在UML图中用实心菱形表示,实心菱形与“部分”类相连。 **示例:** 假设一个`Car`包含一个`Engine`,则可以表示为从`Car`到`Engine`的...

    设计模式第一天学习内容

    在类图中,我们可以表示类的属性、方法,以及类之间的依赖、关联、聚合、组合、泛化和实现关系。 面向对象设计的七大原则是指导良好设计的核心: 1. 单一职责原则(SRP):一个类应仅有一个引起变化的原因,避免...

    尚硅谷设计模式源码笔记课件.zip

    1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种...

Global site tag (gtag.js) - Google Analytics