`
lcy0202
  • 浏览: 178260 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

UML的类间关系(转载)

    博客分类:
  • UML
 
阅读更多

1. 在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示不同的关系。类之间的关系有继承(泛化)、关联、聚合和组合。


(1)继承:指的是一个类(称为子类)继承另外的一个类(称为基类)的功能,并增加它自己的新功能的能力,继承是类与类之间最常见的关系。类图中继承的表示方法是从子类拉出一条闭合的、单键头(或三角形)的实线指向基类。

(2)关联:指的是模型元素之间的一种语义联系,是类之间的一种很弱的联系。关联可以有方向,可以是单向关联,也可以是双向关联。可以给关联加上关联名来描述关联的作用。关联两端的类也可以以某种角色参与关联,角色可以具有多重性,表示可以有多少个对象参与关联。可以通过关联类进一步描述关联的属性、操作以及其他信息。关联类通过一条虚线与关联连接。对于关联可以加上一些约束,以加强关联的含义。

(3)聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。

(4)组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。



2.区别

 

 

关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。

 


 

聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。


我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用。


聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司

3.重点总结

聚合与组合的区别:

      1. 组合整体与部分的关系更强,体现在生命期上:组合对象销毁之后,被组合对象也会销毁,比如上述的文档的版本,文档没了,该文档的版本就不复存在;而聚合对象被销毁后,被聚合的对象不一定被销毁,事实上是与聚合对象的生存期无关,比如:雷军是金山的董事长,同时又是小米科技的CEO,加入金山倒闭了,雷军还是活着。

      2. 被聚合的对象可以属于多个聚合对象,就像雷军是多家公司的董事一样,而被组合对象则是只能属于一个组合对象。

 

 

分享到:
评论

相关推荐

    UML类之间的关系图

    本文将深入探讨UML类图中的类间关系,特别关注纵向关系——继承。 继承是面向对象编程(OOP)的核心概念之一,它在UML类图中通过一个箭头表示,箭头从子类指向父类。这种关系允许子类(也称为派生类或子类型)继承...

    UML类关系-依赖,关联,聚合和组合

    UML类关系-依赖、关联、聚合和组合 UML(Unified Modeling Language)是软件设计领域中的一种标准化建模语言,用于描述软件系统的结构、行为和架构。UML类关系是UML中的一种基本概念,描述了类之间的关系。今天,...

    六大UML类图以及关系

    在UML类图中,类与类之间的关系对于理解系统的结构至关重要。本文将详细介绍UML类图中的六种基本关系:依赖、类属、关联、实现、聚合和组合。 #### 二、依赖(Dependency) **定义**: - 当元素A的变化会影响元素B...

    UML类图、类与类间关系文档(UML必看)

    在这个文档中,我们将深入探讨UML类图、类与类间的关系,并结合提供的文档资源进行详细的阐述。 首先,UML类图由一系列类和它们之间的关联、依赖、泛化(继承)以及实现关系构成。类是系统中的基本构造块,它封装了...

    UML类关系图解

    UML java 图示6种类关系,帮忙理解uml的基本概念。

    UML类关系之JAVA代码实现

    总结起来,UML类关系在Java代码中的实现通常体现在类的继承、成员变量、方法参数以及对象间的交互上。理解并正确使用这些关系有助于构建清晰、可维护的软件架构。在设计系统时,应根据实际需求选择合适的关系类型,...

    UML类图中的类 抽象类,具体类,主动类等

    在UML(统一建模语言)中,类图是一种重要的模型表示工具,它用来描绘系统中的类、接口以及它们之间的关系。类图中的类扮演着核心角色,它们定义了系统的结构和行为。类可以分为抽象类和具体类,以及主动类和非主动...

    UML中的包含关系和扩展关系

    包含关系强调的是所有权和生命周期管理,它反映了实体间的强耦合性。 接着,我们讨论扩展关系(Association)。扩展关系,也称为组合(Aggregation),是一种弱于包含的关联类型,它表示一个类可以由多个其他类的...

    uml客户关系管理系统

    序列图和协作图则能展示不同对象间的交互顺序和合作关系;活动图则用于描述业务流程,如客户下单、支付、发货等一系列步骤。 总之,通过UML的系统化建模,这个“uml客户关系管理系统”不仅提供了清晰的功能需求,还...

    UML类关系:依赖、关联、聚合、组合

    总结来说,依赖关系强调短暂的相互依赖,关联描绘类间的结构联系,聚合表示部分与整体的松散连接,而组合则强调整体对部分的强依赖和生命周期管理。理解这些关系对于进行高质量的软件设计至关重要。在实际开发中,...

    从UML类图到关系数据库表的代码生成方法

    1. 类映射为表:UML类图中的每一个类应该映射成关系数据库中的一个表。 2. 属性映射为字段:类的属性应该转换为表的字段,并根据属性的类型来确定字段的数据类型。 3. 关联映射为外键或连接表:类与类之间的关联...

    UML类图在关系数据库中的实现

    本文主要探讨将UML类图中的类及其对象映射成关系型数据库中的表的具体策略。 #### 将UML类图中的类映射成表的策略 ##### 属性类型映射成表的域 - **映射过程**:将类图中的属性类型映射成表的域可以提高设计的...

    UML类与类的关系.doc

    UML中的类与类之间的关系是理解和设计复杂系统的关键,包括泛化、关联、依赖、聚合和组合等。 ### 泛化(Generalization) 泛化关系表示了类之间的继承关系,它体现了“is-a”(是一种)的概念,即子类是父类的一种...

    UML类图关系表

    UML类图是一种建模工具,它用于描述对象导向设计中的类、接口及其相互关系。在UML中,类图展示了类与类之间的多种关系,包括关联、单向关联、自关联、多重关联、聚合、组合、依赖以及泛化关系。下面我们将详细探讨...

    基于UML类图的类之间依赖关系图论问题研究.pdf

    本文探讨了UML(统一建模语言)类图中的类间依赖关系,并通过图论的方法对其进行深入分析。随着面向对象编程方法在软件开发领域的广泛应用,UML作为一种标准化的建模语言,在软件设计、分析阶段发挥着重要作用。UML...

    UML类框图基本关系及符号

    UML 类框图基本关系及符号 UML(Unified Modeling Language)类框图是 software architecture 中的一种重要工具,用于描述软件系统的结构和行为。类框图是一种静态模型,用于描述系统中的类、对象及其之间的关系。...

    UML中类图实例讲解关系

    UML类图是UML中的一种重要组成部分,用于描述类和对象之间的关系。 1.UML类图的基本组成部分 UML类图由三个部分组成:类名、类特性和类操作。类名表示类的名称,如果是抽象类就用斜体显示。类特性是类的字段和属性...

    UML关系

    UML关系是UML模型中的核心概念,它定义了模型元素之间的连接,帮助我们理解系统的结构和行为。在本篇文章中,我们将深入探讨UML中的几种主要关系,包括关联、依赖、泛化、实现以及组合和聚合。 1. **关联关系**: ...

Global site tag (gtag.js) - Google Analytics