EA&UML日拱一卒-关联(进阶篇)
来源:互联网 发布:淘宝实木花架中式图片 编辑:程序博客网 时间:2024/04/29 03:50
昨天的基本篇算是关联的基本内容,不大好理解,但是非常有用。对于面向对象的建模,识别类当然是第一步,接下来就是要识别类之间的关系,也就是关联。可能会觉得有点虚,但是这同时也是设计向上游发展的表现,请务必好好体会。
当某个关联端的多重度被指定为一个以上时,并没有强调这些对象是不是有序的,也没有明确对象的值是不是可以重复。在有些(很多?)时候是需要明确这些信息的。
下面就以一个事件处理系统为例来说明。
首先是按照事件发生时间先后来处理事件的情况,这时候时间是按照发生的先后次序排列(Ordered=True)的,又因为同样的事件可能多次发生,所以队列中的值是可以重复(Allow Duplicates=True)的。这种情况UML称之为{sequence},类图是下面这样的。
当然也存在按照优先级来处理时间的情况。这时候需要两方面的信息。一个是保存发生事件的EventHandler,它所管理事件是无序(Ordered=False)的,允许重复(Allow Duplicates=False)的;另一个是优先级信息队列EventPriorityQueue,这个队列管理的事件是有序(Ordered=True)的,不允许重复(Allow Duplicates=False)的。EventHandler通过EventPriorityQueue决定事件处理的次序。前一种情况UML称之为{bag},后一种情况UML称之为{ordered}。以下是类图。
接下来说明这两种信息的设定方法。首先进入关联端的设定界面后,然后通过下图红框中的项目,分别设定是否有序和是否允许重复的选项。有一点需要注意的是,只有在指定了多重度以后,设定结果才会在类图中表示出来。
两个设定项目,四种组合,归纳起来就是下面这张图。
你一定注意到左下角的空白,UML并没有像其他三种情况一样给以个说法。其原因应该UML认为不存在这种情况吧。反正我是没想到,你呢?
无论什么时候,都要尽量精确地设计和实现。做正确的事不需要问理由。
如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!
阅读更多新文章,请扫描下面二维码,关注公众号【面向对象思考】
- EA&UML日拱一卒-关联(进阶篇)
- EA&UML日拱一卒-关联(基础篇)
- EA&UML日拱一卒-关联(关联类)
- EA&UML日拱一卒-关联(限定关联)
- EA&UML日拱一卒--类图::关联(关联,聚合,组合)
- EA&UML日拱一卒--类图::泛化(generalization)
- EA&UML日拱一卒--类图::实现(realization)
- EA&UML日拱一卒--类图::协作(collaboration)
- EA&UML日拱一卒-类模板
- EA&UML日拱一卒-状态图::开篇
- EA&UML日拱一卒-状态图::状态
- EA&UML日拱一卒-状态图::迁移
- EA&UML日拱一卒-状态图::状态机
- EA&UML日拱一卒-状态图::庖丁解牛
- EA&UML日拱一卒--类图::枚举类型(enumeration)
- EA&UML日拱一卒--类图::对象图(object diagram)
- EA&UML日拱一卒-活动图::活动(续)
- EA&UML日拱一卒-活动图::CallOperationAction(续)
- 关于 disabled 属性和 readonly属性以及其对form表单向后台传值的影响
- Android百度地图开发遇到的问题 : UnsatisfiedLinkError
- c/c++代码 No.10 二进制对应表
- c/c++代码 No.11 左移
- 读取oracle数据库date日期字段,去掉时间秒后面的点'.'
- EA&UML日拱一卒-关联(进阶篇)
- python 词云
- c/c++代码 No.12 右移
- 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
- Mybatis分页插件的实现
- 阿兹卡班(azikaban)报错:syntax error:unexpected end of file
- 【Mac App工具】meld merge工具安装教程
- c/c++代码 No.13 二进制与十进制相互转换
- 如何用 Kaldi 训练一个 DNN 声学模型