UML中对象间的几种关系

来源:互联网 发布:mac ping ip 端口命令 编辑:程序博客网 时间:2024/06/03 22:50

UML中定义的关系主要有6种: 依赖、关联、聚合、组合/合成、泛化、实现;
1、依赖关系:
   含义:是类与类之间的连接,表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系;
   体现:在Java和C++中体现为局部变量、方法/函数的参数或者是对静态方法的调用;
   方向:单向;
   图示:虚线 + 箭头;
   举例:如果A依赖于B,那么B在A中就体现为A的局部变量、方法的参数或静态方法的调用;
2、关联关系:
   含义:类与类之间的连结,关联关系使一个类知道另外一个类的属性和方法;
   体现:在Java和C++中,关联关系是通过成员变量来实现的;
   方向:双向或单向;
   图示:实线 + 箭头;箭头指向被关联的类;
   举例:如果A关联了B,那么B就作为A的一个成员变量来使用;
3、聚合关系:
   含义:是关联关系的一种,是一种强关联关系;聚合关系是整体和个体/部分之间的关系;关联关系的两个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中,代表个体/部分的对象有可能会被多个代表整体的对象所共享;
   体现:在Java和C++中,聚合关系也是通过成员变量来实现的;
   方向:单向;
   图示:空心菱形 + 实线 + 箭头;箭头指向被聚合的类,也就是说,箭头指向个体/部分;
   举例:汽车由引擎、轮胎以及其它零件组成;
4、合成/组合关系:
   含义:它也是关联关系的一种,但它是比聚合关系更强的关系.合成/组合关系要求聚合关系中代表整体的对象要负责代表个体/部分的对象的整个生命周期;合成/组合关系不能共享;在合成/组合关系中,如果代表整体的对象被销毁或破坏,那么代表个体/部分的对象也一定会被销毁或破坏,而聚在合关系中,代表个体/部分的对象则有可能被多个代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏;
   体现:在Java和C++中,合成/组合关系是通过成员变量来实现的;
   方向:单向;
   图示:实心菱形 + 实线 + 箭头;箭头指向代表个体/部分的对象,也就是被合成/组合的类的对象;
   举例:一个人由头、四肢、等各种器官组成;
5、泛化关系:
   含义:它表示一个更泛化的元素和一个更具体的元素之间的关系;也就是通常所说的类的继承关系;
   体现:在Java和C++中,泛化关系通过类的继承来实现的;
   方向:单向;子类继承父类;
   图示:空心箭头 + 实线;箭头指向父类;
   举例:类B继承类A;
6、实现关系:
   含义:它指定了两个实体之间的一份合同;即:一个实体定义一份合同,另外一个实体则保证履行该合同;
   体现:在Java和C++中,实现关系通过类实现接口来实现的,即:一个类实现某个接口;
   方向:单向;子类实现接口;
   图示:空心箭头 + 虚线;箭头指接口向接口;
   举例:类B实现接口A;

注意:泛化关系和实现关系又统称为一般关系;
总之,一般关系表现为继承或实现(is a),关联关系、聚合关系、合成/组合关系表现为成员变量(has a),依赖关系表现为函数中的参数(use a);

原创粉丝点击