依赖(Dependency)

依赖可以理解为一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用。

图形表示如下:

代码实现如下(C#):

(PS:企鹅依赖于气候,一但南极春天到来,温度小于-10度后,它们将集体迁移到北极去。)

关联(Association ))

关联和泛化是依赖的两种特别形式,关联分为单向关联和双向关联,单向关联是指某一个类中包含另一个类的全部或一部份,而被包含的类是不知道另一个类的存在。双向关联是指两个类中互相包含或引用,它们彼此都知道对方的存在。

用图形表示如下(双向关联) :

PS:上图显示了两个类的双向关联的关系,一本书可以由多个作者编写,一个作者也可以编写多本书。

用代码实现如下:

(PS:一个作者可以写多本书,同样,一本书可以被多个作者编写)

关联类(Association Class)

关联类本质上是一个类附加在一个关联中,被用来作为UML类来建模一种关联关系,它有其自己的名称,属性和方法。然而,它所描述的属性并不属于关联中的对象。比如:一个员工类与一个公司类产生一个合同类的关联后,合同类中的签字日期 这个属性并不属于员工类或公司类。

用图形表示如下:

聚合(Aggregation)

聚合是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。同时,是一种弱的 拥有 关系。体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。

用图形表示如下:

   
(PS:一个教授拥有一个班级,一个班级至少由一个学生组成:整体 ---> 个体,班级中少一个学生或多一个学生,这将不会直接影响到这种聚合关系)

组合(composition)

组合是关联关系的一种,比聚合关系更强,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。组合关系是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。

用图形表示如下:

(PS:一台电脑由cpu 和其它部件组成,当CPU的生命周期结束后,组合的关系将不存在,computer类的生命周期也将结束。比如:拿掉cpu,电脑将无法再执行程序)

最新文章

  1. Oracle死锁
  2. 基础3.Jquery操作Dom
  3. PCB设计规则考量之初识
  4. How to control printer orientation(Landscape / Portrait) for an AX report in X++
  5. As3 计算两个日期之间的天数差
  6. unity3d环境安装指南: Unity 4.5.5 + Visual Studio 2010
  7. 【HDOJ】4162 Shape Number
  8. ABAP多表关联查询
  9. c# 字符串转化成声音 分类: C# 2014-09-24 12:20 316人阅读 评论(0) 收藏
  10. c# 菜单无限极分类-利用递归
  11. 关于c语言中负数位移位操作的漫谈
  12. BZOJ 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
  13. 画廊视图(Gallery)的功能和用法
  14. 了解 : angular $filter stateful
  15. 用MPLAB IDE编程时,软件总是弹出一个窗口提示: “the extended cpu mode configuration bit is enabled,but the program that was loaded was not built using extended cpu instructions. therefore,your code may not work properly
  16. Zynq系列FPGA如何固化bit文件到QSPI_Flash
  17. Java 强制类型转换(类转换注意事项)
  18. 一个tomcat服务器上部署多个Web项目,不同域名访问
  19. 新建Maven项目建成后本应该有的src/main/java和src/test/java目录并没有出现:
  20. JxBrowser之五:清除cache和cookie以及SSL证书处理

热门文章

  1. 关于.net4.0中的Action委托
  2. 为什么MVC不是一种设计模式?
  3. iOS Layout机制相关方法
  4. guava学习--cache
  5. 转载:【Oracle 集群】RAC知识图文详细教程(三)--RAC工作原理和相关组件
  6. bzoj3400
  7. _routing字段介绍
  8. AOP代理模式
  9. Gradle2.0用户指南翻译——第三章. 教程
  10. Vue(1) : Vue项目入门