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

UML 类图 & 类与类之间的关系

UML 
阅读更多
        原文出处:http://www.iteye.com/topic/37302
        参考文章:http://dev.firnow.com/course/3_program/rg/2007921/72614.html

        类与类之间存在以下几种关系:     
  • 泛化(Generalization)
  • 依赖(Dependency)
  • 关联(Association)
  • 聚合(Aggregation)
  • 合成(composition)

        1. 泛化(Generalization)
        表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。

        ● 具体表现
        父类 父类实例 = new 子类();

        ● UML 类图(图1.1)

        图1.1 Animal 类与 Tiger 类,Dog 类之间的泛化关系

        ● 代码表现
class Animal {
    ...
}

class Tiger extends Animal {
    ...
}

public class Test {
    public static void main(String[] args) {
        Animal animal = new Tiger;
    }
}


        2. 依赖(Dependency)
        对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
        (1) 依赖关系也是类与类之间的联结。
        (2) 依赖总是单向的。
        (3) 依赖关系在 Java 或 C++ 语言中体现为局部变量、方法的参数或者对静态方法的调用。

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

        ● 现实例子
        比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作。

        ● UML 类图(图1.2)

        图1.2 Person 类与 Screwdriver 类的依赖关系

        ● 代码表现
public class Person {
    public void doScrew(Screwdriver screwdriver) {
        // Person 借助 Screwdriver 来完成 screw 的操作
        screwdriver.screw();
    }
}


        3. 关联(Association)
        对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
        ① 关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法。
        ② 关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
        ③ 在 Java 或 c++ 中,关联关系是通过使用成员变量来实现的。

        ● 具体表现
        关联关系是使用实例变量来实现。

        ● 现实例子
        比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司。

        ● UML 类图(图1.3)

                      图1.3 公司和员工的关联关系

        ● 代码表现
public class Compnay {
    private Employee employee;

    public Employee getEmployee() {
        return employee;
    }

    public void setEmployee(Employee employee) {
        this.employee = employee;
    }

    // 公司运作
    public void run() {
        employee.startWorking();
    }
}


        4. 聚合(Aggregation)
        当对象 A 被加入到对象 B 中,成为对象 B 的组成部分时,对象 B 和对象 A 之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。
        (1) 聚合关系是关联关系的一种,是强的关联关系。
        (2) 聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
        (3) 聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同一个层次上,比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。
        (4) 对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。

        ● 具体表现
        与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。

        ● UML 类图(图1.4)

                          图1.4 电脑和组件的聚合关系

        ● 代码表现
public class Computer {
    private CPU cpu;
    private MainBoard mainBoard;
    private Memory memory;

    public void run() {
        mainBoard.start();
        memory.start();
        cpu.start();
    }
    
}


        5. 合成(Composition)
        (1) 合成关系是关联关系的一种,是比聚合关系还要强的关系。
        (2) 它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

        ● 具体表现
        同聚合类似。关联关系和合成关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。

        ● UML 类图(图1.5)

                          图1.5 人和人的各个部分之间的关系

        ● 代码表现
public class 人 {
    private 肢 limb[4];
}


        ● 总结
        (1) 不同的关系采用不同的 UML 图例。
        (2) 对于聚合关系、合成关系,由于都是关联关系的一种,因此在不确定的情况下,可以以关联关系来描述它们。
  • 大小: 4.4 KB
  • 大小: 6.2 KB
  • 大小: 5.7 KB
  • 大小: 11 KB
  • 大小: 7.5 KB
分享到:
评论

