Chinaunix首页 | 论坛 | 博客
  • 博客访问: 959980
  • 博文数量: 134
  • 博客积分: 7443
  • 博客等级: 少将
  • 技术积分: 1411
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-10 20:18
文章分类

全部博文(134)

文章存档

2012年(7)

2011年(29)

2010年(16)

2009年(6)

2008年(18)

2007年(58)

分类: 项目管理

2010-12-15 09:28:15

1.泛化关联实现在语义其实也是依赖关系,但他们有特定的含义和结果,应该使用专用的线型符号来表达。所以单分出来。

2.泛化实现很好区分,不必细说,区分关联依赖关系的方法:关联在语义上有表现类实例之间的对应关系,所以有重数的概念(一对一,一对多等),依赖在语义上强调类与类的关系,没有重数的概念。

3.虽然在语义上,组合聚合的一种特殊形式,称为组合聚合(Composite Aggregation),强调组合者管理被组合者的全部生命周期,图上却把它们画成同级。因为,习惯上把没有特殊说明的聚合看成是共享聚合(Shared Aggregation),应使用空心菱形, 以与组合聚合(Composite Aggregation)进行区分。这样分类,要强调在设计阶段要严格区分一个聚合共享聚合还是组合聚合,选择不同符号。

4.多元关联在UML图中并不常见,认为程序员习惯上把一个多元关联处理成多个二元关联,这似乎是人类大脑处理复杂关系的本能方式,大家很自然的就会这样做。

5.创建实例化的语义很相似,许多资料没有讲清它们的区别。我认为,实例化专用于工厂类的,强调一个类的某个方法创建并返回了另一个类的实例,也就是说有工厂类中有一个方法,其行为的定义就是实例化对象。而创建关系有所不同,创建者的一个方法创建了另一个类的实例但不返回,此方法要完成其他行为需要创建这个实例而已。

6.细化关系出现在同一个概念的不同版本之间,同一个概念在不同的设计阶段可能出现不同版本,后出现的的版本是先前版本的细化,一般用不到。因为我认为一个概念的不同版本不应该出现在同一个UML图中,对同一个图,一般只表现当前设计阶段下的模型,没必要包含历史不同版本。

7.跟踪关系也是表现的不同模型中的相似概念,但不要求精确的对应关系。我总结有两种场景:不同开发阶段的模型,如设计阶段的模型中的一个类trace需求阶段模型的另一个概念;不同子系统的模型,如客户端模型的一个用于显示数据的类trace服务端模型的一个保存数据的类。

8.替代关系也挺特殊,一个东东可以替代另外一个东东,在泛化实现中其实是隐藏了替代关系的,如继承关系中,子类能替代父类,实现同一接口的不同类也能互相替代。个人认为泛化实现都实现替代的机制,单独列出一个替代关系,是让它用于其他机制实现的替代关系,如:C++使用运算符重载机制,自己定义一个大整数类型,可以代替内置的整数类型,这就没有使用继承机制。

9.大多数使用(usage)关系,大多数情况下,其实没有必要再细分类型。具体的使用方式叫给源代码说明就可以了。更何况,一个类使用另外一个类,可能既包含调用(call)又包含创建(creation),这时候用使用来概括就可以了。

阅读(1770) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~