设计模式(UML类图)

2023-10-27

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

类图—依赖关系(Dependence)

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

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

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{}

类图:
在这里插入图片描述
小结:类中用到了对方

  1. 如果是类的成员属性。
  2. 如果是方法的返回类型。
  3. 是方法接收的参数类型。
  4. 方法中使用到。

类图—泛化关系(generalization)

泛化关系实际上就是继承关系,他是依赖关系的特例

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

类图:
在这里插入图片描述
小结:

  1. 泛化关系实际上就是继承关系
  2. 如果A 类继承了B 类,我们就说A 和B 存在泛化关系

类图—实现关系(Implementation)

实现关系实际上就是A 类实现B 接口,他也是依赖关系的特例

public interface PersonService {
	public void delete(Interger id);
	}
	public class PersonServiceBean implements PersonService {
	public void delete(Interger id){}
}

类图:
在这里插入图片描述

类图—关联关系(Association)

在这里插入图片描述

类图—聚合关系(Aggregation)

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

类图—组合关系(Composition)

基本介绍
组合关系:也是整体与部分的关系,但是整体与部分不可以分开
再看一个案例:在程序中我们定义实体:Person 与IDCard、Head, 那么Head 和Person 就是组合,IDCard 和Person 就是聚合。
但是如果在程序中Person 实体中定义了对IDCard 进行级联删除,即删除Person 时连同IDCard 一起删除,那么IDCard 和Person 就是组合了.

public class Person{
	private IDCard card;
	private Head head = new Head();
	}
	public class IDCard{}
	public class Head{}

类图:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计模式(UML类图) 的相关文章

随机推荐

  • Android Studio一直Waiting for build to finish

    今天安卓的gradle文件出现问题 所以将C Users Administrator gradle删除 接下来出现下图的问题 这是由于安卓缺少gradle文件 图片来自https blog csdn net Hanghang article
  • 手撕yolo3系列——详解主干网络darknet53代码(详细注释)

    完整代码百度云直达链接 包含预训练权重 小白注释 https pan baidu com s 1US6e93OaCYOghmF21v0UIA 提取码 z8at 参考链接 注 代码是大神的代码 在此基础上添加了详细的小白注释 方便我以后阅读
  • Keil调试即全速运行/断点不停的其中一个原因

    平台 芯片 STM32F767IGT6 环境 Keil 5 14 00 问题 keil 下载程序可以执行 调试时刚进调试就上电运行 打断点不停 但是程序正常在跑 可以单步调试 原因 Jlink硬件版本和驱动的问题 解决 之前电脑使用stm3
  • image.shape[0],image.shape[1],image.shape[2]

    import cv2 image cv2 imread D shape bmp print image shape 0 print image shape 1 print image shape 2 结果 300 200 3 其中shape
  • mysql8.0安装之后,无法使用密码正常登陆

    修改方法 重置密码 以下为步骤 1 以管理员身份先关闭mysql服务器 net stop mysql 删除mysql目录下data文件夹 如果有就删除 2 在mysql目录下输入 mysqld initialize user mysql c
  • python如何判断是否为整数

    python 判断是否为整数的方法 1 使用 type 函数判断 代码为 type name bases dict 2 使用 isinstance 函数判断 代码为 isinstance object classinfo 本教程操作环境 w
  • java 生成随机字母数字组合

    import java util Random public class RandomTest 方法1 生成随机数字和字母组合 param length return public static String getCharAndNumr
  • 让UE4中的TextRender永远面向摄像机,就像Billboard那样!

    让UE4中的TextRender永远面向摄像机 就像Billboard那样 让UE4中的TextRender永远面向摄像机就像Billboard那样 前言 Find Look At 函数 BillBoard 材质编程 前言 最近找了个兼职
  • socket网络编程(二)(tcp udp)

    1 socket大概介绍 Socket的中文翻译过来就是 套接字 套接字是什么 我们先来看看它的英文含义 插座 Socket就像一个电话插座 负责连通两端的电话 进行点对点通信 让电话可以进行通信 端口就像插座上的孔 端口不能同时被其他进程
  • 负电压实现方法

    目录 方法一 负压芯片实现 方法二 Buck Boost电路方法 方法三 用Buck芯片产生出负压 结论 方法一 负压芯片实现 在电子市场或电子网站上 可以很容易找到使用charge pump方式的负电压芯片 但是输入的电压最高只有5 5V
  • 中青杯数学建模竞赛是什么级别的比赛_比赛介绍

    一 背景介绍 美国大学生数学建模竞赛 MCM ICM 由美国数学及其应用联合会主办 是唯一的国际性数学建模竞赛 也是世界范围内最具影响力的数学建模竞赛 为现今各类数学建模竞赛之鼻祖 二 活动目的 MCM ICM的宗旨是鼓励大学师生对范围并不
  • Variational Auto-encoder(VAE)变分自编码器-Pytorch

    import os import torch import torch nn as nn import torch nn functional as F import torchvision from torchvision import
  • 领地人生服务器维护,领地人生gm代码是什么 领地人生服务器指令

    领地人生是一款非常真实的沙盒生存类游戏 游戏中玩家将要成为一名生存者 需要通过不断造房屋 猎杀野兽生存下来 游戏中的一些指令可以加快你的建造速度 下面就和小编一起来看看吧 GM password 开 关 GM模式 例如 gm mysecre
  • Numpy数组排序

    numpy sort a axis 1 kind quicksort order None 返回已排序新数组 参数说明 axis 可选参数 取值整数或None 若axis为None 数组先偏平化 降维 再排序 若axis N 表示沿着数组的
  • Android小项目集合100多个

    是学习和联系Android小项目的使用资料 排名完全是根据 GitHub 搜索 Java 语言选择 Best Match 得到的结果 然后过滤了跟 Android 不相关的项目 所以排名并不具备任何官方效力 仅供参考学习 方便初学者快速了解
  • C++11 promise

    目录 一 promise 二 定义 三 成员函数 四 get future 五 设置结果 1 set value 2 set value at thread exit 3 set exception 4 set exception at t
  • java消费者接口应用_几个常用的Java接口之Consumer、Supplier、Predicate和Function

    Java8之Consumer Supplier Predicate和Function攻略 来聊聊Consumer Supplier Predicate Function这几个接口的用法 在 Java8 的用法当中 这几个接口虽然没有明目张胆
  • 嵌入式(文件属性、目录操作)

    打开目录 include
  • 【目标检测】基于yolov5的火灾烟雾检测和识别(附代码和数据集)

    写在前面 首先感谢兄弟们的订阅 让我有创作的动力 在创作过程我会尽最大能力 保证作品的质量 如果有问题 可以私信我 让我们携手共进 共创辉煌 文末附项目代码和数据集 请看检测效果 1 介绍 火灾烟雾检测和识别是指通过计算机视觉技术 对火灾现
  • 设计模式(UML类图)

    UML 基本介绍 UML Unified modeling language UML 统一建模语言 是一种用于软件系统分析和设计的语言工具 它用于帮助软件开发人员进行思考和记录思路的结果 UML 本身是一套符号的规定 就像数学符号和化学符号