说明:本帖目的是使读者快速简易理解三者关系,并非详解概念,所以有难免疏漏之处(部分内容来源网络)。
一、相关概念
1.关联:关联关系(Association):类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联(下图所示)。
1) 双向关联: 默认情况下,关联是双向的。
public class Customer
{
private Product[] products;
……
}
public class Product
{
private Customer customer;
……
}
2 )
单向关联:
类的关联关系也可以是
单向的
,单向关联用
带箭头的实线
表示.
public class Customer
{
private Address address;
……
}
public class Address
{
……
}
3) 自关联: 在系统中可能会存在
一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。
public class Node
{
private Node subNode;
……
}
2.聚合:
表示的是整体和部分的关系,
整体与部分
可以分开.
• 聚合关系(Aggregation) 表示一个
整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合 关系。
•
在聚合关系中,
成员类是整体类的一部分
,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
在
UML
中,聚合关系用带空心菱形的直线表示。
public class Car
{
private Engine engine;
public Car(Engine engine)
{
this.engine = engine;
}
public void setEngine(Engine engine)
{
this.engine = engine;
}
……
}
public class Engine
{
……
}
3.依赖: 假设 A 类的变化引起了 B 类的变化,则说名 B 类依赖于 A 类。
依赖关系有如下三种情况:
1)、A类是B类中的(某中方法的)局部变量;
2)、A类是B类方法当中的一个参数;
3)、A类向B类发送消息,从而影响B类发生变化;
二、区别
1.关联和聚合的区别
这个主要体现在整体部分观念上。能明确总结出一个类是另一个类的一部分,就是聚合。
2.关联和依赖的区别
关联一般是一个类的对象是另一个类的属性。另外依赖一般仅有有上述三个特点。