`
zachary.guo
  • 浏览: 483539 次
  • 性别: 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类图的类之间依赖关系图论问题研究.pdf

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

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

    UML类图关系大全,里面把之间的关系描述的较清楚,尤其是图像

    UML类图说明类图关系

    大家知道,UML类图之间的关系确实难以理解,而诸多教材中的解释又各不相同;我是查阅了了很多教程后,总结出的相对具有共性的解释了; 实例介绍了类图之间的关系及面向对象的相关概念 同时,介绍了EA下类图各关系的...

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

    类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形。由这些基本的图形进行组合构成了类图的基本...这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程度。越向右耦合度越高。

    uml类图例子

    这是一个UML类图例子,简要描述了类图中类与类之间的关系

    javaUML类图的使用

    类图是用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。学习好类图的绘制,是一位合格的软件工程师应有的技能。...

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

    NULL 博文链接:https://quicker.iteye.com/blog/600285

    UML类图各种关系详解

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

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

    计算机工程的论文 在介绍代码自动生成技术产生的背景及其应用的基础上,研究从 UML 类图到关系型数据库表之间的映射规范和映射实现方式

    UML类图说明.md

    UML类图详细说明. 讲解了类之间的各种关联关系和表达方式. 帮助理解UML类图

    uml类图的画法.txt

    UML类图(Unified Modeling Language,统一建模语言类图)是用于表示系统中的类、接口以及它们之间关系的图。以下是绘制UML类图的基本步骤: 确定要表示的类和接口: 识别系统中的主要类和接口。 确定每个类或...

    带UML类图的jdk6文档

    使用apiviz生成的jdk6英文文档 带每个包、每个类的UML类图

    UML类图与类的关系详解

    在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系...

    UML类图-关系数据库之间的映射[收集].pdf

    UML类图-关系数据库之间的映射[收集].pdf

    ModelGoon java代码自动生成UML图

    ModelGoon,Eclipse插件。由 java代码可自动生成UML类图、协作图、顺序图等,操作简单

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

    在介绍代码自动生成技术产生的背景及其应用的基础上,研究从 UML 类图到关系型数据库表的代码生成方法,其中包括 UML类图到关系数据库表之间的映射规范和映射实现方式。最后分析了研究过程中存在的一些问题。

    23种设计模式-UML-类图.docx

    UML类图可以用来描述软件系统的类和对象之间的关系,包括继承关系、组合关系、关联关系等。 三、抽象工厂模式 抽象工厂模式是一种创造型设计模式,提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们...

    UML类图怎么画学习示例

    UML类图(Class diagram)是统一建模语言(UML)的一种图形表示,用于显示系统的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系。 在类图中,每个类由一个包含类名、属性和方法的矩形表示,...

    UML类图表示法

    对于UML类图关系生动有趣的说明,有利于了解类之间的常用表用方法。

Global site tag (gtag.js) - Google Analytics