`
sun201200204
  • 浏览: 298832 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

依赖、关联、聚合、组合还有泛化的关系

阅读更多

http://www.cnblogs.com/suzongwei/archive/2008/02/26/1081805.html

世界是普遍联系的,因此程序世界中的类,也不可能是孤立的。UML为我们定义了它们之间的关系,就是:依赖、关联、聚合、组合还有泛化。

泛化关系比较好理解,就是表示类之间的继承关系。容易混淆的是依赖、关联、聚合和组合的关系。这里做一些甄别:

1、 依赖和关联的颠倒颠

在网上查找了一下依赖和关联的区别,有说“关联本身即是一种依赖”,亦有说“依赖是一种弱关联”,其实说来说去是一档子事。依赖和关联都是说一个类用到了另一个类。其区别在于一个是使用,一个是拥有。

依赖:具有某种偶然性。比如说我要过河,没有桥怎么办,我就去借来一条小船渡过去。我与小船的关系仅仅是使用(借用)的关系。表现在代码上,为依赖的类的某个方法以被依赖的类作为其参数。或者是class A 的某个方法创造了 class B 的实例抑或对class B的静态方法的调用。如果A依赖于B,那意味着B的变化可能要求A也发生变化;

这是uml图表示的依赖关系:

代码表现:




1public class Person{
2 /** 划船 */
3 public void oarage (Boat boat){
4 boat.oarage();
5 }
6}
7



关联:有名的客户和订单的关系以及公司和员工的关系,都是关联关系。还有就是我和我的单车的例子,他们都是一种“拥有”的关系。表现在代码上,就是一个类包含另一个类的实例,通常表现为被关联类以类属性的形式出现在关联类的类定义中,也可以表现为关联类引用了一个类型为被关联类的全局变量。关联可以使单向的,也可以使双向的。

从网上找到的公司和员工的UML图和代码 :


公司和员工的关联关系


1public class Company{
2 private Employee employee;
3 public Employee getEmployee(){
4 return employee;
5 }
6 public void setEmployee(Employee employee){
7 this.employee=employee;
8 }
9 //公司运作
10 public void run(){
11 employee.startWorking();
12 }
13}
14



可见依赖于与关联亦有动静之别,关联的类“静态”地引用了被关联类的实例变量,而依赖的偶然性也正说明了它的动态性。

2、 聚合与组合同出而异体

聚合与组合其实都是关联的特例,都是整体和部分的关系。他们的区别在于聚合的两个对象之间是可分离的,他们具有各自的生命周期。而组合往往表现为一种唇齿相依的关系。

聚合:一种容纳或曰包含的关系,如同机场和飞机,汽车和轮胎的关系。其实仔细想想,前面的公司和员工的关系也有聚合的味道在里面。

组合:也可称之为强聚合,整体和部分是不可分的,整体的生命周期结束时也就是部分的生命周期到头时。很有名的就是桌子和桌子腿的关系。

聚合的UML图:



组合的UML图:






然而,聚合与组合的代码表现形式是一样的,都可以表现为以下的形式,它们仅仅具有语义上的区别。

网上找到的电脑和CPU的关系的代码表现:



1public class Computer{
2 private CPU cpu;
3 public CPU getCPU(){
4 return cpu;
5 }
6 public void setCPU(CPU cpu){
7 this.cpu=cpu;
8 }
9 //开启电脑
10 public void start(){
11 //cpu运作
12 cpu.run();
13 }
14}
15

 

分享到:
评论

相关推荐

    UML中依赖泛化关联实现聚合组合的C#实现

    UML 中依赖泛化关联实现聚合组合的 C# 实现 UML 中类图是软件设计中最重要的工具之一,它能够帮助我们更好地设计和管理软件系统。今天,我们将讨论 UML 中的依赖泛化关联实现聚合组合的 C# 实现。 首先,让我们...

    UML关系(泛化,实现,依赖,关联(聚合,组合))

    UML关系(泛化,实现,依赖,关联(聚合,组合))

    UML中依赖泛化关联实现聚合组合的Java实现

    ### UML中依赖、泛化、关联、聚合与组合的Java实现详解 #### UML基础知识概览 统一建模语言(UML)作为一种图形化的标准化建模语言,为软件开发提供了强大的可视化工具,帮助开发者理解、设计和记录软件系统。UML...

    UML中继承实现依赖关联聚合组合的联系与区别_线条箭头.doc

    在 UML 中,还有泛化关系、关联关系、聚合关系、组合关系等多种关系,这些关系都是类与类、或者类与接口之间的关系,可以用来描述类与类、或者类与接口之间的继承、实现、依赖、关联、聚合、组合等关系。 泛化关系...

    UML类图关系泛化、继承、实现、依赖、关联、聚合、组合.doc

    UML类图关系泛化、继承、实现、依赖、关联、聚合、组合 UML类图关系是Unified Modeling Language(统一建模语言)的核心概念之一,用于描述系统中的对象之间的关系。本文将对UML类图关系中的泛化、继承、实现、依赖...

    UML类图关系大全(关联、组合、聚合、依赖、泛化)

    本篇文章将深入探讨UML类图中的五种主要关系:关联、组合、聚合、依赖和泛化,以及它们在实际编程中的应用。 **关联** 是类之间的一种结构关系,表示类之间的连接或相互作用。它通常用一条实线表示,可以是单向或...

    UML学习之依赖_关联_聚合_组合_继承

    ### UML学习之依赖、关联、聚合、组合与继承 #### 一、泛化(Generalization) **概念:** 泛化表示的是类与类之间的继承关系、接口与接口之间的继承关系,或者是类对接口的实现关系。在UML中,泛化关系通常用一个带...

    UML统一建模语言中依赖泛化关联实现聚合组合的C#实现_配UML图.doc

    本文将详细探讨UML中的一些关键概念,包括依赖、泛化、关联、聚合、组合以及实现,并结合C#语言给出具体实现示例。 1. 泛化(Generalization): 泛化关系在UML中代表了继承,它表示一个类(子类)继承自另一个类...

    泛化,依赖,关联,聚合

    泛化,依赖,关联,聚合的一些概念的东西和图例。很清晰,一目了然,适合初学者

    UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合).doc

    UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合).doc

    UML 类图 关系 大全 泛化、关联、依赖等

    UML 类图关系大全中有多种关系,包括泛化、关联、依赖、聚合、组合等。 1. 关联关系 关联关系是类图中最基本的关系类型。它描述了类之间的相互关系,可以是单向的,也可以是双向的。双向关联关系表示两个类之间的...

    UML用例图之泛化关系

    在UML用例图中,还有其他几种关系,包括实现关系、依赖关系、关联关系、聚合关系和组合关系。每种关系都有其特点和应用场景,了解这些关系可以帮助我们更好地设计和开发系统。 在类图中,实现关系表示接口和实现的...

    UML继承聚合泛化依赖的实用解释[收集].pdf

    泛化关系通常也用一条从子元素到父元素的实线表示,但不强调箭头的闭合性,意味着子元素获取了父元素的所有公共特性。 **依赖**是最弱的关系,表示一个类的实现或行为依赖于另一个类。它用一条带有虚线的箭头表示,...

    UML的五中关系 ppt 详细

    在 UML 中,五种关系是指依赖、关联、泛化、聚合和组合五种基本关系。下面对这五种关系进行详细解析。 一、依赖关系 依赖关系用虚线加箭头表示,表示一个类依赖于另一个类。例如,Animal 类依赖于 Water 类,表示 ...

    设计模式中类的关系

    在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。  1.依赖(Dependence)设计模式中类的关系  依赖关系的定义为:...

    UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    1)类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。2)在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的...

    常见设计模式的解读和对应代码示例,包括设计原则和软件工程中类之间的依赖关系

    泛化关系(Generalization) 实现关系(Realization) 2、设计原则 开闭原则 里氏替换原则 依赖倒置原则 单一职责原则 接口隔离原则 迪米特法则 合成复用原则 3、设计模式 创建型模式(Creational Pattern) 单例模式...

    java中类与类之间的关系

    这些关系包括泛化、依赖、关联和聚合等。了解这些关系对于设计和实现软件系统非常重要。 一、泛化关系 泛化关系是类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。这种关系是从子类指向...

Global site tag (gtag.js) - Google Analytics