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

【转】UML类关联关系详解

阅读更多

对于UML类图的几种关联关系一直比较疑惑,在晚上找了一篇比较不错的文章,学习一下,后面在项目和日常过程中用起来。

 

-------------------------------------------------------------------------------------------------------------------------

本篇主要就以前自己一直感觉很迷糊的几种class之间的关系进行整理,让我们在真正用UML进行比如类图设计时能够更加清晰明了;以下就分别介绍这几种关系:

 

一、继承

        指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;

 

 


二、实现

        指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性;

 

 


三、依赖

        可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;

 

 


四、关联

        他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;

 

 

 


五、聚合

        聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

 

 

 

六、组合

        组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;

 

 


        对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;

 

分享到:
评论

相关推荐

    UML类图与类的关系详解

    类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。在画...

    设计模式存在哪些关联关系,六种关系傻傻分不清--- UML图示详解.doc

    设计模式存在哪些关联关系,六种关系傻傻分不清--- UML图示详解.doc

    2024年UML统一建模语言–用例图详解

    文章以初学者容易理解的方式,解释了用例图的概念、参与者与用例的关系、关联关系等,并通过实战演练,帮助读者更好地理解用例图的使用方法。 适用人群: 本篇文章主要面向初学者,特别是那些对UML统一建模语言感...

    利用UML序列图设计Java应用程序详解 

    类图主要描述Java应用程序中各种类之间的相互静态关系,如类的继承、抽象、接口以及各种关联。要利用UML设计Java应用程序,仅仅使用类图来描述这些静态关系,利用可视化工具,要实现Java应用程序的代码自动生成,是...

    uml建模之类图.pptx

    本ppt详解了uml九类图中的类图,对类图的基本概念进行描述,以及对类图之间的关联关系进行描述并举例说明

    java多线程设计模式详解(PDF及源码)

    目录 漫谈UML UML 类图 类和层次结构的关系 接口与实现 聚合 访问控制 类间的关联性 顺序图 处理流程和对象间的协调 时序图 Introduction 1 Java语言的线程 Java语言的线程 何谓线程 明为追踪处理流程,实则追踪...

    详解C++设计模式编程中对状态模式的运用

    而状态模式的环境类由于外在因素需要放进一个具体状态中,以便通过其方法实现状态的切换,因此环境类和状态类之间存在一种双向的关联关系。 (3)使用策略模式时,客户端需要知道所选的具体策略是哪一个,而使用...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    本书是讲解c++语言程序...20.2.2 UML的类图表 600 20.2.3 类的相互作用 601 附录1 C++关键字 605 附录2 操作符优先级 606 附录3 ASCII字符集 608 附录4 一些库函数 609 附录5 旧的和新的头文件 614 参考资料 615

    asp.net知识库

    使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的...

Global site tag (gtag.js) - Google Analytics