快速业务通道

用UML描述Java类 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
来考虑下面的代码片断,它增加了一个对Organization实例 的引用:

public class Person {... private Organization employer; ... }

引用的名称是employer,意味着这里的Organization代表着Person的雇主。图 四显示了如何在UML中描述这种关系:

用UML描述Java类 - 编程入门网

图四 两个类之间的关联关系

两个类之间的连线表示Person类对Organization类有一种依赖关系。这条线是 一条实线(而不是虚线),表示这种依赖关系是一种关联。

如有必要,关联关系可显示出角色、多重性、关联方向等属性。图四的关联关 系显示出Organization对象在该关系中是雇主的角色,“0..1”表示每一个 Person类的对象最多和一个Organization类的对象有关系,也可能和0个 Organization对象有关系(即Person对Organization的引用可设置为null)。开 叉的箭头表示Person类拥有对Organization的引用,而不是Organization拥有对 Person的引用。

多重性

多重性回答这样一个问题:在一个关系中,每个类各有多少对象参与其中?常 见的多重性如图五所示。

用UML描述Java类 - 编程入门网

图五 常见的多重性及其含义

用UML描述Java类(4)

时间:2011-05-25 Ahaoz

前面我们已经看到了Java代码中0..1多重性的实例。不难猜测,多重性为“1 ”意味着一个类对另一个类的引用不能为null(一般是这样一种情形:引用的值 在构造函数中初始化,且在所有相关的set方法中禁止把该引用设置为null)。

值为“1..*”和“0..*”的多重性稍微复杂一点。在Java中,实现这类多重性 的途径之一是使用某种集合类,例如Vector,来保存可能需要用到的多个引用:

多重性回答这样一个问题:在一个关系中,每个类各有多少对象参与其中?常 见的多重性如图五所示。前面我们已经看到了Java代码中0..1多重性的实例。不 难猜测,多重性为“1”意味着一个类对另一个类的引用不能为null(一般是这样 一种情形:引用的值在构造函数中初始化,且在所有相关的set方法中禁止把该引 用设置为null)。值为“1..*”和“0..*”的多重性稍微复杂一点。在Java中, 实现这类多重性的途径之一是使用某种集合类,例如Vector,来保存可能需要用 到的多个引用:

ClassA{ ... Vector classB; // 保存B类对象引用的Vector ...  }

对于“1..*”多重性,Java程序必须确保Vector至少包含一项内容。

在有些关系中,多重性的值可以是某个精确的范围或数字。例如,一个小孩最 多有两个生物学意义上的健在双亲,即它的多重性可表示为“0..2”。用Java代 码描述这种关系时,程序必须带有确保Parent对象实例少于或等于2个的约束。

一个UML关联加上多重性、角色、关联方向之后,能够描述出大量信息,远比 一大堆Java源代码简洁和直观。虽然UML图没有说明关系的具体实现方式,但它能 够充分地说明关系的意义和作用。图六显示了标注多重性、角色名称之后的雇佣 关系,它表示一个Person可以为多个Organization工作,一个Organization可以 雇佣多个Person。

用UML描述Java类 - 编程入门网

图六 双向关联关系

聚合与合成

关联只是UML中的关系之一。下面我们来看看UML中的其他两种关系——聚合( Aggregation)和合成(Composition),它们实际上是关联关系的不同变种。聚合 是这样一种关联关系,在这种关系中一个类的对象代表着另一个类的对象的一部 分,有的人因此也把聚合关系叫做“全体-部分”关系。聚合关系用实线空心菱形 箭头表示,箭头由表示Part的类指向表示Whole的类,参见图七。

用UML描述Java类 - 编程入门网

图七 聚合与合成

那么,在Java程序中聚合关系又是什么样的呢?答案是:这要看你在问谁。聚 合是一个有争议的概念,表达的是一种生命周期依赖关系。有人根据习惯认为, 聚合意味着Whole类必须负责

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号