Java设计模式(四)

news2024/11/23 15:48:00

系列文章目录

UML类图


文章目录

  • 系列文章目录
  • 前言
  • 一、UML类图
  • 二、UML基本介绍
  • 三、UML图
    • 1.类图—依赖关系(Dependence)
    • 2.类图—泛化关系(generalization)
    • 3.类图—实现关系(Implementation)
    • 4.类图—关联关系(Association)
    • 5.类图—聚合关系(Aggregation)
    • 6.类图—组合关系(Composition)
  • 总结


前言

大家好呀,欢迎来到柚子的博客~让我们一起成长吧o( ̄▽ ̄)ブ


提示:以下是本篇文章正文内容,下面案例可供参考

一、UML类图

(1)用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
(2)类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合
(3)类图简单举例:

public class Person{
	private Integer id;
	private String name;
	public void setName(String name) {
		this.name=name;
	}
	public String getName(){
		return name;
	}
}

二、UML基本介绍

(1)UML—Unified modeling language UML(统一建模语言),是一种用于软件系统和分析的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。
(2)UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等。
(3)使用UML来建模,常用的工具有Rational Rose,也可以使用一些插件来建模。
(4)组合、聚合是关联关系的特例。
在这里插入图片描述

三、UML图

画UML图和写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类:
(1)用例图(use case)
(2)静态结构图:类图、对象图、包图、组件图、部署图
(3)动态行为图:交互图(时序图与协作图)、状态图、活动图

说明:类图是描述类与类之间的关系的,是UML图中最核心的

1.类图—依赖关系(Dependence)

只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都通过不了。
代码如下(示例):

public class PersonServiceBean{
	private	PersonDao personDao;//类
	public void save(Person person){}
	public IDCard getIDCard(Integer personid){}
	public void modify(){
		Department department = new Department();
	}
}
public class PersonDao{}
public class IDCard{}
public class Person{}
public class Department{}

UML图增加方法:方法内参数:前面是属性,后面是类型
在这里插入图片描述

类中用到了对方,就是依赖:
(1)如果是类的成员属性
(2)类的方法的返回类型
(3)是方法接收的参数类型
(4)方法中使用到

2.类图—泛化关系(generalization)

泛化关系实际上就是继承关系,它是依赖关系的特例
代码如下(示例):

public abstract class DaoSupport{
	public void save(Object entity){}
	public void delete(Object id){}
}
public class PersonServiceBean extends Daosupport{}

泛化关系其实就是继承关系
如果A类继承了B类,我们就说A和B存在泛化关系

在这里插入图片描述


3.类图—实现关系(Implementation)

实现关系实际上就是A类实现B类,他是依赖关系的特例
代码如下(示例):

public interface PersonService{
	public void delete(Object id){}
}
public class PersonServiceBean implements PersonService{
	public void delete(Integer id){}
}

在这里插入图片描述

4.类图—关联关系(Association)

关联关系实际上就是类与类之间的联系,他是依赖关系的特例
关联具有导航性:即双向关系或单向关系
关系具有多重性:如"1"(表示有且仅有一个),“0…”(表示0个或者多个),“0,1”(表示0个或者一个),“n…m”(表示n到m个都可以),“m…”(表示至少m个)。
(1)单向一对一关系

public class Person {
	private IDCard card;
}
public class IDCard{}

在这里插入图片描述
(2)双向一对一关系

public class Person {
	private IDCard card;
}
public class IDCard{
	private Person person;
}

在这里插入图片描述

5.类图—聚合关系(Aggregation)

聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
如:一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的,使用空心菱形的实线来表示:
在这里插入图片描述

public class Computer{
	private Mouse mouse;
	private Monitor monitor;
	public void setMouse(Mouse mouse){
		this.mouse = mouse;
	}
	public void setMonitor(Monitor monitor){
		this.monitor = monitor;
	}
}

只要Computer创建,Mouse和Monitor类型的对象就会创建,共生关系,所以是聚合。
注:可以分开是聚合,不可分开是组合

6.类图—组合关系(Composition)

组合关系:也是整体与部分的关系,但是整体和部分不可以分开。
如:在程序中我们定义实体:Person与IDCard、Head,那么Head和Person就是组合,IDCard和Person就是聚合。

public class Person{
	private IDCard card;//聚合关系
	private Head head = new Head();//组合关系
}
public class IDCard{}
public class Head{}

在这里插入图片描述
但是如果在程序中Person实体中定义了对IDCard进行级联删除,即删除Person连同IDCard一起删除,那么IDCard和Person就是组合。

总结

UML类图:用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合


╭◜◝ ͡ ◜◝╮
( ˃̶͈◡˂ ̶͈ )感觉有用的话,欢迎点赞评论呀!
╰◟◞ ͜ ◟◞╯

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式(二)-大型网站架构演化发展历程

大型网站架构演化发展历程 大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以 P 计的数据和面对数以亿计的用户,问题就会变得很棘手。大型网站架构主要解决这类问题。 初始阶段的网站架构 …

MinIO 分片上传

文章目录 1.MinIO 简介2.为什么要分片上传?3.实现思路4.具体实现初始化客户端获取分片上传的预签名 URL合并分片中止合并 5.FAQ端口错误协议错误 参考文献 1.MinIO 简介 MinIO 是适用于 AI 的高性能对象存储系统。 MinIO 简单易用。简单性是 EB 级数据基础设施的基…

宝塔配置MySQL队列调度 | ModStart

