类图的多重性是指什么?

类图的多重性是指什么?,第1张

多重性元素(multiplicity element)主要包含一组上下限数,用来指出可被允许生成的实例(instance)数量,即最多可以生成多少数目(上限),最少不得低于多少数目(下限).关联的两端以"下限..上限"的格式标示出多重性,如果上下限数相同,标示出一个数目就可以了.因此,可以解读为:

一个顾客(customer)可以拥有一个到多个的账户(account),但是一个账户只能由一个顾客所拥有.

类图一般有以下3个步骤:确定类,识别类的属性和 *** 作,组织类并确定其关系。如下:

1、确定类。确定类是通过对软件需求的分析来完成的。常用的方法包括行为分析、名词识别法、CRC分析等等。其中的名词识别法就是首先把需求或者用例描述中的所有的名词标识出来,把它们作为候选类,然后再对这些候选类逐个进行考察,去掉一些不必要的类。

2、区分是类还是属性。有些标识出来的候选类,实际上更适合作为类的属性,而不适合定义成类。比如会员编号,会员类型这些就适合定义为会员类的属性。

3、组织类并确定其关系。类与类之间的关系有依赖、泛化、实现和关联。在识别出了类、类的属性和 *** 作之后,就要组织这些类并确定类之间的关系。我们通常是以类图的形式来描述类及其关系。

组织类并确定其关系通常分为以下4个步骤:

1、确定类之间的关联关系并标识其多重性。

2、使用继承关系组织类。

3、确定整体和部分的关系。

4、绘制类图。

使用Enterprise Architect画类图

一、选择文件-新建项目,并选择一个位置点击保存

图1:

二、在跳出来的选择模型窗口,这里可以选择Class

图2:

三、模板生成的只是参考案例,这里可以不用模版,直接点右边的新建包即可创建一个默认包。

图3:

四、可以在包中创建一个主图表

图4:

五、创建好图表后,一般会默认打开,如果没有默认打开就直接在图表上点击右键打开即可,如图

六、注意,现在开始建包和各包的图表及类了,如果项目不大,就直接建类,到时直接建立关系就行了,如果项目大的话都是要建包的,都统一建包统一都在Main图表中创建,如图:

七、单击确定后d出新新建图表窗口,一般名字和包名是一样的,直接确定即可,如图:

九、确定后,就建好一个包了,接下来创建各个包和各个包里的主图表,建好后如下:

十、现在双击进入主图表Main里的包,就可以直接进入包里面的主图表中了,可以在这里创建各个类,及接口。如果类关系可以在包中完成的,就可以直接在包中完成,要是涉及到多包的,一般建议到Main图表中完成。Main主图表中是不能直接看到其它包中的单个类的,只能看到包及包中含有的类。如果要在主图表中画类图只能通过拖动方式,将包中的类拖到主图表中。

以下是建好的各包及各个类:

十一、现在就要在主Main中为各表添加关系了。

各类关系已经有很多讲得不错的,这里就不一一说明了,这里主要说一下在Enterprise Architect中怎么画类关系。

一、首先将各个要关联的类拖入主图表中,如果不需要和其它包关联的就直接在包里的主图表中完成即可,注:拖放时会d出对话框询问拖放类型,一般选择第一个,仅作为链接拖入,如图:

二、在左侧关系中一般只提供了基本的关系,可以先随便拖一个关系,然后再更改。这里直接在空白处右键创建一个依赖关系:

点完后直接在类之间拖动,就完成了一个依赖关系的建立。

各关系的英文如下:

Dependency依赖关系,由依赖的一方指向被依赖的一方。

Association关联关系。

Directed Association有方向的关联关系。

Aggregation聚合

Composition合成/组成

Nest嵌套内部类

Generalization泛化关系

Realize实现

关联关系可以参考:

http://blog.csdn.NET/gfdonx/article/details/49539531

依赖关系一般场景:

第一种也是最常用的一种方式是将一个类的对象作为另一个类中方法的参数。

第二种方式是在一个类的方法中将另一个类的对象作为其局部变量。(注这里如果将变量提到属性中就变成了单向的关联关系了)

第三种方式是在一个类的方法中调用另一个类的静态方法。

关联关系一秀场景:

它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,

(1) 双向关联

例如:顾客(Customer)购买商品(Product)并拥有商品,反之,卖出的商品总有某个顾客与之相关联。

(2) 单向关联

通常单向关联是将一个类的对象作为另一个类的成员变量.

(3) 自关联

在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。

(4) 多重性关联

多重性关联关系又称为重数性(Multiplicity)关联关系,表示两个关联对象在数量上的对应关系

聚合关系一般场景:

聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。聚合关系都是一个对象是另一个对象的属性,并且在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。

组合关系一般场景:

组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。而且部份的对像是不能单独存在的。或者说存在没有意义。成员对像的创建也都是在整体对象中完成的。

泛化关系一般场景:

泛化(Generalization)关系也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。

接口与实现关系一般场景:

接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现(Realization)关系,在这种关系中,类实现了接口,类中的 *** 作实现了接口中所声明的 *** 作。

代码工程的导入

一、如果已经有写代码了,这里可以选择在主包上右键,代码工程,导入源文件和目录

二 ,通过导入的代码,及通过EA创建的类,需要再创建类关系,导入的有的类关系已经画好了,但还是不够完善,且导入的类图只有包中的关系,如果跨包则没有。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11618982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存