首页 > 其他分享 >UML_结构类_类图

UML_结构类_类图

时间:2024-06-17 16:13:20浏览次数:13  
标签:关系 冰箱 泛化 类图 整体 UML 关联 结构

类图

描述的类和类之间的静态关系,是逻辑层面的模型

包含元素


  • 类里面有类名,属性,和方法,可以更具需要不写属性和方法的类型,也可以属性和方法都不写,方法和属性前面的+-号表示访问权限
    • + 公有
    • - 私有
    • # 受保护的
    • ~ 是包权限
  • 关系
    • 依赖:没有直接关系
      虚线+箭头
    • 关联:有直接关系,但是没有整体和部分关系,是平级关系而不是整体和部分关系,多对多一般是关联关系
      实线+双向箭头
    • 组合:一般是一对多,整体和部分的关系,整体和部分不可分离,生命周期相同
      实线+实心菱(部分指向整体)
    • 聚合:一般是一对多,整体和部分的关系,整体和部分可以分离,生命周期不同
      实线+空心菱
    • 泛化:泛化是子类
      实线+空心三角箭头(子指向父)
    • 实现:实现是接口
      虚线+空心三角箭头

类图之间关系还有多重度的标注,也就是1对1,一对多,和多对多,出了泛化和实现都可以用几对几来指明多重度

判断类之间关系步骤

  • 应该先考虑他们是否有父子关系(实现和泛化)
    接口和实现类之间是实现关系,父类和子类之间是泛化(继承)关系

    举例子:正常设计支付程序,支付和微信支付就是实现关系
    
    举例子2:如果之前没有为支付设计接口,只有现金支付的实现,后来并且没有提取高层接口,只是实现的微信支付继承了现金支付,这就是泛化
    
  • 然后判断他们是否整体和部分中间的关系(组合和聚合)
    整体和部分生命周期一样就是组合,生命周期可以不一样就是聚合

    举例子1:人和心脏,一般来说他们生命周期是一样的不可分隔,是组合
    
    举例子2:电脑和内存条,内存可以拔下来插到别的电脑上,是聚合
    
    备注:组合和聚合按照主观常识判断即可,不用吹毛求疵,毕竟心脏也是可换的,内存取了运行的电脑也回死机。
    
  • 然后判断他们是有有直接关系(关联和依赖)
    有直接关系就是关联,没有直接关系但有间接依赖关系就是依赖(有依赖关系的前提是相互有影响,没有影响他们之间不存在关系)

    举例子1:冰箱和冰箱里面放的东西,他们是关联关系(不存在整体和部分,冰箱里面可以不放东西也是一个完整的冰箱)
    举例子2:冰箱和入户开关是依赖关系,他们没有直接的连续,冰箱和供电插座有关联关系,插座和开关有有关联关系,但是冰箱和开关没有直接关系,但是关了开关,冰箱就停了,存在依赖。
    

获取IP变化的程序的类图
image-20240615195933018

标签:关系,冰箱,泛化,类图,整体,UML,关联,结构
From: https://www.cnblogs.com/cxygg/p/18252605

相关文章

  • UML_结构类_部署图
    部署图描述的是硬件拓扑以及在此结构上执行的软件,说白了就是软件是怎么部署到硬件设备上的,是物理层面的模型包含的元素节点表示服务器主机,用立体长矩形表示,命名方式可以直接写节点类型,也可以是实例名:节点类型物件(构件,组件)表示需要部署的软件服务,用矩形框加合适的图......
  • 【数据结构】线性表之《顺序表》超详细实现
    顺序表一.数据结构1.逻辑结构2.物理结构二.顺序表的分类1.静态顺序表2.动态顺序表三.顺序表的实现1.创建顺序表2.初始化顺序表3.判断是否扩容4.打印顺序表5.插入操作1.头插2.尾插3.按照下标插入6.删除操作1.头删2.尾删3.按照下标删除7.查找数据8.修改数据9.清空顺序......
  • 9.2.1 简述图像分割中经常用到的编码器-解码器网络结构的设计理念。
    9.2图像分割场景描述:图像分类图像识别图像分割不同标注出每个目标的类别像素级别的图像识别,标注出图像中每个像素所属的对象类别不同对整张图像进行识别进行稠密的像素级分类应用场景视频软件中的背景替换、避开人物的弹幕模板、自动驾驶以及医疗辅助判断等分类前景分割(f......
  • MySQL触发器基本结构
    1、修改分隔符符号delimiiter$$可以修改成$$//都行2、创建触发器函数名称createtrigger函数名3、什么样的操作触发,操作哪个表after:···之后触发before:···之前触发insert:插入被触发update:修改被触发delete:删除被触发on表名实例:在user表被添加信息后触发......
  • c语言回顾-结构体
    前言在前面的学习中,我们知道C语言提供了许多内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的。当我们想描述学生,描述一本书,这时单一的内置类型是不行的。描述一个学生需要名字、年龄、学号、身高、体重等;描述一本书需要作者、出版社、定价......
  • 超级底层:10WQPS/PB级海量存储HBase/RocksDB,底层LSM结构是什么?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 定义一个结构体变量stu,成员包括学号、姓名、性别、成绩。定义一个指针变量p指向该结构
            一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。编写程序:运行结果:程序分析:        在主函数中声明......
  • 结构化绑定(c++17)
    结构化绑定(Structuredbindings)是C++17引入的一个特性,它使得从元组或者其他类型的数据结构中提取元素变得更加方便和直观。它允许我们通过一条语句将一个复杂类型的数据解构成其组成部分,而无需显式地访问每个成员。使用示例:假设有一个结构体Person和一个返回结构体的函数:#i......
  • 第五章:循环结构
    一.理解:1.循环:通过某个条件,重复并且规律的执行一段代码2.循环组成部分:循环变量的初始化,循环条件,循环变量的改变,循环体3.循环分类:while循环,do....while循环,for循环二,while循环1语法://循环变量的初始化while(循环条件){//循环体//循环变量改变}2.执行原理:先执行循环变......
  • Redis是一个高性能的键值对数据库,它支持多种数据结构,如字符串、列表、集合、有序集合
    Redis是一个高性能的键值对数据库,它支持多种数据结构,如字符串、列表、集合、有序集合和哈希表。以下是一些Redis命令的实践示例,帮助你了解如何使用Redis。连接Redis服务器首先,使用redis-cli命令连接到Redis服务器:redis-cli-h<hostname>-p<port>基本命令PING:检查Redis......