UML边看边记 之 类与类之间的关系(二)

来源:互联网 发布:数据库结构设计包括 编辑:程序博客网 时间:2024/05/29 18:05

类和类之间的关系是多样的,在UML中使用不同的形式来表示。常见的类与类之间的关系包括:关联关系依赖关系泛化关系即继承关系)、接口与实现关系

1.关联关系

关联关系通常用来表示一种包含(contains)或者有(has)的关系。contains与has的区别,我的理解是一种表达关联强弱的一种区别。contains表示两个类可以独立存在,也可以某一个类包含(使用)另一个类(的功能);而has表示一个类不可以独立于另一个而存在。
关联关系在实现时的表现通常是:B类作为A类的属性存在。
如:在一个登陆界面中有一个登陆按钮,其UML图示如下:
这里写图片描述
实现代码如下:

public class LoginForm {private JButton loginButton; //定义为成员变量……}public class JButton {    ……}

关联关系又包含如下几种:

(1)双向关联:

顾客购买并拥有商品、卖出的商品总是与某个顾客相关联。
这里写图片描述
注意上图中的”purchases”和”is sold to”靠近谁就表示谁。
实现代码如下:
public class Customer {
private Product[] products;
……
}
public class Product {
private Customer customer;
……
}

(2)单向关联

单向关联用带箭头的实线表示。如顾客拥有地址:
这里写图片描述
代码实现:

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

(3)自关联

如链表中的节点与next的关系:
这里写图片描述
代码实现如下:

public class Node {private Node subNode;……}

(4)多重关联

上面中的双向关联、单向关联、自关联都没有说明类与类之间关联的数量上的问题。这个多重关联就是用来说明两个关联对象在数量上的对应关系。
这里写图片描述
如:一个界面可以有0个或多个button,但是一个button只能在一个界面上。
这里写图片描述
注意上面的”1…1”与”0…*”靠近谁就表示谁。还要注意箭头。箭头指向者用来表示被拥有者。
代码实现如下:

public class Form {private Button[] buttons; //定义一个集合对象……}public class Button {……}

下面的聚合关系和组合关系都表示整体与部分的关系。其中聚合关系表示弱整体与部分的关系,组合强整体与部分的关系。其实也就是contains与has的关系。

(5)聚合关系

整体与部分可以独立存在。如汽车(car)与发动机(engine)的关系。通常用空心的菱形表示
这里写图片描述
在代码实现时,对象通常作为构造方法、setter方法、业务方法的参数注入整体对象中。如:

public class Car {    private Engine engine;    //构造注入    public Car(Engine engine) {        this.engine = engine;    }    //设值注入public void setEngine(Engine engine) {    this.engine = engine;}……}public class Engine {    ……}

(6)组合关系

部分只能依赖于整体存在,不可单独存在。在UML中,组合关系用实心菱形表示。Mouth只能依赖于Head而存在,Head没有了,Mouth自然也就消失了。
这里写图片描述
在代码实现时,对象通常在整体的构造方法中被new出来。如:

public class Head {    private Mouth mouth;    public Head() {        mouth = new Mouth(); //实例化成员类    }……}public class Mouth {    ……}

注意,上面的对象总是作为另一个类的属性存在

UML边看边记 之 类与类之间的关系(三)

0 0
原创粉丝点击