读书人

结合聚合关联依赖 的区别

发布时间: 2013-04-09 16:45:09 作者: rapoo

组合,聚合,关联,依赖 的区别

组合,聚合,关联,依赖 的区别


依赖与关联

依赖(Dependency ) :

含义:是类与类之间的连接,表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系;

体现:在Java和C++中体现为局部变量、方法/函数的参数或者是对静态方法的调用;

举例:人依赖于水和空气;汽车依赖汽油;

UML图表示的依赖关系:

依赖:

比如说我要过河,没有桥怎么办,我就去借来一条小船渡过去。我与小船的关系仅仅是使用(借用)的关系。

表现在代码上,为依赖的类的某个方法以被依赖的类作为其参数。或者是class A 的某个方法创造了 class B 的

实例抑或对class B的静态方法的调用。如果A依赖于B,那意味着B的变化可能要求A也发生变化;

结合,聚合,关联,依赖 的区别

Boat:

static class Boat{public static void row(){System.out.println("开动");}}
Person:

class Person{public void crossRiver(Boat boat){boat.row() ;}public void fishing(){Boat boat = new Boat() ;boat.row() ;
}public void patrol(){Boat.row() ;}}


关联(Association):

含义:类与类之间的连结,关联关系使一个类知道另外一个类的属性和方法;通常含有“知道”,“了解”的关联可以是双向的,也可以是单向的

体现:在Java和C++中,关联关系是通过成员变量来实现的;

举例:“渔民”需要知道“天气”情况才能够出海

UML图表示的关联关系:

关联:

有名的例子:客户和订单的关系以及公司和员工的关系,都是关联关系。还有就是我和我的单车的例子,他们都

是一种“拥有”的关系。表现在代码上,就是一个类包含另一个类的实例,通常表现为被关联类以类属性的形式

出现在关联类的类定义中,也可以表现为关联类引用了一个类型为被关联类的全局变量。关联可以使单向的,

也可以使双向的。

结合,聚合,关联,依赖 的区别

Computer:


Classes:


Room:

class House{private Room room ;public House(){room = new Room() ;}public void createHouse(){room.createRoom() ;}}

聚合和组合的区别:聚合是个体离开了整体,依然可以存在;

组合是个体和整体不可以分开,个体不能离开整体单独存在。



依赖,关联 和聚合,组合的区别:

依赖,关联 : 类之间的关系是在同一层次上;

聚合,组合: 类之间的关系表现为整体和部分。



参考:http://www.c-sharpcorner.com/UploadFile/pcurnow/compagg07272007062838AM/compagg.aspx

http://www.cnblogs.com/millen/archive/2009/04/27/1444618.html

http://stackoverflow.com/questions/1644273/what-is-the-difference-between-aggregation-composition-and-dependency

http://www.cnblogs.com/aicro/archive/2010/08/23/1806584.html

读书人网 >其他相关

热点推荐