- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
不仅需要确定类之间的关系,还要描述这些关系。例如,仅知道学生参加竞赛班是不够的。学生共参加了多少竞赛班?没有,一个,还是多个?更进一步,关系是双向的:不仅学生参加竞赛班,竞赛班也被学生参加。这就导致了下面的问题:可以让多少学生参加竞赛班,有无可能没有一个人参加竞赛班?这隐含着需要确定关联的基数和选择性。基数表示“多少”的概念,而选择性表示“是否必须拥有”的概念。在UML中,把基数和选择性组合成一个概念——多重性。 在图1.7中,关联的标签是任选项,通常由一到两个描述关联的词组成。关联的多重性在线的每端都有标注,每个方向都有一个多重性指示器(表1.1总结了可能会遇到的多重性指示器)。关联的每端都可能指示关联角色。多重性指的是有多少对象可以参与关联。多重性可用来表达一个取值范围、特定值、无限定的范围或者一组离散值。角色表示与此关联相连的类的对象所扮演的角色。 基数A 基数B 角色A 角色B 标签 图1.7 UML类图上关联建模符号概括 第1章 为问题域建概念模型 类A 类B * 指示器 含 义 0..1 0或1个 1 仅1个 0..* 0或多个 1..* 1或多个 n 仅n个(n1) 0..n 0到n个(n1) 1..n 1到n个(n1) 表1.1 UML多重性指示器 下面,我们举一些例子来说明关联的概念。 第1章 为问题域建概念模型 * Student 0..1 manages 图1.8 关联的几个例子 首先,对于图1.8,我们应该这样阅读:一个学生可以参加一个以上的竞赛班;一个竞赛班可由0到多个学生来参加;一个作为助教的学生可以辅助一个以上的竞赛班;一个竞赛班可有一个学生作为助教。 一个雇员可以占据一个职位;一个职位可以由一个雇员占有(一些职位无人填充);一个雇员应由另一个雇员管理,那是他或她的经理(公司董事长是唯一没有经理管辖的人员);一个雇员管理0到多个雇员(一些雇员没有任何小组成员)。 Student Game 0..* 0..* 0..1 takes assists teaching assistant 1..* 第1章 为问题域建概念模型 0..1 manages manager 0..* Employee Position 0..1 1 holds staff member 0..1 manages * 其次,两个类之间存在多个的关联是否有可能:“Student”类和“Game”类之间有“takes”和“assists”关联。关联两端使用相同的类也是合法的,这叫做递归关联,例如“Employee”类的“manages”关联,每个给定的雇员都可能有好几个他或她管理下的雇员,其他的雇员也是如此。 第三,有时关联也可以是单向的,如图1.8中“Employee”和“Position”间的“holds”关联。这意味着雇员对象也知道他们占据的职位,但职位对象不需要知道是哪个雇员占据它。这被称作单向关联,它只向一个方向转移。你可以通过实心箭头表示单向关联(这样就不会和继承混淆了)转移的方向。双向关联可以向两个方向转移,没有箭头。这样,永远也不可能见到有两个箭头的关联。而且,如果关联没有箭头,会自动默认为双向关联。 另外,无论我们的工作多么出色,肯定也会错过对象关系的不少细节信息。当出现我们不能肯定的情况时,可以用问号在不确定的关系前把它标记为“当前未知的”。例如,在图1.8中0个或多个雇员占据一个职位。你知道现在可能会有无人填充的职位,但不太肯定是否有一个或多个雇员占有相同的职位。因为目前还不能确定,就标一个问号来表示(如图1.9所示),以后必须返回并验证“基于经验的猜测”。 第1章 为问题域建概念模型 * Employee Position 0..1? 1 holds 图1.9 表示未知 ★怎样实现关联
文档评论(0)