UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
3) 类的属性即类的数据职责,类的操作即类的行为职责
一、依赖关系(Dependence)
依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。

- public class Driver
- {
- public void drive(Car car)
- {
- car.move();
- }
- ……
- }
- public class Car
- {
- public void move()
- {
- ......
- }
- ……
- }
依赖关系有如下三种情况:
1、A类是B类中的(某中方法的)局部变量;
2、A类是B类方法当中的一个参数;
3、A类向B类发送消息,从而影响B类发生变化;
二、泛化关系(Generalization)
泛化关系(Generalization):A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)

- public class Person
- {
- protected String name;
- protected int age;
- public void move()
- {
- ……
- }
- public void say()
- {
- ……
- }
- }
- public class Student extends Person
- {
- private String studentNo;
- public void study()
- {
- ……
- }
- }
在UML当中,对泛化关系有三个要求:
1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
2、子类中除了与父类一致的信息以外,还包括额外的信息;
3、可以使用父类的实例的地方,也可以使用子类的实例;
三、关联关系(Association)
关联关系(Association):类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联(下图所示)。


- public class Customer
- {
- private Product[] products;
- ……
- }
- public class Product
- {
- private Customer customer;
- ……
- }

- public class Customer
- {
- private Address address;
- ……
- }
- public class Address
- {
- ……
- }

- public class Node
- {
- private Node subNode;
- ……
- }
|
表示方式 |
多重性说明 |
|
1..1 |
表示另一个类的一个对象只与一个该类对象有关系 |
|
0..* |
表示另一个类的一个对象与零个或多个该类对象有关系 |
|
1..* |
表示另一个类的一个对象与一个或多个该类对象有关系 |
|
0..1 |
表示另一个类的一个对象没有或只与一个该类对象有关系 |
|
m..n |
表示另一个类的一个对象与最少m、最多n个该类对象有关系 (m<=n) |

- public class Form
- {
- private Button buttons[];
- ……
- }
- public class Button
- {
- …
- }
四、聚合关系(Aggregation)
聚合关系(Aggregation):表示的是整体和部分的关系,整体与部分 可以分开.

- public class Car
- {
- private Engine engine;
- public Car(Engine engine)
- {
- this.engine = engine;
- }
- public void setEngine(Engine engine)
- {
- this.engine = engine;
- }
- ……
- }
- public class Engine
- {
- ……
- }
如:电话机包括一个话筒
电脑包括键盘、显示器,一台电脑可以和多个键盘、多个显示器搭配,确定键盘和显示器是可以和主机分开的,主机可以选择其他的键盘、显示器组成电脑;

五、组合关系(Composition)
组合关系(Composition):也是整体与部分的关系,但是整体与部分不可以分开.

- public class Head
- {
- private Mouth mouth;
- public Head()
- {
- mouth = new Mouth();
- }
- ……
- }
- public class Mouth
- {
- ……
- }
如:公司和部门,部门是部分,公司是整体,公司A的财务部不可能和公司B的财务部对换,就是说,公司A不能和自己的财务部分开; 人与人的心脏.

六、实现关系(Implementation)
实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。

- public interface Vehicle
- {
- public void move();
- }
- public class Ship implements Vehicle
- {
- public void move()
- {
- ……
- }
- }
- public class Car implements Vehicle
- {
- public void move()
- {
- ……
- }
- }
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现的更多相关文章
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统 ...
- UML 图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
http://www.uml.org.cn/oobject/201211231.asp 1. 关联 一个类作为另外一个类的变量:在UML类图中,用实线连接有关联关系的对象所对应的类 2.聚合 表示整体 ...
- 关于UML方法学图中类之间的关系:依赖,泛化,关联
类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什 ...
- UML类图及依赖,泛化,关联,聚合,组合,实现
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...
- 【转】UML图中类之间的关系
原文:http://blog.csdn.net/hguisu/article/details/7609483 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...
- UML图中类之间的关系
类图中的关系大致一下几种 l 泛化 l 关联 l 依赖 l 组合 l 聚合 泛化 泛化是子集和超集的关系,常使用继承和实现来表示: 继承:子类到超类的实线和空心三角箭头表示 实现:子类到超类的虚线和空 ...
- UML学习——类之间的关系
参考:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 空心菱形为聚合关系:部分与整体,部分可有可无.部分可以单独存在(车子和引擎,引擎可以单独存在) 实心菱形为组合关系:部分与整体,但是部 ...
- UML中常见关系详解(泛化、实现、依赖、关联、组合、聚合)
UML中类与类,已经类与接口,接口与接口的关系有:泛化(generalization),关联(association),依赖(dependency),实现(realization)这几种. 泛化( ...
- 【47】java的类之间的关系:泛化、依赖、关联、实现、聚合、组合
java的类之间的关系:泛化.依赖.关联.实现.聚合.组合 泛化: • 泛化关系(Generalization)也就是继承关系,也称为"is-a-kind-of"关系,泛化关系用于 ...
随机推荐
- Nexus 5完全拆解
Nexus 5,由LG制造,配备高通骁龙四核处理器,4.95英寸1080P显示屏,支持4G LTE,运行最新的Android 4.4 KitKat原生操作系统.国外著名拆解网站iFixit第一时间带来 ...
- Qt官方开发环境生成的exe发布方式--使用windeployqt(windeployqt是单独的程序,放在低版本qt4目录下也可以运行的)
Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行.因此 Qt 官方开发环境里自带了一个 ...
- 用于展现图表的50种JavaScript库
在很多项目中都会有在前端展现数据图表的需求,而在开发过程中,开发者往往会使用一些JavaScript库,从而更有效地达到想要的目标.最近,TechSlide上的一篇文章总结了50种用于展现图表的Jav ...
- Mysql的Debug模式实现
前一段领导开发了一个内核的模块,测试的过程中,发现导致MYSQL客户端无法连接服务器. 经过查询文档,追根溯源,终于找到了MYSQL实现链接客户端的代码,在源文件sql-common/client.c ...
- 基于Visual C++2013拆解世界五百强面试题--题9-找出所有的排列方式
给出一个函数来输出一个字符串的所有排列 按照排列组合的知识我们知道 N个字符排列组合个数有n!种, 那么可知f(n) = n*f(n-1), 如果{1,2}的组合有两种,12,21, 那么{123}的 ...
- 参照openRTSP写的一个RTSP client 加了一些注解
#include "liveMedia.hh" #include "BasicUsageEnvironment.hh" #include "Gro ...
- JavaScript 覆盖document.createElement 方法 解决window.close在火狐下不兼容问题)
近期项目遇到了问题,有个asp.net web程序仅仅能在IE7 执行.如今xp都淘汰了,大家都用IE8-IE11,因此这个web app也须要升级 适应全部IE版本号.照成IE版本号不兼容的问题主要 ...
- Html.text(转载)
2.Html.ValidationSummary:用来显示ModelState字典中所有验证错误的无序列表,使用布尔值类型参数(true)来告知辅助方法排除属性级别的错误,只显示ModelState中 ...
- database schema
数据中有4个Schema无法被删除 ● dbo, 具有db_owner或者db_ddl_admin 的用户,新创建对象默认schema就是dbo ● guest , 用来给guest 用户使用,这个s ...
- ios 面试题 经典(比较全) 根据重点总结
史上最全的iOS面试题及答案 1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encodin ...