相关推荐

    UML类图中的类 抽象类,具体类,主动类等

    在UML(统一建模语言)中,类图是一种重要的模型表示工具,它用来描绘系统中的类、接口以及它们之间的关系。类图中的类扮演着核心角色,它们定义了系统的结构和行为。类可以分为抽象类和具体类,以及主动类和非主动...

    六大UML类图以及关系

    在UML类图中,类与类之间的关系对于理解系统的结构至关重要。本文将详细介绍UML类图中的六种基本关系:依赖、类属、关联、实现、聚合和组合。 #### 二、依赖(Dependency) **定义**: - 当元素A的变化会影响元素B...

    基于UML类图的类之间依赖关系图论问题研究.pdf

    ### 基于UML类图的类之间依赖关系图论问题研究 #### 摘要及背景介绍 本文探讨了UML(统一建模语言)类图中的类间依赖关系,并通过图论的方法对其进行深入分析。随着面向对象编程方法在软件开发领域的广泛应用,UML...

    JDK UML 类图大全

    1. **理解API**: 通过类图,我们可以清晰地看到JDK类库中类与类之间的关系,有助于快速学习和掌握API。 2. **设计优化**: 在开发过程中,UML类图可以帮助我们进行系统设计,确保设计的合理性和可扩展性。 3. **...

    UML类图、类与类间关系文档(UML必看)

    在这个文档中,我们将深入探讨UML类图、类与类间的关系,并结合提供的文档资源进行详细的阐述。 首先,UML类图由一系列类和它们之间的关联、依赖、泛化(继承)以及实现关系构成。类是系统中的基本构造块,它封装了...

    从UML类图到关系数据库表的代码生成方法

    类图和关系数据库表之间存在着自然的对应关系,通过对UML类图的理解,可以自动生成对应的关系数据库表结构,从而提高开发效率,减少重复劳动,确保数据库设计的一致性和准确性。 一、UML类图基础知识点 UML类图...

    UML类图的各符号含义及表示

    类图是UML中最基础的图表之一,它用于描绘类与类之间的静态结构关系。下面我们将详细解释UML类图中各符号的含义。 1. 类(Class):在UML类图中,类通常用三层矩形表示。第一层写类的名称,如果类是抽象的,则名称...

    spring源码全部uml类图

    此外,Spring还提供了对各种其他技术的支持,如缓存、任务调度、邮件服务等,这些都可以在UML类图中找到对应的类和接口。 通过深入研究Spring的UML类图,开发者不仅可以理解其设计理念,还能学习到如何使用面向切面...

    UML类图关系大全

    UML类图作为UML中的一种重要图表类型,主要用于描述系统中类与类之间的关系。本文将详细介绍UML类图中的几种主要关系类型:关联、聚合/组合以及依赖,并通过具体的实例和代码示例来帮助读者更好地理解这些概念。 ##...

    计算器 UML类图 c++

    它能够帮助我们清晰地定义系统中的各个元素,如类、对象、接口以及它们之间的关系。在这个“计算器 UML 类图 c++”项目中,我们将探讨如何使用UML来设计和理解一个简单的C++计算器程序。 首先,类图是UML中的核心...

    网上书店UML类图建模

    在网上书店系统中,我们可以使用UML类图来描述系统中的类和对象之间的关系,例如,customer类、employee类、Administrator类等,这些类之间的关系可以通过继承、关联、继承等关系来描述。 2.Rose或Visio 建模工具:...

    UML类图说明类图关系

    **关联关系**是UML类图中最基本的关系之一,表示类与类之间的连接方式。 - **普通关联**:最常见的关联类型,表示两个类之间的简单连接关系。例如,“人”类与“计算机”类之间的关联。 - **递归关联**:当一个类...

    UML类图与类的关系详解

    **UML类图与类的关系详解** UML(Unified Modeling Language),统一建模语言,是软件开发中一种用于可视化和表达系统设计的图形表示法。类图是UML中的核心概念,它描述了系统中类的结构和它们之间的关系。在理解和...

    UML类图关系大全!!!!!

    UML类图是UML中最常见和基础的图表之一,它直观地展示了系统中各类之间的关系。在这个“UML类图关系大全”中,我们将深入探讨类图中的各种关系,帮助你全面理解这些概念。 首先,我们要了解类图的基本元素:类、...

    eclipse画UML类图的jar包.zip

    UML类图是UML中的核心元素,它用于表示系统的静态结构,包括类、接口、继承关系、关联关系等。 这个压缩包包含以下三个文件: 1. net.java.amateras.xstream_1.3.4.jar:这是一个基于XStream库的Java类,用于对象...

    UML类图在关系数据库中的实现

    #### 类之间关系的实现技术 在UML类图中,类之间的关系根据紧密程度的不同可以分为继承、关联、聚集和组合。接下来,我们分别讨论这些关系在将类映射成表的过程中是如何实现的。 ##### 继承的实现 - **策略一**:...

    登录图UML类图.zip

    5. **关联关系(Association)**:例如,用户类与角色类之间可能存在多对多的关系,表示一个用户可以拥有多个角色,同时一个角色也可以被多个用户拥有。 6. **依赖关系(Dependency)**:比如,用户类可能会依赖验证...

    图书管管理系统UML类图

    UML类图是UML中的静态结构模型,它主要展示了系统的类、接口、协作以及它们之间的关系,如继承、关联、依赖等。在图书管理系统中,类图将帮助我们清晰地定义各类对象及其属性和操作。 图书管理系统的核心类可能包括...

    UML类图几种关系的总结

    UML类图是UML中最常用的一种图形化工具,用于描述系统的静态结构,包括系统中的类、接口以及它们之间的关系。在UML类图中,存在六种基本的关系类型:泛化、实现、关联、聚合、组合以及依赖。接下来,我们将详细介绍...

Global site tag (gtag.js) - Google Analytics