`
Mr_Chunlei
  • 浏览: 29787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java中类与类关系,UML类图关系,设计模式

 
阅读更多

尊重原创:http://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html

一、继承关系 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。



二、实现关系 实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性。在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。


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

[具体表现]

依赖关系表现在局部变量,方法的参数,以及对静态方法的调用



四、关联关系关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。


五、聚合关系 聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线箭头表示。


六、组合关系组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线箭头表示。


七、总结对于继承、实现这两种关系没多少疑问,它们体现的是一种类和类、或者类与接口间的纵向关系。

(1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。

聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。

(2)对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命 周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件 也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。

举一个简单的例子:
一个图书馆可以有十万本书,也可以一本也没有。但空的图书馆还是图书馆。这是聚合
一个车(我们平常能看到的普通的交通工具车)有轮子,有的车是四轮子的,有的车是三轮的,自行车是二轮的,还有独轮车,但车至少要有一个轮子,不然就不是车。这是组合关系。

但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。
分享到:
评论

相关推荐

    工厂方法模式uml类图

    java设计模式 工厂方法模式uml类图,一张图就让你秒懂工厂方法模式

    UML中类图实例.docx

    类图(Class Diagram)是 UML 的一种重要组成部分,用于描述类之间的关系和结构。本文将通过一个示例,详细介绍 UML 类图的基本概念和应用。 1. 类图的基本组成部分 在 UML 类图中,一个类通常由三部分组成:类名...

    简单工厂模式uml类图

    java设计模式 简单工厂模式uml类图,一张图就让你秒懂简单工厂模式

    Java经典基础知识和UML类图介绍以及设计模式

    "UML class picture.doc"和"UML中类图实例.docx"将帮助你掌握如何使用类图来表示类的结构、属性、操作、关联关系以及继承等。类图是描述面向对象系统静态结构的有效工具,对于理解和设计复杂的软件系统至关重要。 ...

    java 设计模式类图

    以上这些设计模式在Java中的UML类图的表示,就是通过不同的类和接口之间的相互关系和交互来实现的。掌握这些模式及其UML表示,对于理解和使用设计模式具有重要意义,也能帮助开发者在设计和实现应用程序时,写出更加...

    spring源码全部uml类图

    在"spring源码全部uml类图"中,我们可以深入探讨Spring框架的内部结构和设计模式。 首先,Spring框架的核心组件包括IoC(Inversion of Control,控制反转)容器和AOP(Aspect-Oriented Programming,面向切面编程)...

    抽象工厂模式uml类图

    java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式

    java————23种设计模式-UML-类图及对应示例代码.doc

    java————23种设计模式-UML-类图及对应示例代码.doc

    设计模式、UML结构、类图分析、设计模式案例

    类图是UML中描述类、接口和它们之间的关系的一种图形,它可以帮助我们理解设计模式的结构。 10. **类图分析**:在类图中,我们可以看到类的属性、操作、关联、泛化(继承)、实现等关系。通过分析类图,我们可以...

    设计模式之适配器模式Java实现和类设计图

    UML类图是设计模式中非常重要的可视化工具,它清晰地展示了各个类之间的关系。在适配器模式的类图中,你可以看到: - 目标接口指向适配器类的箭头,表示适配器实现了目标接口。 - 如果是类适配器,适配器类会有一个...

    贪吃蛇-代码-uml设计

    首先,UML类图是描绘系统中类的静态结构和关系的工具。在贪吃蛇游戏中,我们可以定义以下几个主要的类:`GreedSnake`(贪吃蛇主体)、`SnakeModel`(蛇模型)、`Food`(食物)和`GameBoard`(游戏板)。`GreedSnake`...

    一种基于UML类图的Java程序可视化方法.pdf

    4. **UML类图**:是统一建模语言(UML)中的一种图表类型,用于描述系统的静态结构,包括类、接口及其相互关系。 #### Java程序可视化面临的挑战 在逆向工程中,Java程序的可视化面临着以下关键挑战: 1. **类...

    设计模式源码与类图分析1

    本资料包"设计模式源码与类图分析1"专注于Java环境下的设计模式理解和实现,包括类图解析和具体代码示例。 首先,设计模式的核心思想是通过将解决方案抽象化,让代码结构更加清晰,易于理解和复用。在给定的标签中...

    设计模式(含ppt,类图设计,java实例)

    类图设计部分,通过UML(统一建模语言)的类图,可以清晰地展示各个类之间的关系,包括类的属性、方法以及类与类之间的关联、继承和实现等关系。这有助于理解设计模式中的角色及其交互方式,例如在工厂模式中,工厂...

    java设计模式UML图

    1. **类图(Class Diagram)**:在设计模式的UML类图中,我们可以看到各个类的表示,包括类名、属性和方法。例如,单例模式的类图会包含一个私有的构造函数和一个静态工厂方法。此外,类之间的关系如继承、关联、聚合...

    23种设计模式UML类图.pos

    23种设计模式UML类图 参考于大话设计模式,其中加入了自己的理解,并实现中文化,方便阅读. 下载后可食用ProcessOn网站进行类图导入,可自行修改.

    JAVA23种设计模式UML类图及对应示例代码[汇编].pdf

    JAVA23种设计模式UML类图及对应示例代码[汇编].pdf

    设计模式源码与类图分析2

    总的来说,"设计模式源码与类图分析2"的主题深入探讨了装饰模式的实现和应用,通过对UML类图的解析和源代码的阅读,我们可以更好地理解和掌握这个设计模式,进而提升软件设计的灵活性和可维护性。在Java这样的面向...

Global site tag (gtag.js) - Google Analytics