一、依赖关系(Dependence)
依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。
1 public class Driver 2 { 3 public void drive(Car car) 4 { 5 car.move(); 6 } 7 …… 8 } 9 public class Car 10 { 11 public void move() 12 { 13 ...... 14 } 15 …… 16 }
依赖关系有如下三种情况:
1、A类是B类中的(某中方法的)局部变量;
2、A类是B类方法当中的一个参数;
3、A类向B类发送消息,从而影响B类发生变化;
二、泛化关系(Generalization)
泛化关系(Generalization):A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)
1 public class Person 2 { 3 protected String name; 4 protected int age; 5 public void move() 6 { 7 …… 8 } 9 public void say() 10 { 11 …… 12 } 13 } 14 public class Student extends Person 15 { 16 private String studentNo; 17 public void study() 18 { 19 …… 20 } 21 }
在UML当中,对泛化关系有三个要求:
1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
2、子类中除了与父类一致的信息以外,还包括额外的信息;
3、可以使用父类的实例的地方,也可以使用子类的实例;
三、关联关系(Association)
关联关系(Association):类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联(下图所示)。
1 public class Customer 2 { 3 private Product[] products; 4 …… 5 } 6 public class Product 7 { 8 private Customer customer; 9 …… 10 }
1 public class Customer 2 { 3 private Address address; 4 …… 5 } 6 7 public class Address 8 { 9 …… 10 }
1 public class Node 2 { 3 private Node subNode; 4 …… 5 }
表示方式 |
多重性说明 |
1..1 |
表示另一个类的一个对象只与一个该类对象有关系 |
0..* |
表示另一个类的一个对象与零个或多个该类对象有关系 |
1..* |
表示另一个类的一个对象与一个或多个该类对象有关系 |
0..1 |
表示另一个类的一个对象没有或只与一个该类对象有关系 |
m..n |
表示另一个类的一个对象与最少m、最多n个该类对象有关系 (m<=n) |
1 public class Form 2 { 3 private Button buttons[]; 4 …… 5 } 6 public class Button 7 { 8 … 9 }
四、聚合关系(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):也是整体与部分的关系,但是整体与部分不可以分开.
1 public class Head 2 { 3 private Mouth mouth; 4 public Head() 5 { 6 mouth = new Mouth(); 7 } 8 …… 9 } 10 11 public class Mouth 12 { 13 …… 14 }
如:公司和部门,部门是部分,公司是整体,公司A的财务部不可能和公司B的财务部对换,就是说,公司A不能和自己的财务部分开; 人与人的心脏.
六、实现关系(Implementation)
实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。
1 public interface Vehicle 2 { 3 public void move(); 4 } 5 public class Ship implements Vehicle 6 { 7 public void move() 8 { 9 …… 10 } 11 } 12 public class Car implements Vehicle 13 { 14 public void move() 15 { 16 …… 17 } 18 }
文章转自:http://blog.csdn.net/fatherican/article/details/44966891,里面有更多的介绍。关于类关系这块可以参照《大话设计模式》的1.11章节