UML中的四种关系
2015-11-22 11:35
1531 查看
UML(Unified Modeling Language,统一建模语言),是一种面向对象的建模语言。它的主要作用是帮助用户对软件系统进行面向对象的描述和建模,她可以描述这个软件开发过程从需求分析指导实现和测试的全过程。UML通过建立各种联系,如类于类之间的关系、类与对象怎么相互配合实现系统的行为状态等,来组建整个结构模型。UML提供了各种图形,来把这些模型及其关系可视化,让人们可以清楚的理解模型。可以从多个视角来考察模型,从而更加全面的了解模型。
在用UML进行建模的时候,各个模型之间的关系要弄清楚,建立一个好的模型,是软件开发的基础。在UML中总共只有四种关系,分清楚这几种关系如何使用很重要,下边分别介绍一下这四种关系:
UML中的这四种关系分别是:关联(Association)关系、依赖(Dependency)关系、泛化(Generalization)关系、实现(Realization)关系。
一、关联(Association)关系
关联关系是一种结构化的关系,指一种对象和另一种对象有联系,给定关联的两个类,可以冲其中的一个类的对象访问到另一个类的相关对象。另外,关联可以有方向,表示该关联在某个方向被使用。关联分为三种:普通关联、聚合、组合。
1、普通关联:
只在一个方向上存在的关联,称作单项关联,在两个方向上都存在的关联,称作双向关联。在UML中关联关系用一条实线表示,如图:
此图表示一个公司可以有多个员工,图中employee前边的“+”号表示公有,若是私有则是“-”。若是双向关联,两个类之间直线没有箭头。也可以有自身关联。
2、聚合:
聚合表示的整体和部分的关系,相关联的两个类之间是相互独立的,没有时间上的先后关系,只是一个整体和部分的关系。如书架和书的关系,书架和书都可以单独存在。在UML中聚合用带有空心菱形的线表示。如下:
下边的两个类是TV set的一部分。
3、组合:
组合也能表示整体和部分的关系,但与聚合不同,组合中的两个类是有一定生命期的,如:书和书页,书页不能单独存在,只能依附于书存在。书也必须依附于书页。组合用带实心菱形的线段表示。如下:
二、依赖(Dependency)关系
对于两个对象A、B,如果对象A发生变化,可能会引起另一个对象B的变化,则称B依赖于A。在UML中,依赖关系用有箭头的虚线来表示,如下图:
图中类2依赖于类1;supplier类依赖于类Client。
三、泛化(Generalization)关系
泛化是一般元素和特殊元素之间的关系。特殊元素(子元素)的对象可替代一般元素(父元素)额对象。用这种方法,子元素共享了父元素的结构和行为。泛化关系也就是继承。在UML中,泛化关系用一条带有空心箭头的实线来表示,如下图:
鱼和鸟都是动物,可以说鱼和鸟是动物这个类的泛化。动物是父类,鱼和动物是子类。泛化关系的好处是代码可以复用。
四、实现(Realization)关系
实现关系将一种模型元素(如类)与另一种模型元素(如接口)链接起来,其中接口只是行为的说明而不是结构或者实现。真正的实现由前一个模型元素来完成。在UML中,实现关系一般用一条有空心箭头的虚线来表示,如下图:
第二个图中类class实现了一个接口interface。
上边的UML的这四种关系,除了需要注意各种关系的区别和联系外,还要了解对关系的修饰,最常见的,对关系可以做两种修饰。
第一种是命名,即可以为关系取名。第二种是数字,可以不同对应情况的关系,比如一对多、多对一、一对一和多对多等。
在用UML进行建模的时候,各个模型之间的关系要弄清楚,建立一个好的模型,是软件开发的基础。在UML中总共只有四种关系,分清楚这几种关系如何使用很重要,下边分别介绍一下这四种关系:
UML中的这四种关系分别是:关联(Association)关系、依赖(Dependency)关系、泛化(Generalization)关系、实现(Realization)关系。
一、关联(Association)关系
关联关系是一种结构化的关系,指一种对象和另一种对象有联系,给定关联的两个类,可以冲其中的一个类的对象访问到另一个类的相关对象。另外,关联可以有方向,表示该关联在某个方向被使用。关联分为三种:普通关联、聚合、组合。
1、普通关联:
只在一个方向上存在的关联,称作单项关联,在两个方向上都存在的关联,称作双向关联。在UML中关联关系用一条实线表示,如图:
此图表示一个公司可以有多个员工,图中employee前边的“+”号表示公有,若是私有则是“-”。若是双向关联,两个类之间直线没有箭头。也可以有自身关联。
2、聚合:
聚合表示的整体和部分的关系,相关联的两个类之间是相互独立的,没有时间上的先后关系,只是一个整体和部分的关系。如书架和书的关系,书架和书都可以单独存在。在UML中聚合用带有空心菱形的线表示。如下:
下边的两个类是TV set的一部分。
3、组合:
组合也能表示整体和部分的关系,但与聚合不同,组合中的两个类是有一定生命期的,如:书和书页,书页不能单独存在,只能依附于书存在。书也必须依附于书页。组合用带实心菱形的线段表示。如下:
二、依赖(Dependency)关系
对于两个对象A、B,如果对象A发生变化,可能会引起另一个对象B的变化,则称B依赖于A。在UML中,依赖关系用有箭头的虚线来表示,如下图:
图中类2依赖于类1;supplier类依赖于类Client。
三、泛化(Generalization)关系
泛化是一般元素和特殊元素之间的关系。特殊元素(子元素)的对象可替代一般元素(父元素)额对象。用这种方法,子元素共享了父元素的结构和行为。泛化关系也就是继承。在UML中,泛化关系用一条带有空心箭头的实线来表示,如下图:
鱼和鸟都是动物,可以说鱼和鸟是动物这个类的泛化。动物是父类,鱼和动物是子类。泛化关系的好处是代码可以复用。
四、实现(Realization)关系
实现关系将一种模型元素(如类)与另一种模型元素(如接口)链接起来,其中接口只是行为的说明而不是结构或者实现。真正的实现由前一个模型元素来完成。在UML中,实现关系一般用一条有空心箭头的虚线来表示,如下图:
第二个图中类class实现了一个接口interface。
上边的UML的这四种关系,除了需要注意各种关系的区别和联系外,还要了解对关系的修饰,最常见的,对关系可以做两种修饰。
第一种是命名,即可以为关系取名。第二种是数字,可以不同对应情况的关系,比如一对多、多对一、一对一和多对多等。
相关文章推荐
- Go 语言变量
- URAL 1225 递推
- Go 语言数据类型
- Hadoop伪分布式搭建
- 什么是 "asmlinkage"
- 回表
- QT:数据库总结(三)之SQL模型类-QSqlTableModel模型
- Android实战之你应该使用哪个网络库?
- Go 语言基础语法
- 特殊回文数
- rk3288_android5.1__android4.4 jdk1.6和jdk1.7共存问题 ubuntu java7 The required version is: "1.7.x"
- Go 语言结构
- springMvc实现
- 点击button事件和拖动button事件冲突
- 第一次撰写个人网站的一点技术总结
- Go 语言环境安装
- iOS完整学习路线图
- 17 Automatic SQL Tuning
- Linux死锁分析
- Go 语言简介