UML类图学习

  学习设计模式的时候每个模式都会有一个UML类图,一般这些类图都还是比较容易看懂的,但是当自己设计UMl类图的时候,就头大了。dependency,composition,aggregation,association有什么区别?还有那些0……*,0……1,1……*都是什么意思?让我们一起来学习一下。所有UML类图都使用PowerDesigner绘制。

一般化、泛化——Generalization

  用在两个类或者两个接口之间就是继承,类和接口之间就是实现,箭头指向被继承或被实现者

依赖——Dependency

  临时的、偶然的关系,可以为单向或者双向,代码表现为一个类或者接口作为另一个类或接口的参数,箭头指向作为参数的类

  

关联——Association

  类与类、类与接口之间的持久关系,双方地位平等。可以为单向或者双向,代码表现为被关联项作为关联项的属性,或者被引用项是一个全局变量。箭头指向被引用项

  

聚合——Aggregation

  类与类、类与接口之间的部分与整体关系,但部分与整体是可分离的,即has-a的关系。例如:家庭——成员之间的关系,部分可以独立于整体生存,部分可以属于多个对象。代码表现和关联一样,只能从语义区分。箭头指向部分

  

组合——Composition

  也是部分与整体的关系,但是两者不可分离,拥有相同的生命周期,部分不可以独立于整体生存,即contains-a关系。例如:人体——心脏之间的关系。箭头指向部分

  

其他

  箭头

  

  关系所表现的强弱程度依次为:组合>聚合>关联>依赖;

  多重性关系

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

表示方式
多重性说明
1..1
表示另一个类的一个对象只与该类的一个对象有关系
0..*
表示另一个类的一个对象与该类的零个或多个对象有关系
1..*
表示另一个类的一个对象与该类的一个或多个对象有关系
0..1
表示另一个类的一个对象没有或只与该类的一个对象有关系
m..n
表示另一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n)

  下图表示一个公司拥有1到n个员工,一个人属于0或1个公司

  

  

posted @ 2015-10-19 09:53  妖刀Dreamcast  阅读(264)  评论(0编辑  收藏  举报