设计模式 (4)类图二

  • 导言
  • 关联关系
    • 关联定义
    • 类图描述关联
    • 关联的多重性
      • 一对一关联

        • 如下图所示一对一静态建模表示法
        • 代码显示显示主要体现部分
      • 一对多关联
        • 如下图所示一对多关联显示
        • 代码显示显示主要体现部分
      • 规定数值关联
        • 如下图所示规定数值关联显示
      • 可选关联
        • 如下图所示可选关联显示
      • 多对多关联
        • 如下图所示多对多关联显示
    • 三元关联
    • 一元关联自关联
    • 关联类
    • 总结

导言

前面第一篇类图文章,介绍了类图和类以及类图的画法并提及了对象的表示。现在我们来描述一下类图之类之间的关联关系。

关联关系

关联关系(Association)是类与类之间存在相互关系

关联关系是一种结构化关系

关联关系用来表示一类对象和另一类对象之间的有联系

关联定义

关联定义两个或多个类之间的关系,指明了类之间的一种静态的、结构化的关系。

“雇员”(Employee)工作于“部门”(Department),这里的“雇员”和“部门”是类,工作于 我是一个关联。

链接是类实例(对象)之间的链接,表示类之间的关联的实例。

Jane工作于“制造部门”(Manufacturing),这里Jane就是“雇员”的一个实例,“制造部门”是“部门”的一个实例。

两个对象之间可存在一个关联,当且仅当它们相应的类之间存在一个关联。

关联本身是双向的。

关联的名称取其正向:“雇员”工作于”部门”。关联也有一个隐含的相反的方向(通常没有被显示地表述):“部门”雇佣“雇员”。关联大部分是二元的-即描述两个类之间的关系。然而他们也可以是一元的(自我关联)、三元的或者是多元的。

类图描述关联

在类图中,关联显示为一条连接两个类框的弧线,弧线旁边有关联的名称。

在类图中,关联名称通常从左到右,自顶向下多读。而在一个拥有很多类的大规模类图里,类通常相对于彼此在不同的位置。为避免在读UML图产生歧义,UML的箭头方向指明该从什么方向读关联(单向时,双向时自有介绍,详情看后续内容)。

例子:

“公司”(Company)被“首席执行官”(CEO)领导(Is Led by)。

关联的多重性

关联的多重性规定了一个类的多少个实例能与另一个类的单个实例建立关联。

关联关系有单向关联和双向关联之分。

单向关联,是用箭头的实线表示,其只有一个角色名

双向关联,是用直线表示,拥有两个角色名。表明一个角色对另一个角色的关系。

一对一关联。

在两个类的一对一关联中,在两个方向上的关联都是一对一的。

因此,两个类中任意一个类的一个对象只与另一个类的一个对象有一个链接。

如下图所示,一对一静态建模表示法:

在“公司”被 “首席执行官” 领导这一关联中,一个特定的公司仅有一个首席执行官,而且一个首席执行官仅是一个公司的领导。

例如,“苹果”(Apple)公司的首席执行官史蒂夫?乔布斯。

本图表示的是单向一对一关联

代码显示(显示主要体现部分)

Company类

public class Company {
    ...
   public Ceo ceo; //这个说明了一对一的关联关系
    ...
}

CEO类

public class Ceo {
   ...
}

一对多关联

一对多关联中,两个类之间在一个方向上有一个一对多关联,而在相反方向上是一个一对一关联。

如下图所示,一对多关联显示:

“银行”(Bank)管理(Administer)“账户”(Account)这个关联关系中,单个银行管理多个账户,但是一个账户只能由一个银行管理。

图表示单向关联关系

代码显示(显示主要体现部分)

Bank类

public class Bank {
    ...
   public Acount[] acount; //这个说明了一对多关联
    ...
}

Account类

public class Account {
   ...
}

规定数值关联

规定数值关联是一个指明了特定数字的关联。

如下图所示,规定数值关联显示:

“汽车”(Car)由“门”(door)进入(Is entered through)这一关联中,一辆汽车有两扇或四扇门(写为2,4),但是绝不会有一扇、三扇或五扇门。相反方向的关联依然是一对一的,即一扇门只属于一辆汽车。注意,一个特定的汽车制作商决定一辆汽车能有多少门;而另一个制造商可能做出不同的决定。

可选关联

在可选关联中,一个类的一个对象到另一个类的一个对象可能不总是存在链接。

如下图所示,可选关联显示:

多对多关联

多对多关联是在两个类之间的两个方向上各是一个一对多关联的关联。

如下图所示,多对多关联显示:

