EA&UML日拱一卒-关联(基础篇)
2017-04-10 18:43
465 查看
在定义了类属性,类操作等限制在单个类内部的内容之后,接着说明类之间的关系,今天是关联的基础篇。
什么是关联
关联是两个或多个特定类之间的关系,它描述了这些类的实例之间的连接。在问题陈述中,关联经常以动词(或动宾)形式出现。
比如学生和老师之间的关联,如果以学生为起点,老师为终点,那么这种关联就可以称为获取知识(AquireKnowledge)。如果以老师为起点,学生为终点,那么这种关联就教授知识(TeachKnowledge)。有教就有学,一体两面。
关联本质上都是双向的。但是在读的时候要按从起点到终点的方向来读。
下面是AquireKnowledge在UML中的表现方式。
关联就是连接Student类和Teacher类之间的那条线,上面带有关联名AquireKnowledge。下面介绍关联的表示/设定方法。
在增加关联关系之前,首先打开类图并增加两个类:Student和Teacher。
接下来点击工具栏中的Associate图标(如下图),然后在Student类上按下鼠标并拖动鼠标到到Teacher类后释放。这里的方向是有意义的,拖动开始的类就是关联的起点。
在生成的直线上双击鼠标以打开如下的AssociateProperty对话框。
在名称栏中输入AquireKnowledge,同时确认右边的属性列表,可以看到Source项目的内容为Student,Target项目的内容为Teacher。
接下来选择Role(s)分类,在SOURE和TARGET两边的列表中都可以看到Multiplicity项目,这个项目叫多重都,后面会讲到,先都输入选择【*】。
这样就可以得到本文一开始的那张图了。
多重性
多重性指定了一个类与其关联类的单个实例可能相关的实例数目。也不知道为什么这种定义总是那么难以理解。还是结合上面的例子来说明吧。先假设这里的一个类是Student类,那么它的多重性就指定了一个Teacher类的实例可能与多少个Student类的实例相关。
多重性的标准格式为:minimum..maxmun,minimum和maxmun都是整数,maxmum也可以是“*”,表示无限多。例如:[1..*]就表示1个到无限多个。
区间还可以一个单独的整数来表示。
先看下面的例子。
有两个多重度的设定值。首先Student类侧的1,表示的是一个Book类的实例只能和1个Student类的实例相关。Book类则为[0..*]表示一个Student类的实例可以和0到无限多个Book类的实例相关。
关联端名
我们也可以给关联的两端指定名称,例如在上面的Has关联中,可以指定Student端的名称为owner,指定Book端的名称为belongings。
关联端名的设定也是通过下面的AssociationProperty对话框来进行的。
设定关联端名以后,类图就变成下面这样。
关联端名一般以名词出现,大多数场合关联端的命名会比关联的命名更容易一些。一旦指定了关联端名,就可以省略关联名。
如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!
阅读更多新文章,请扫描下面二维码,关注公众号【面向对象思考】
什么是关联
关联是两个或多个特定类之间的关系,它描述了这些类的实例之间的连接。在问题陈述中,关联经常以动词(或动宾)形式出现。
比如学生和老师之间的关联,如果以学生为起点,老师为终点,那么这种关联就可以称为获取知识(AquireKnowledge)。如果以老师为起点,学生为终点,那么这种关联就教授知识(TeachKnowledge)。有教就有学,一体两面。
关联本质上都是双向的。但是在读的时候要按从起点到终点的方向来读。
下面是AquireKnowledge在UML中的表现方式。
关联就是连接Student类和Teacher类之间的那条线,上面带有关联名AquireKnowledge。下面介绍关联的表示/设定方法。
在增加关联关系之前,首先打开类图并增加两个类:Student和Teacher。
接下来点击工具栏中的Associate图标(如下图),然后在Student类上按下鼠标并拖动鼠标到到Teacher类后释放。这里的方向是有意义的,拖动开始的类就是关联的起点。
在生成的直线上双击鼠标以打开如下的AssociateProperty对话框。
在名称栏中输入AquireKnowledge,同时确认右边的属性列表,可以看到Source项目的内容为Student,Target项目的内容为Teacher。
接下来选择Role(s)分类,在SOURE和TARGET两边的列表中都可以看到Multiplicity项目,这个项目叫多重都,后面会讲到,先都输入选择【*】。
这样就可以得到本文一开始的那张图了。
多重性
多重性指定了一个类与其关联类的单个实例可能相关的实例数目。也不知道为什么这种定义总是那么难以理解。还是结合上面的例子来说明吧。先假设这里的一个类是Student类,那么它的多重性就指定了一个Teacher类的实例可能与多少个Student类的实例相关。
多重性的标准格式为:minimum..maxmun,minimum和maxmun都是整数,maxmum也可以是“*”,表示无限多。例如:[1..*]就表示1个到无限多个。
区间还可以一个单独的整数来表示。
先看下面的例子。
有两个多重度的设定值。首先Student类侧的1,表示的是一个Book类的实例只能和1个Student类的实例相关。Book类则为[0..*]表示一个Student类的实例可以和0到无限多个Book类的实例相关。
关联端名
我们也可以给关联的两端指定名称,例如在上面的Has关联中,可以指定Student端的名称为owner,指定Book端的名称为belongings。
关联端名的设定也是通过下面的AssociationProperty对话框来进行的。
设定关联端名以后,类图就变成下面这样。
关联端名一般以名词出现,大多数场合关联端的命名会比关联的命名更容易一些。一旦指定了关联端名,就可以省略关联名。
如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!
阅读更多新文章,请扫描下面二维码,关注公众号【面向对象思考】
相关文章推荐
- EA&UML日拱一卒-关联(限定关联)
- EA&UML日拱一卒--类图::关联(关联,聚合,组合)
- EA&UML日拱一卒-关联(进阶篇)
- EA&UML日拱一卒-关联(关联类)
- EA&UML日拱一卒--序列图(Sequence Diagram)::迭代表达式
- EA&UML日拱一卒--序列图(Sequence Diagram)::消息签名
- EA&UML日拱一卒--类图::泛化(generalization)
- EA&UML日拱一卒-类模板
- EA&UML日拱一卒--序列图(Sequence Diagram)::状态不变量
- EA&UML日拱一卒--序列图(Sequence Diagram)::生命周期
- EA&UML日拱一卒-修改生成代码语言种类的初始值
- EA&UML日拱一卒--活动图::入门
- EA&UML日拱一卒-创建工程,类图
- EA&UML日拱一卒--序列图(Sequence Diagram)::交互和交互使用
- EA&UML日拱一卒--序列图(Sequence Diagram)::门
- EA&UML日拱一卒--序列图(Sequence Diagram)::时间约束
- EA&UML日拱一卒-为类添加操作和方法
- EA&UML日拱一卒--类图::协作(collaboration)
- EA&UML日拱一卒-添加类属性
- EA&UML日拱一卒--类图::枚举类型(enumeration)