• 10.关联(Association)


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

          在UML类图中,用实线连接有关联的对象所对应的类,在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性。

    1.双向关联

          默认情况下,关联是双向的,双向的关联可以有两个箭头或者没有箭头。

    2.单向关联

          类的关联关系也可以是单向的,单向关联用带箭头的实线表示。

          单向关联和双向关联的UML示例图如下所示:

          【说明】:上图中,Teacher与Student是双向关联,Teacher有多名Student,Student也可能有多名Teacher(两个类连线下面的*表示多对多的关系)。但Student与Course间的关系为单向关联,一名Student可能有多门Course,课程是个抽象的东西,因此不拥有Student。

          单向关联和双向关联的示例代码如下(Teacher、Student类的定义):

    class Course
    { }
    
    class Teacher
    {
        var student: Student?;
    }
    
    class Student
    {
        var teacher: Teacher?;
        var course: Course?;
    }

    3.自关联

          在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。比如我们在数据结构中描述树结构,会建一个节点Node类,Node类有一个指针父节点也是Node类型。

  • 相关阅读:
    EXTJS4.2——0.简介
    什么是JDBC?
    Applet和普通的Java应用程序有什么区别?
    final关键字、finally代码块和finalize()方法有什么区别?
    throw和throws有什么区别
    Java中的两种异常类型是什么?他们有什么区别?
    Java堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?
    flash插件
    算法复杂度分析中的符号(大Θ符号、大Ο符号...)
    Enumeration接口和Iterator接口的区别有哪些?
  • 原文地址:https://www.cnblogs.com/LeeGof/p/5706834.html
Copyright © 2020-2023  润新知