“课程”(Course)由“学生”(Student)参与(Is attended by)、”学生”参与“课程”这一关联中,在课程和听课学生之间有一个一对多关联,因为一个课程有多个学生听课。在相反方向上也有一个一对多的关联,因为一个学生可以参加多个课程。

三元关联

三元关联是类之间的三个方向的关联。

更高阶的关联,即三个雷以上的关联是十分罕见的。

“买方”(Buyer)、“卖方”(Seller)和”中介“(Agent)三个类之间的关联。该关联是“买方”通过“中介”和“卖方”协商价格。

一元关联(自关联)

一元关联(也称自身关联)是一个类的一个对象与同一个类的另一个对象之间的关联。

一些类的属性对象类型为该类本身。

“人”(Person)是“人”(Person)的孩子“Is child of”,“人”与“人”结婚(Is married to),“雇员”是“雇员”的老板(Is boss of)。

关联类

关联类是对两个或多个类之间的关联进行建模的类。关联类的属性就是该关联的属性。在两个类或多个类之间的复杂关联中,关联是有可能拥有属性的。这经常发生在多对多关联中,其中属性不属于任何一个类,而是属于该关联。

“小时数”类是关联类,其属性“工作小时数”(hoursWorked)是“雇员”类和“项目”类之间关联的一个属性。

一个“小时数”类实体对象表示了一个特定的雇员(多个雇员当中特定的一个)在一个特定的项目(一个雇员工作于多个项目)上的工作时间。

一个“项目”配备(Is staffed by)”雇员”

一个“雇员”工作于(Works on)“项目”

总结

本文详细讲解了UML类图中的关联关系和关联类。并配以图解进行解释。对于学习设计模式来说,类图是一个不可缺少的一个部分。关联关系在类图中比较常见,后面的文字会介绍组合和聚合(关联关系的一种)

时间: 2024-10-27 07:19:43

设计模式 (4)类图二的相关文章

设计模式-UML类图的各符号含义(转)

UML类图的各符号含义 类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形.由这些基本的图形进行组合构成了类图的基本符号.这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程 度.越向右耦合度越高. 其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系.实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示 组合的关系. 另外一点是在看类图的时候要注意.类图的思想其实也

[设计模式]-UML类图的各符号含义

UML类图的各符号含义 类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形.由这些基本的图形进行组合构成了类图的基本符号.这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程 度.越向右耦合度越高. 其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系.实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示 组合的关系. 另外一点是在看类图的时候要注意.类图的思想其实也

Python设计模式 - UML - 类图(Class Diagram)

简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系统中各种概念进行建模,并描绘出它们之间的关系,所以类图关注的对象就是元素及元素之间的关系. 类图建模步骤 - 抽象出类实体 - 识别出类的主要属性 - 画出类之间的关系 - 对各个类进行分析.梳理.设计 类图的元素 类图中包含以下几种模型元素:类.接口.关系.协作.注释.约束.包. 类 在UML的图

设计模式常用类图及类间的关系

一.统一建模语言 UML,用来设计软件设计蓝图的建模语言,简单.统一.图形化.能表达软件设计中的动态和静态信息. 包括用例图.类图.对象图.状态图.活动图.时序图.协作图.构件图.部署图. 二.类.接口.类图 1.类 具有相同属性.方法和关系的对象的抽象,封装了数据和行为,具有封装.继承.多态三大特性.在UML中,类包含类名.属性.和操作且使用分隔线矩形表示. 2.接口 接口是一种特殊的类,具有类的结构但是不能实例化,只可以被子类实现.包含抽象操作,但没有属性,描述了类或者组件对外可见的动作.U

UML类图二

在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式.       1. 关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,如汽车和轮胎.师傅和徒弟.班级和学生等等.在UML类图中,用实线连接有关联关系的对象所对应的类,在使用Java.C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量.在使用类图表示关联关系时可以在关联线上标注角色名

java设计模式--UML类图

2016-06-07 22:46:16 下面简单介绍UML类图:(图是截取的,大家可以用UML工具去画) 1.描述类的类图 类:Person 属性:name   age   sex 访问权限:-  表示私有的private   +:表示公共的public  #:表示protected 方法: getName():String   setName(name:String)   getAge():int   setAge(age:int)   getSex():String   setSex(sex

大话设计模式---UML类图

 类图 两种接口图 继承类与实现接口 关联引用 聚合 组合 依赖

设计模式以及类图的实现

  设计模式的大概组成              程序逻辑时序图                      程序实现的原理框架 原文地址:https://www.cnblogs.com/liunx1109/p/9330867.html

常用设计模式的类图