您的位置:首页 > 其它

【设计模式】UML关系图示例

2011-06-01 15:11 176 查看
UML图例如下:



一、类框表示





第1层:类名。
第2层:属性(即类的字段)。
第3层:操作(类的方法)。+号表示public;-号表示private;#号表示protected。

二、类之间的各种关系

类之间的关系共6种:
继承关系
接口关系
依赖关系
关联关系
聚合关系
组合关系

1、继承关系

用空心三角形+实线表示。


 



2、实现接口

用空心三角形+虚线表示。






3、依赖关系

用虚线箭头表示。



主类(动物)中的某个方法需要用到某类(氧气、水)作为参数,就是说“主类的某些方法需要依赖到某类”。



4、关联关系

用实线箭头表示。



主类(企鹅)中的某个属性变量(字段)是某类(气候)的一个引用(或者指针),就是说:“主类和某类具有关联性,主类中的某些方法需要用到某类的外部实例,但是某类的外部实例的生命周期和主类没有关系”。



5、聚合关系

用空心菱形+实线箭头表示。



这是一种弱的“拥有”关系。主类是有若干个某类对象实例,并提供了有关某类的对外一致的接口方法。但是某类又不知道主类的存在,并不为主类提供功能性服务。例如:std::vector,vector和T就是集合关系。



6、合成关系(组合关系)

用实心菱形+实线箭头表示。



这是一种强的“拥有”关系。主类必须拥有一个某类。某类为主类提供必不可少的功能。某类的生存期和主类一致。例如:NetServer类中必须拥有Socket类用来进行网络通信,同样也必须拥有DataSoruce类用来存储数据。



三、关系间的区别
1、聚合和组合关系的区别
聚合关系多用于:容器类+元素类,组合关系多用于:一个综合大类+若干个专用小类。
聚合关系中,主类可以有0个或者N个相同类型某类,并且可以运行时动态增删。组合关系中,主类一般拥有N个不同类型的某类,和主类同时创建或删除。
聚合关系中,某类仅仅是缓存在主类中,并不为主类提供某些功能。组合关系中,某类提供主类必需的功能。
2、关联关系和聚合及组合关系的区别
关联关系:主类仅仅用到某类的部分方法。某类可以为全局变量,主类的成员变量指针指向这个全局变量。例如:Allocator类,主类可用全局的Allocator来创建一个子实例。
如果某类的生命周期不受主类控制,又为主类提供了某些功能,但主类又不是容器,那么某类就是和主类相关联。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: