关联、泛化、依赖、实现

学习《设计模式》好长时间了,可是到现在还是分不太清楚几种UML中的几种关系。如果这几种关系理解的不是很透彻的话,那么会直接影响到对类图之间关系的理解,下面就来分析下几种关系吧!

类之间的关系

1.Dependency(依赖)、Relization(实现)、Generalization(泛化)

2.Association(关联)、Aggregation(聚合)、Composition(组合),这三种是一类的关联关系

依赖(Dependency)

依赖关系是这几种关系中最弱的,因为只彼此之间只是单纯的依赖,并没有增加过多的属性。

依赖关系表示,特定事物的改变会影响另一个事物,体现在某个类中的方法中使用另一个类的对象作为参数或者局部变量

用一根虚线加箭头表示,如下图所示:

依赖的表现形式

1.A类作为B类方法中的传递参数

2.A类作为B类方法中的局部变量

从上面我们也可以看出,无论是作为参数传递还是局部变量传递,A类的生命周期都是伴随着B类方法的存在而存在的,这就是依赖的关键所在。因此A类改变了,B类的方法随之改变,但是两者自始至终都没有增加多余的属性。

关联(Association)

通常表现为变量(Has a),比如我们经常说的一个部门有很多教师,可是一个教师只能属于一个部门等等。也就是我们经常见到的:“*”(表示很多),”1”(有且只有一个),”0…….”(表示0个或多个),”n……m”(两者之间是多对多的关系)

它表示在两个类之间的强依赖关系,通常表现在一个类作为另一个类的属性出现

用一根直线表示,如下图表示

单向关联

双向关联

依赖于关联的区别

1.首先从关系程度上依赖没有关联程度强烈,对于两个类之间的依赖,只是保持在方法上,例如一个类的方法中引用了某个类的变量。

2.在关联中确实彼此把对方作为自己的一个属性,耦合度更高。保持的时间更长些,毕竟是作为一个属性存在,实例化我的时候,就会有你。而依赖只是单纯的用到对方方法时才存在

关联细化

聚合的关系图如下:

组合关系图如下:

组合和聚合区别

首先从定义上说,聚合中的两个类,如上图的大雁和雁群,都可以脱离对方而单独的存在;组合确实彼此依存的,正如翅膀是大雁身体的一部分,不能脱离对方而单独存在

聚合

 //雁群类

    class GooseGroup
    {
        public Goose goose;
        //在聚合中通过参数传递,所以两者是相互独立的
        GooseGroup(Goose goose)
        {
            this.goose = goose;
        }
    }

    //大雁类
    class Goose
    {

    }

 组合

//大雁类
    class Goose
    {
          public Wings wings;
        //通过构造函数来实例化对象,这样可以做到与我同在,在有大雁的时候,就会有翅膀
        Goose()
        {
            wings = new Wings();
        }
    }

    //翅膀类
    class Wings
    {

    }

泛化

通常就是我们所说的类与类之间的继承关系,通过继承可以实现父类里面的所有方法,并且子类还可以扩充自己。在Java中用关键字Extends,C#用:关键字

实现(Relization)

主要是针对于接口而言的,里面也包含了泛化一部分的成分所在,通常用Implement关键字,关系图如下

泛化与实现的区别

其实泛化与实现之间的关系只有一点,如实是实现的话,那么子类就不能够在扩充方法,如果是泛化的话,可以在父类基础上再次扩充自己的方法。



时间: 2024-10-12 16:43:01

关联、泛化、依赖、实现的相关文章

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

关于设计模式,有兴趣的朋友一起探讨下.我的bitbucket的地址 https://bitbucket.org/hinson0/pattern 组合,聚合,关联,依赖,实现,泛化 ---UML关系

关联与依赖

一.类与类之间的关系: 关联关系: 1.单项关联:A类关联B类 2.双向关联:A类关联B类,B类关联A 依赖关系: 指一个类A使用到了另一个类B 依赖关系的特性 这种关系是具有偶然性的.临时性的.非常弱的,但是类B的变化会影响到类A. 继承关系实现关系(本质也是继承关系)

关联与依赖以及组合与聚合之间的区别

最近在准备面试题,看到个问题是关联与依赖之间的关系,脑海里有印象,但还是比较模糊,百度了一番,将结果记录一下,以便后用. 聚合是表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体,比如电脑与鼠标就是典型的聚合关系,用UML图表示如下: 组合是表示两个对象之间是整体与部分的强关系,部分的生命周期不能超越整体,或者说部分不能脱离整体而单独存在,组合关系中的"部分"是不能共享的.人和眼睛就是典型的组合关系,用UML图表示如下: 组合和聚合都是在一个类中包含另一个类的对象,形式上

类与类之间的关系--泛化,关联,依赖,实现

类,对象是面向对象的基础,类与类之间的关系是面向对象不可或缺的一部分.下面将从类的关系定义,UML中的符号表示,代码实现三方面介绍类与类之间的关系. 1.泛化(Generalization):也成为继承关系.指一个类(子类或者子接口)继承另外一个类(父类或者父接口)的功能.并可以增加自己的功能.在程序程序中用关键字xtends明确标识,在UML设计中用空三角和实线表示,从子类指向父类,或者子接口指向父接口. 如图              代码: public class Cat { publi

UML中的6大关系(关联、依赖、聚合、组合、泛化、实现)

UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.这些类间关系的理解和使用是掌握和应用UML的关键,而也就是这几种关系,往往会让初学者迷惑.这里给出这六种主要UML关系的说明和类图描述,一看之下,清晰明了:以下就分别介绍这几种关系: 继承[dependency] 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有

关联与依赖的区别

关联是"HAS"关系,依赖是"USE"关系A类关联B类,指的是B类对象作为A类的属性存在,称为"has"关系.A类依赖B类,指的是B的对象作为A类的方法参数存在,称为"use"关系. 生命周期不同如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁.即只要A类对象存在,B类对象就存在.如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对

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

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html http://sundensky.blog.163.com/blog/static/7728873420109299167434/ 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系

设计模式之UML(一)类图以及类间关系(泛化 、实现、依赖、关联、聚合、组合)

类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据.接下来我们就来谈谈类图的组成,在下一篇中我们将讨论一下类图之间的关系. 一.类图的组成 1. 普通类 上图就是一个UML的普通类图,从上图我们看出,一个UML通常由三部分组成. 第一部分是类名:每个类都必须有一个名字,类名是一个字符串. 第二部分是类的属性(Attributes):属性是指类的性质,即类的成员变量.一个类可以有任意多个属性,也可以没有属

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

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性:  实现 指的是一个class类实现interface接口(可以是多个)的

认识UML中类之间的依赖、关联、聚合、组合、泛化的关系

什么是类? 将某类东西归纳在一起,可以成为一个类. 类有很多种提炼角度,需要根据系统地目标.业务的场景,选取合适的角度对事物进行归纳. 什么是类图? 类图可能是UML中使用的最多的一种图. 和其他图一样,类图的基本语法并不复杂,可能一两天就能掌握,但是真正做到灵活的使用类图,可能需呀多年的功力. 类图是锻炼OOA(OO Analysis)和OOD(OO Design)思想的重要工具,有助于OOA.OOD思想的提升. 本篇博文,重点讲述类图中类与类之间的关系以及这种关系在代码中的实现形式.写作本文