执行以下操作前提前进入网站根目录,如 cd /www/wwwroot/xxx.com执行 artisan 命令前请参照 开发教程 → 开发使用常见问题 → 如何运行 /www/server/php/xxx/bin/php artisan xxx 命令 ① 生成数据库队列表迁移文件 在执行该步骤前,请先检查迁移文件 da…

【CSS 05】文本颜色 文本对齐 文字装饰 文本转换 文字间距 文本阴影 字体 字体样式 字体大小 谷歌字体

CSS 说在前面文本 text文本对齐 text-align文字装饰 text-decoration文本转换 text-transform文字间距 text_spacing文本阴影 text-shadow字体 font字体样式 font-style字体大小 font-size谷歌字体简写属性 shorthand 说在前面 事实证明,Zoro只要出现在标题就会被识…

go-GUI开发:fyne解决中文乱码+注册windows服务

go-GUI框架:fyne教程及解决中文乱码等常见bug 1 fyne教程 fyne教程地址: https://www.topgoer.cn/docs/goday/goday-1crdp17nj4v6phttps://pkg.go.dev/fyne.io/fyne/v2#section-readme 1.1 介绍 简单易用,fyne提供了简单直观的API&#xff…

iOS编译提效插件cocoapods-jxedt方案详解

1. 前言 本篇文章是cocoapods-jxedt插件实现方案的详解,主要从以下几个方面阐述了一下插件的实现方案和历程。 插件文件目录介绍插件的工作流程介绍插件实现过程中的问题和解决方案记录 如果你对插件的使用还不了解,建议先读一下cocoapods-jxedt使用介…

CVE漏洞复现-CVE-2023-32233 NetFilter权限提升

CVE-2023-32233 NetFilter权限提升 Netfilter是Linux 内核中的网络数据包处理框架(iptables)通过各种规则和过滤器,基于数据包的来源、目标地址、协议类型、端口号等信息,控制网络流量和数据包的转发和处理具体,详情请…

使用贝叶斯网络预测糖尿病:从理论到实践

2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 引言 在现实世界中,许多变量之间存在着复杂的概率关系,例如天气、交通、健康等方面的因素都会相互影响。为了更好地理解…

音频基本概念

1.音频信号 音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理。 数字音频系统通过将声波的波型转换…

调用腾讯云API实现英文识别

目录 1. 作者介绍2. 腾讯云英文识别API介绍2.1 英文识别原理—OCR技术2.2 腾讯云英文识别API 3. 实验过程3.1获得API3.2申请调用接口3.3调试接口3.4实验代码3.5实验结果3.6 问题分析 4. 参考连接 1. 作者介绍 乔奕婕,女,西安工程大学电子信息学院&#…

nginx系列第六篇:结合nginx梳理linux中信号的使用

nginx中master进程来管理整个nginx工作的全过程,运行时其通过接收外部信号输入的方式来对内部进行相关调整。本文对照nginx来梳理一下linux中信号常用API的使用。 目录 1.函数sigaction和signal 2.关于信号集sigset_t 2.1 测试程序1 2.2 测试程序1 3.信号屏蔽…

宝塔安装ModStart常见问题

Q:环境提示PHP未禁用危险函数 安装系统时通常会需要解禁 system,exec,passthru,shell_exec,popen,proc_open 等危险函数。部分集成环境会提示危险函数风险,通常可以如下方式解决: 该函数在通常只是在系统 系统安装/系统升级/模块安装/模块升…

【SpinalHDL快速入门】4.3、基本类型之UInt/SInt

文章目录 1.1、描述1.2、声明1.3、运算符1.3.1、逻辑运算(Logic)1.3.2、算术运算(Arithmetic)1.3.3、比较(Comparison)1.3.4、类型转换(Type Cast)1.3.5、部分赋值/提取操作符&#…

第一章:数据库概述

第一章:数据库概述 1.1:为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以"固化"&a…

低代码平台简单分享

低代码平台简单分享 文章目录 低代码平台简单分享1、什么是低代码?什么是低代码平台?2、低代码平台的前世今生**一、低代码的起源**二、低代码的分类三、低代码的能力四、低代码开发的特点 3、目前主流的低代码平台有哪些?优缺点?…

常用模拟低通滤波器的设计——契比雪夫II型滤波器

常用模拟低通滤波器的设计——契比雪夫II型滤波器 切比雪夫 II 型滤波器的振幅平方函数为: 式中,为有效带通截止频率, 是与通带波纹有关的参量, 大,波纹大,; 为 N 阶契比雪夫多项式。 在 Matl…

几种常见数据库的表和列信息查询

文章目录 前言1. oracle数据库1.1 表信息和注释信息1.2 表的列信息 2. mysql数据库2.1 常用的几个命令2.2 使用desc查看表结构2.3 表结构信息主要存在information_schema数据库2.4 主要表是columns,tables,schemata2.4.1 schemata 数据库信息2.4.2 table…

三、opengles画三角形

第一部分Java端 1&#xff09;界面 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.andro…

数据中台浅析——概念、架构以及未来

数据中台浅析 1. 引言 在当今的数字化时代&#xff0c;数据被誉为"新的石油"&#xff0c;越来越多的企业和组织开始深度挖掘数据的价值。在这个过程中&#xff0c;数据中台逐渐成为了数据管理和分析的核心架构&#xff0c;让我们来深入了解一下它。 1.1 数据中台…

算法复杂度分析(一)

求第n个斐波那契数列 斐波那契数 0 1 1 2 3 5 数列默认从0开始 public static int fib1(int n) {if(n < 1) return n;return fib1(n-1) fib1(n-2);}public static int fib2(int n) {if(n < 1) return n;int first 0;int secend 1;for (int i 0; i < n-1; i) {int…