【一】【设计模式】类关系UML图

1. 继承(Generalization)

继承是对象间的一种层次关系,允许子类继承并扩展父类的功能。

UML线:带有空心箭头的直线,箭头指向基类(父类)。

 
class Parent {
    public void parentMethod() {
        System.out.println("This is a method in the parent class.");
    }
}

class Child extends Parent {
    public void childMethod() {
        System.out.println("This is a method in the child class.");
    }
}

在这个例子中,Child类继承了Parent类,拥有Parent类的方法以及自己的方法。

2. 实现(Implementation)

实现关系指的是类实现接口中声明的方法。

UML线:带有空心箭头的虚线,箭头指向接口。

 
interface Animal {
    public void eat();
}

class Dog implements Animal {
    public void eat() {
        System.out.println("Dog is eating.");
    }
}

Dog类实现了Animal接口,提供了eat方法的实现。

3. 关联(Association)

关联表示不同类的对象之间的连接。它可以是双向的,也可以是单向的。不是其他的关系,并且两个类有联系,就是关联关系。

UML线:普通的直线,两端可能有箭头,表示关系的方向。箭头或无箭头取决于关系的双向性或单向性。通常会在线旁边标注角色名和/或多重性(比如1..*表示一个到多个)。

双向关联

 
public class Customer{
    private product[] prodects;

}
public class Product{
    private Customer customer;

}

单向关联

 
public class Customer{
    private Address address;

}
public class Address{

}

自关联

 
public class Node{
    private Node subNode;

}

多重关联

 
public class Form{
    private Button[] buttons;

}

public class Button{

}

一个按钮,与1到1和界面有关。一个界面,与0到多个按钮有关。

4. 聚合(Aggregation)

聚合是一种特殊的关联关系,表示“整体-部分”关系,但部分可以脱离整体单独存在。聚合关系通常使用成员变量来实现,且成员变量的生命周期不由容器对象管理。

UML线:带有空心菱形的直线,菱形在整体的一端,箭头指向部分的一端。

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

public class Engine  {

}

5. 组合(Composition)

组合也是一种“整体-部分”关系,但与聚合不同的是,部分不能脱离整体存在。在组合关系中,部分的生命周期由整体管理。

UML线:带有实心菱形的直线,菱形在整体的一端,箭头指向部分的一端。

 
public class Head{
    private Mouth mouth;
    public Head(){
        mouth=new Mouth();
    }
}
public class Mouth{

}

6. 依赖(Dependency)

依赖表示一个类的实现依赖于另一个类的定义。一个类的实现需要另一个类的协助。

UML线:带有箭头的虚线,箭头指向被使用者,被依赖者。

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

public class Car{
    public void move(){
    
    }

}

Driver需要使用Car类方法,Driver依赖于Car,Car被Driver所依赖。Car被依赖,Driver是依赖方。

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。

同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。

谢谢您的支持,期待与您在下一篇文章中再次相遇!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/453497.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python网络基础爬虫-python基本语法

文章目录 逻辑语句if,else,elifforwhile异常处理 函数与类defpassclass 逻辑语句 熟悉C/C语言的人们可能很希望Python提供switch语句,但Python中并没有这个关键词,也没有这个语句结构。但是可以通过if-elif-elif-…这样的结构代替,或者使用字…

哈密顿算子的计算公式及一些常用公式总结

目录 哈密顿算子的定义式如下: 梯度定义: 散度定义: 旋度定义: 常用的一些公式: 注意文中字母上面没有→的是标量,有→的都表示矢量 哈密顿算子的定义式如下: 快速了解哈密顿算符&#xff…

同步整流芯片 支持12V降5V 24V降5V 24V降12V 降压芯片 H4122

惠海H4122降压恒压芯片的工作原理: 主要是通过内部电路和算法来控制和调节输出电压,使其保持恒定。 输入电压:芯片接收一个较高的输入电压,如12V、24V或36V。 开关电源转换器:芯片内部通常包含一个或多个开关电源转…

Linux 安装Nginx (Nginx-1.25.4)

一、下载Nginx安装包 1.服务器联网的情况下,使用wget命令把Nginx安装包下载到/usr/local/目录中,如果没有wget命令,需要先安装:yum install -y wget cd /usr/local wget -c https://nginx.org/download/nginx-1.25.4.tar.gz ng…

Kanebo HITECLOTH 高科技擦镜布介绍

Kanebo HITECLOTH,这款由日本KBSeiren公司制造的高科技擦镜布,以其卓越的清洁能力和超柔软的布质,成为了市场上备受瞩目的产品。 材质与特性 HITECLOTH采用0.1旦尼尔特级高级微纤维制造,质地细致、坚韧、不起颗粒。这种纤维的特…

基于单片机的PM2.5浓度检测及报警系统设计与实现

基于单片机的PM2.5浓度检测及报警系统设计与实现 II 摘 要 II Abstract III 第一章 前言 1 1.1、设计的目的和意义 1 1.2、设计的发展趋势及国内外现状 2 第二章 主要元器件选择 4 2.1、AT89C51单片机 4 2.3、A/D转换芯片ADC0832 8 2.4、LCD1602液晶显示屏 10 第三章 设计各模…

TOUGH软件教程

原文链接:TOUGH软件教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597252&idx6&sna9da64e502f070dcc37f9a93dd2a017b&chksmfa823d23cdf5b435996a4a7ebbed78211e81290c37138bcace1f4156f6588af829008381bc16&token1065483158&…

RocketMQ为什么这么快?我从源码中扒出了10大原因!

RocketMQ作为阿里开源的消息中间件,深受广大开发者的喜爱 而这其中一个很重要原因就是,它处理消息和拉取消息的速度非常快 那么,问题来了,RocketMQ为什么这么快呢? 接下来,我将从以下10个方面来探讨一下…

面试经典-11-接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,…

为什么GPU对于人工智能如此重要?

GPU在人工智能中相当于稀土金属,甚至黄金,它们在当今生成式人工智能时代中的作用不可或缺。那么,为什么GPU在人工智能发展中如此重要呢? GPU概述 什么是GPU 图形处理器(GPU)是一种通常用于进行快速数学计…

基于YOLOv8深度学习的野外火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

腾讯云轻量应用服务器地域选哪个合适?有啥区别?

腾讯云轻量应用服务器地域如何选择?地域就近选择,北方选北京地域、南方选广州地域,华东地区选上海地域。广州上海北京地域有什么区别?哪个好?区别就是城市地理位置不同,其他的差不多,不区分好坏…

【UE】制作系统设置功能

目录 效果 步骤 一、准备工作 二、创建画面设置界面 三、应用画面设置 四、保存画面设置 五、运动模糊与垂直同步 六、窗口化与分辨率 6.1 分辨率 6.2 窗口化 效果 步骤 一、准备工作 新建一个工程,创建游戏模式和玩家控制器,这里分别命名…

【代码随想录 | 数组 01】二分查找

文章目录 1.二分查找1.1题目1.2思路(核心:区间的定义)1.3左闭右闭1.4左闭右开1.5总结 1.二分查找 1.1题目 704.二分查找—力扣题目链接 题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 …

centos7 yum 配置

centos7 yum 配置 重置yum更新 centos 镜像源http://mirrors.aliyun.com/centos/7Server/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found 重置yum # 备份 sudo cp /etc/yum.repos.d/* /etc/yum.repos.d.bak/ # 删除 rm -rf /etc/yum.repos.d/*# 查看版…

【数据结构取经之路】快速排序及其优化

目录 简介 快速排序的实现步骤 快排的时间复杂度 快排的空间复杂度 霍尔法 证明 key > x left从key的位置出发的原因 霍尔法代码 (递归) 挖坑法 流程及其展开图 代码 (递归) 前后指针法 前后指针法的步骤及其动图 代码(递归) 快排的优化 一、三数取中 二、…

2024年泰迪智能科技合作伙伴战略大会暨产教融合实训基地落成仪式圆满结束

2024年泰迪智能科技合作伙伴战略大会 暨产教融合实训基地落成仪式 3月6日,2024年泰迪智能科技合作伙伴战略大会暨产教融合实训基地落成仪式在泰迪智能科技产教融合实训基地举行,本次合作伙伴战略大会围绕“龙腾山海,共赴新程 ”主题开展&…

【算法】链表手撕代码

目录 前言 1. 在原有的自定义链表类 Linked 的基础上,添加新的 “节点添加”方法 addNode(Node node) 测试用例 测试结果 2. 在自定义链表类的基础上,使用双重循环“强力” 判断两个节点是否发生相交 测试用例 测试结果 3. 在自定义链表类的基础…

运维自动化之——Ansible

目录 一、自动化运维 1、通过xshell实现自动化运维 2、Ansible简介 3、Ansible特点及优势 4、Ansible核心程序 5、Ansible工作原理及流程 6、部署Ansible自动化运维工具 7、Ansible常用模块 ①ansible命令模块 ②command模块 ③shell模块 ④cron模块 ⑤user模块 …

idea配置自定义注释模版和其他模板

项目场景: idea配置自定义模版 自定义注释模版其他模板,包括syso快捷键,swith快捷键等 自定义注释模版 1、File and Code Templates 第一种类创建完后头部自动生成注释模板 打开idea,选择 Settings--> Editor--> File a…