UML六大关系总结

UML六大关系有:继承、关系、聚合、组合、实现、依赖。分为通过图和代码总结这些关系。

1、继承

继承(Inheritance):表示类之间的继承关系,子类继承父类的属性和方法,并可以添加自己的扩展。

继承(Inheritance):继承关系表示一个类(子类)继承另一个类(父类)的属性和方法。子类可以重用父类的代码,并可以在需要时添加自己的扩展。继承关系支持面向对象编程的重要特性之一------多态性。通过继承,子类可以被视为父类的实例。例如,可以有一个"动物"类作为父类,然后派生出"猫"类和"狗"类作为子类,它们共享动物类的属性和方法,并且可以具有自己特定的行为。

public class Animal {
    // 动物相关代码
}

public class Cat extends Animal {
    // 猫相关代码
}

public class Dog extends Animal {
    // 狗相关代码
}

class Bird:Animal

{

}

说明:一段都是子类继承父类,在子类的后面用一个冒号表示,冒号后面跟着父类的名字。继承只能继承父类共有和保护的属性或方法,私有的变量或方法不能被子类继承。

2、关联

关联(Association):表示两个类之间的关联关系,通常是一个类中有另一个类的对象作为成员变量。关联关系可以是单向或双向的

关联(Association):关联关系表示两个类之间的连接,用于描述它们之间的交互。它可以是单向的或双向的,可以是一对一、一对多或多对多的关系。关联关系可以通过类之间的属性或方法参数来实现。例如,一个"学生"类和一个"课程"类之间可以建立关联关系,其中学生可以选择多门课程,而课程也可以有多名学生。

public class Car {
    private Engine engine;

    // 构造函数和其他方法
}

public class Engine {
    // 引擎相关代码
}

说明:关联关系在代码中体现在集合、数组传值等方面。传值的话,需要提前定义全局变量。

3、聚合

聚合(Aggregation):表示整体与部分之间的关系,整体可以包含部分,但部分可以存在独立于整体的情况。

聚合(Aggregation):聚合关系表示整体与部分之间的关系,整体对象包含部分对象。部分对象可以独立存在,并且可以属于多个整体对象。聚合关系强调整体对象与部分对象之间的松散耦合。例如,一个"车队"可以聚合许多"车辆",每辆车可以独立存在,并且可以属于不同的车队。

public class Team {
    private List<Player> players;

    // 构造函数和其他方法
}

public class Player {
    // 球员相关代码
}

聚合是关联的一种体现方式。也可以说聚合是基于关联基础上的。

4、组合

组合(Composition):表示整体与部分之间的强关系,整体拥有对部分对象的完全拥有权,部分的生命周期依赖于整体。

组合(Composition):组合关系也表示整体与部分之间的关系,但是部分对象的生命周期依赖于整体对象。当整体对象被销毁时,部分对象也会随之被销毁。组合关系强调整体对象对部分对象的拥有权。例如,一个"计算机"由"CPU"和"内存"等组成,这些部分对象不能独立存在,它们的生命周期与计算机对象紧密相关。

public class Computer {
    private CPU cpu;
    private Memory memory;

    // 构造函数和其他方法
}

public class CPU {
    // CPU 相关代码
}

public class Memory {
    // 内存相关代码
}

说明:组合也是关联的一种体现方式。是基于关联的基础上的。一个类是另一个

类的一部分,所以最明显的就是在一个类中实例化另一个类,比如在鸟的类中实例化翅膀类。

5、接口

实现(Realization):表示接口和实现类之间的关系,实现类必须实现接口中定义的方法。

实现(Realization):实现关系表示一个类实现了一个接口或抽象类所定义的方法。实现关系用于描述类与接口或抽象类之间的约束。通过实现关系,一个类必须提供接口或抽象类中定义的所有方法的具体实现。例如,可以有一个"支付"接口,然后有多个实现类如"现金支付"和"信用卡支付",它们都必须实现支付接口中定义的支付方法。

public interface Payment {
    void pay();
}

public class CashPayment implements Payment {
    public void pay() {
        // 现金支付逻辑
    }
}

public class CreditCardPayment implements Payment {
    public void pay() {
        // 信用卡支付逻辑
    }
}

6、依赖

依赖(Dependency):表示一个类在某个功能上依赖另一个类,通常是通过方法参数、局部变量等方式来使用另一个类。

依赖(Dependency):依赖关系表示一个类使用另一个类作为参数、局部变量、返回值类型等方式来依赖于另一个类。它强调一个对象对另一个对象的使用,但不涉及长期拥有关系。依赖关系是一种较弱的关系,其中一个类的改变可能会影响到使用它的另一个类。例如,一个"购物车"类可以依赖"商品"类来添加商品到购物车或进行其他操作。

public class ShoppingCart {
    public void addItem(Item item) {
        // 添加商品到购物车
    }
}

public class Item {
    // 商品相关代码
}

强弱关系:继承>接口>组合>聚合>关联>依赖

总结

  1. 关联关系:关联关系是指两个类之间存在着某种关联,表示一个类知道另一个类的存在。关联关系可以是双向的,也可以是单向的,可以是一对一的,也可以是一对多的。关联关系可以用实线箭头表示。

  2. 聚合关系:聚合关系是一种强关联关系,表示整体与部分之间的关系。整体对象包含了部分对象,但部分对象可以存在独立于整体对象的情况。聚合关系可以用空心菱形箭头表示。

  3. 组合关系:组合关系是一种更强的聚合关系,表示整体对象包含了部分对象,且部分对象不能存在独立于整体对象的情况。组合关系可以用实心菱形箭头表示。

  4. 继承关系:继承关系是一种类之间的关系,表示一个类(子类)继承了另一个类(父类)的属性和方法。子类可以拥有父类的所有特性,并且可以在此基础上进行扩展或修改。继承关系可以用实线箭头加空心三角形表示。

  5. 实现关系:实现关系是一种接口与类之间的关系,表示一个类实现了一个或多个接口的方法。实现关系可以用虚线箭头加空心三角形表示。

  6. 依赖关系:依赖关系是一种类之间的关系,表示一个类使用了另一个类的方法或属性,但两个类之间没有直接的关联。依赖关系可以是临时的,也可以是持久的。依赖关系可以用虚线箭头表示。

总之,UML中的六大关系包括关联关系、聚合关系、组合关系、继承关系、实现关系和依赖关系。了解和理解这些关系对于软件设计和系统建模都具有重要意义

相关推荐
A_cot3 小时前
理解设计模式与 UML 类图:构建稳健软件架构的基石
microsoft·设计模式·简单工厂模式·工厂方法模式·uml
肖老师+3 小时前
可视化建模与UML《协作图实验报告》
uml·可视化建模
喵~来学编程啦3 天前
【软件工程】一篇入门UML建模图(类图)
软件工程·uml
梁辰兴4 天前
Enterprise Architect 16 下载、安装与无限30天操作
uml·安装教程·下载·enterprise·architect·ea·16
成工小白4 天前
丹摩征文活动|丹摩智算平台下的YoloV8模型训练与测试实践
linux·yolo·uml·类图
oioihoii4 天前
UML中类图的介绍与使用
c++·设计模式·c#·uml
FreeLikeTheWind.10 天前
UML概述、类图关系及连接线表示
uml
傻傻虎虎13 天前
【真题笔记】21年系统架构设计师案例理论点总结
单例模式·系统架构·uml·命令模式
D@.14 天前
初学者指南:用例图——开启您的软件工程之旅
uml·贴图·用例图
rolt16 天前
长得像用例图的类图-《软件方法》8.2.3.4
软件工程·uml·面向对象