`
cantellow
  • 浏览: 842264 次
  • 性别: Icon_minigender_1
  • 来自: 草帽海贼团
社区版块
存档分类
最新评论

rose中的聚合和组合

UML 
阅读更多

rose中的关联提供了两种聚合表示法,一种是单向聚合,另一种称之为聚合。

我理解为:

如果A与B是单向聚合:

class A{ public A(); public B theB; ... }


 如果A与B是聚合:  

class A{ public A(); public B theB; ... } class B{ public B(); public A theA; ... }


 

聚合是指一个对象拥有另一个对象,仅强调“拥有”。而组合是指一个对象是另一个对象的一部分,强调“不可分割”,两个对象具有相同的生命周期。两者的差别就好比创立一间公司时您可以不要雇员(拥有),但创造一个人时您却不能丢掉了他的心(不可分割)。  
   
  关联和依赖都是指一个对象知道另一个对象。区别在于关联是一种结构关系,表现为一个对象能够获得另一个对象的实例引用并调用它的服务(即使用它);依赖是一种使用关系,表现为一个对象仅仅是调用了另一个对象的服务。 

 
实际上在rose中没有直接对组合提供符号支持,但是我们可以通过下面的方法使用组合:

设置方法:

示例:
一个进程由pcb, code, date三部分组成。
其类图表示如下:

组合


设置方法:
1、在工具栏选择 "association" (关联),从process类连接到pcb类。
2、编辑role B 属性 open specital , role B detail ,multiplic(重数) 为1,勾选 "Aggregate",不勾选"navigable"。containment of Data (传递方式)为by value。

 

 

3、编辑role A 属性 role A detail ,填写role名称为 pcb ,勾选"navigable" ,不勾选 "Aggregate",containment of Data (传递方式)为by value。

在rose中,元件类为A 而 主体类为B,这与我们的习惯思维主体在前,部分在后不同。因为rose认为,a是server,而b 是client,A为B提供服务。这大概是西方与中国文化的不同吧。也可能正因为此,rose不区分“组合”与“聚合”(甚至于UML建模精粹中也说“把它(组合)想像成建模安慰剂”)。

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics