`
无量
  • 浏览: 1149073 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
阅读更多
一、背景介绍
        UML类图的关系,或者说面向对象语言中,静态类之间的关系有哪些,他们之间的区别在哪里,这是本文要解决的问题点。

二、类之间关系
      有泛化、继承(非UML标准中)、实现、依赖、关联、聚合、组合七种关系,下面逐个介绍这些概念。

1. 泛化
泛化是对一些具体的个体的一般化,抽象化,是由具体的给他抽象出共性的过程。
UML类图:


2. 继承
继承是一个类(称为子类或子接口)继承另一个类(称为父类或父接口)里面的所有属性和方法,在增加自己特性的过程。
UML类图:



3. 实现
实现是一个类 class 去实现一个接口 interface
UML类图:


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


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


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


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


三、自己的理解
1. 继承和泛化的区别
其实就是一回事,讲的是子类和父类的关系。只是继承是从子类的角度来说,子类继承父类,先有父类。泛化是从父类的角度来说,先有各种各样的个体,抽象出共同部分,来泛化成父类。

2. 实现很简单,就是一个类实现一个接口,没什么可说的

3. 依赖、关联、聚合和组合的区别
就类之间的关系来讲:
依赖是把一个类作为另一个类中方法的参数或返回值。非常弱的关系,只有函数使用的时候才产生关系。
依赖中两个类在实际意义上是平等关系

关联、聚合和组合,其实都是一个类作为另一个类的成员变量。只是从实质的角度来讲,层次深浅的关系。
关联中两个类在实际意义上也是平等的关系

聚合,中两个类在实际意义上是整体和部分的关系,注意,部分可以独立存在。比如猴群和猴子。
聚合中两个类在实际意义上是整体和部分的关系,但是部分可以独立存在。

组合,中两个类的实际意义上也是整体和部分的关系,只是部分不可以独立存在,在类的生命周期里,可以先初始化部分后初始化整体,也可以先初始化整体后初始化部分,但是,在销毁的时候,一定是先销毁部分在销毁整体。比如人和头发的关系。
组合中两个类在实际意义上也是整体和部分的关系,不过部分不可以独立存在

其实,依赖、关联、聚合、组合都是关联。依赖是最弱的关联,其次是普通关联,接下来是聚合,组合是最强的关联:
关联强度:  组合 > 聚合 > 关联 > 依赖


推荐博文:写的也很好
http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html
http://www.uml.org.cn/oobject/201104212.asp


欢迎大家关注我的公众号



  • 大小: 11.1 KB
  • 大小: 5.1 KB
  • 大小: 8.4 KB
  • 大小: 8.1 KB
  • 大小: 13.3 KB
  • 大小: 8.2 KB
  • 大小: 26.7 KB
0
0
分享到:
评论

相关推荐

    UML类图说明类图关系

    ### UML类图关系详解 #### 一、引言 统一建模语言(Unified Modeling Language,简称UML)是一种广泛使用的图形化语言,用于软件工程的设计、开发和维护。其中,UML类图是用于描述系统中类的静态结构的重要组成...

    六大UML类图以及关系

    ### UML类图关系详解 #### 一、引言 UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的图形化语言,它帮助开发者理解和设计系统。其中,UML类图是最常用的一种图示方式,用于描述系统...

    UML类图关系大全

    ### UML类图关系详解 #### 一、引言 UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的图形化规范,用于描述软件系统的结构和行为。UML类图作为UML中的一种重要图表类型,主要用于...

    UML类图关系大全.

    ### UML类图关系详解 #### 一、引言 统一建模语言(Unified Modeling Language,简称UML)是软件工程领域中广泛使用的一种标准化图形化语言,用于系统建模和文档描述。其中,UML类图作为一种重要的建模工具,主要...

    UML类图各种关系详解

    UML类图各种关系详解 包括 继承 实现 聚合 等等 一张图道出类之间的各种关系 直观容易

    利用UML类图设计Java应用程序详解.doc

    UML类图是UML中的一种静态结构图,用于描述系统中的类、接口和它们之间的关系。Java是一种广泛应用的编程语言,UML类图可以用于设计Java应用程序。在本文中,我们将详细介绍如何使用UML类图设计Java应用程序。 UML...

    uml类图详解实例图

    《UML类图详解实例图》 UML(Unified Modeling Language),即统一建模语言,是一种通用的、标准化的建模语言,旨在为软件开发提供一个可视化表达系统设计的工具。自1997年发布以来,UML已经成为了软件工程领域广泛...

    UML类图详解,更深入的理解类图

    "UML类图详解" UML类图是 Unified Modeling Language(统一建模语言)的一个组成部分,它用于描述类和对象之间的关系。UML类图是一种静态结构图,展示了类、对象、接口、关联、继承、实现、依赖等元素之间的关系。 ...

    uml类图全套插件.zip

    《Eclipse集成UML类图插件:AmaterasUML与GEF详解》 在软件开发过程中,UML(Unified Modeling Language)类图是一种重要的建模工具,它可以帮助开发者清晰地描绘出系统的静态结构和关系。对于使用Eclipse作为IDE的...

    使用UML类图构建本体模型的方法

    通过UML类图,可以清晰地表示出这些概念、实体及其相互间的关系,从而形成一个结构化的知识模型。 ### 构建过程详解 #### 1. 定义类与属性 首先,使用UML类图构建本体模型时,需从识别和定义领域内的核心概念开始...

    UML类图与类的关系详解

    ### UML类图与类的关系详解 #### 基本概念 在软件工程领域,统一建模语言(Unified Modeling Language, UML)是一种图形化的标准建模语言,用于描述系统的结构和行为。其中,类图(Class Diagram)是UML中最常见且...

    使用StartUML绘制类图

    在软件开发过程中,类图是UML(Unified Modeling Language)中最重要的一种图表,用于描述系统中类之间的关系和结构。StartUML是一个功能强大且易用的UML建模工具,适合用于绘制类图。下面将详细介绍如何使用Start...

    如何画数据流图UML类图

    在"第3章_类图.ppt"和"UML类图详解.ppt"中,你可以找到以下内容: 1. **类**:表示一组具有相同属性、操作和关系的对象集合。 2. **属性**:类的特性,存储数据。 3. **操作**:类的方法,定义其行为。 4. **关联**...

    UML类图详解.ppt

    详细介绍UML类图的用法,并提供使用实例

    抽象工厂模式uml类图

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

    UML类图.docx

    ### UML类图详解 #### 一、引言 统一建模语言(Unified Modeling Language,简称UML)是一种用于软件工程领域的图形化语言,旨在帮助软件开发者设计、构造和维护软件系统。其中,UML类图是UML中最常用且重要的组成...

    带UML类图的jdk6文档

    **Java JDK 6 API 文档与 UML 类图详解** Java Development Kit (JDK) 6 是一个重要的软件开发工具,主要用于编写、编译、调试和运行Java应用程序。本资源包含了一个特别的版本,即带有统一建模语言(Unified ...

Global site tag (gtag.js) - Google Analytics