随笔- 23  文章- 0  评论- 0  阅读- 1896 

UML类图

在UML类图中,常见的有以下几种关系: 继承(泛化)、实现、关联、依赖、聚合、组合

各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

依赖

依赖属于一种泛化的概念,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A

比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖

使用场景:在类中用到了对方、作为类的成员属性(聚合)、方法的返回值、方法的参数类型、方法中使用

带箭头的虚线,指向被使用者

继承(泛化)

继承是依赖关系的特例,其指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;

在Java中此类关系通过关键字extends明确标识。在UML类图中,用一种实线三角号表示继承关系,三角号指向父类

实现

指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识

在UML类图中,用虚线三角表示实现关系,三角号表示接口

聚合

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,举例:

class Engine{
}

class Car{
    Engine engine;//汽车和引擎可分离

    public Engine getEngine() {
        return engine;
    }

    public void setEngine (Engine engine) {
        this.engine = engine;
    }
}

聚合通过空心菱形箭头的直线表示,UML类图表示为带空心菱形的实心线,菱形指向整体

组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的

//部门
class Department{
}

//公司
class Corporation{
    Department department = new Department ();//不可分离的

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }
}

UML类图如下,UML类图表示为带空心菱形的实心线,菱形指向整体

关联

关联关系是一种拥有的关系,属于依赖关系的特例。它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
双向关联举例:

 posted on   春秋流千事  阅读(133)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示