类之间的关系

1.关联关系

在java、c++中类的关联关系在实现时,通常将一个类的对象作为另一个类的成员变量。

实例:
这里写图片描述

代码片段如下:

class loginForm {
    private:
        JButton loginButton;
    ...
};
class JButton {
    ...
};

(1)双向关联

例如:顾客购买商品并拥有商品,反之,卖出的商品总有某个顾客与之相关联

这里写图片描述

class Customer {
    private:
        Product[] products;
        ... 
};
class Product {
    private:
        Customer customer;
        ... 
};

(2)单向关联

比如顾客拥有地址,这就是单向关联

这里写图片描述

代码片段:

class Customer {
    private:
        Address address;
        ... 
};
class Address {
    ... 
};

(3)自关联

比如:一个节点类(Node)又是节点Node类型的对象

这里写图片描述

代码片段:

class Node {
    private:
        Node subNode;
        ... 
};

(4) 多重性关联

表示两个对象在数量上的对应关系

1..1 : 表示另一个类的一个对象只与该类的一个对象有关系
0..* : 表示另一个类的一个对象与该类的零个或多个对象有关系
1..* : 表示另一个类的一个对象与该类的一个或多个对象有关系
0..1 : 表示另一个类的 一个对象没有或只与该类的一个对象有关系
m..n : 表示另一个类的一个对象与该类至少m,最多n个对象有关系

例如:一个界面可以拥有零个或多个按钮,但是一个按钮只能对应一个界面
这里写图片描述

代码片段:

class Form {
    private:
        Button[] buttons;
        ... 
};
class Button {
    ... 
};

(5)聚合关系

表示整体与部分的关系。在聚合关系中,成员对象是整体形象的一部分,但是成员对象可以脱离整体对象独立存在,例如:汽车发动机是汽车的组成部分,但是汽车发动机可以独立存在。

这里写图片描述

代码片段:

class Car {
    private:
        Engine engine;
        Car(Engine engine) {
            this.engine = engine; 
        }
        void setEngine(Engine engine) {
            this.engine = engine; 
        }
        ... 
};
class Engine {
    ... 
}; 

2.依赖关系

特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用以来关系。
大多数情况下,以来关系体现在某个类的方法使用另一个类的对象作为参数

这里写图片描述

代码片段:

class Driver {
    public:
        void drive(Car car) {
            car.move(); 
        }
        ... 
};
class Car {
    public:
        void move() {
            ... 
        }
        ... 
};

3.泛化关系

也就是继承关系,用带空心三角形的直线来表示

这里写图片描述

代码片段:

class Person {
    protected:
        String name;
        int age;
    public:
        void move() {
            ... 
        }
        void say() {
            ... 
        } 
};
class Students:public Person {
    private:
        String studentNo;
    public:
        void study() {
            ... 
        }
};
class Teacher:public Person {
    private:
        String teacherNo;
    public:
        void teach() {
            ... 
        }
};

4.接口与实现关系(c++中的纯虚函数)

在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。用带空心三角形的虚线来表示。例如:定义了一个交通工具接口Vehile,包含一个抽象操作move(),在类Ship和类Car中实现了该move()操作,不过具体的实现细节将不一样。

这里写图片描述

代码片段:

class Vehile {
    public:
        virtual void move() = 0; 
};
class Ship:public Vehile {
    public:
        void move() {
            ... 
        }
};
class Car:public Vehile {
    public:
        void move() {
            ... 
        }
};

总结:

学会通过看UML图来判断类之间的关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值