一文吃透UML图(海贼版)

news2024/12/27 12:21:28

先来简单的说一说什么是UML?

       UML是统一建模语言,是用来设计软件的可视化建模语言,它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息,UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。

       到这里,相信大家对UML还是一脸懵逼,相信耐心的看完这篇(不讲概念,只求看懂),一定对UML的理解会更加透彻

1.类图的表示方法

        在这个UML图中,类使用包含类名、属性(field)和方法(method)且带有分割线的矩形来表示,比如上图表示是一个Lufei类,它包含name、age和address这三个属性,以及fight()方法

       属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UML类图中表示可见性的符号有三种:

  • +: 表示public
  • - : 表示private
  • #: 表示 protected

举个比较形象的例子:

 上图定义了一个路飞类(这里)

  • fight1()方法:修饰符为public,没有参数,没有返回值

        这是路飞刚出场的招式,利用自己的橡胶人的特性,具有反弹,public可以理解为,反弹这个招式,不只是只有橡胶人才可以做到,访问范围是最大的,没有参数可以理解为这个招式不需要任何的前提条件或者不局限于某个特定的场景,因为路飞的身体特性造成的,没有返回值是不会对路飞自身做出任何的改变

  • fight2()方法:修饰符为protected,没有参数,返回值类型为String类型

       这是路飞第一次二挡形式,这种形式会给它的身体造成各方面的优化(String),也不存在前提条件或者某种特定的场景

  • fight3()方法:修饰符为private,接收一个参数,参数类型为int,返回值类型是int

        这是路飞4挡蛇人模式,private意味的是私有的,这种形态整个海贼世界只有路飞才有,参数可以理解成为进阶4挡得有充足的体力(4挡对身体的消耗是巨大的),返回值可以理解为对凯多老师的伤害值

 2.类与类之间的表达方式

1.关联关系

       关联关系是对象之间的一种引用关系,用来表示一类对象与另一对象之间的关系,如雷利和路飞、汉库克和路飞()等,关联关系式类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系

  • 单向关联

       在UML图中单向关联用一个带箭头的实线表示,上图表示每个海贼都有一个家乡,比如路飞-风车镇、艾斯-蒙巴拉村等,让Pirates类持有一个类型为HomeTown的成员变量实现

  • 双向关联

 从上图我们很容易看出,所谓的双向关联就是双方各自持有对方类型的成员变量,在UML类图中,双向关联用一个不带箭头的直线表示,pirateCorps代表的是海贼团,pirates指的是海贼,海贼团中有很多海贼,每个海贼属于一个海贼团

 就好比艾斯属于白胡子海贼团,白胡子海贼团中还有其他成员(马尔科等)

  • 自关联

 自关联在UML类图中用一个带有箭头且指向自身的线表示,自己包含自己

 听说路飞5挡可以把自己变成任何东西,它应该可以变出很多个自己吧,类似于自己包含自己

2.聚合关系

聚合关系是关联关系的一种,是强关联关系,是整体和部分之间的关系

       聚合关系也是通过成员对象来实现的,其中成员对象时整体的一部分,但是成员对象可以脱离整体对象而独立存在。比如:布鲁克与他的旧船团的关系,即使旧船团早已不在,但是他仍然是海贼

                                                          --------------------------->

 3.组合关系

       组合表示类之间与部分的关系,但它是一更加强烈的聚合关系,在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在, 部分对象也将不存在,部分对象不能脱离整体对象而存在(头和嘴的关系),一般用带菱形的实线表示,菱形指向整体

 4.依赖关系

       依赖关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联,在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖的类)中的某个方法来完成一些职责

在UML图中,依赖关系用带箭头的虚线表示,箭头从使用类指向被依赖的类,如上图:

BIG MOOM和宙斯的关系图,大妈驾驶宙斯

 5.继承关系

       继承关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类和子类之间的关系,是一种继承关系

       海贼王中的天龙人就好像是神一般的存在,有些人天生出身就是天龙人,这就是从父亲那里继承来的荣华富贵以及头衔(

        在UML类图中,泛化关系用带空心三角箭头的实线表示,箭头从子类指向父类,在代码实现的时候,使用面向对象的继承机制来实现泛化关系,如上图所示

6.实现关系

        实现关系是接口与实现类之间的关系,在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有抽象操作

 

 

“我可不打算统治,在这大海上最自由的人就是海贼王”

       在UML类图中,实现关系使用空心三角形箭头的虚线来表示,箭头从实现类指向接口,例如:路飞和罗杰都继承了海贼王的意志(有点牵强,但是大概就是这么个意思

希望这篇文章能给大家带来帮助!!!(不点赞的都是低级海贼)

致敬8.6号路飞5挡!!!

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

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

相关文章

spring boot 服务健康检测返回OUT_OF_SERVICE,导致服务无法成功注册到consul

一、背景 健康检测接口返回OUT_OF_SERVICE curl -X GET http://192.168.5.53:8085/mgm/health{"status":"OUT_OF_SERVICE"}从日志启动看,没有任何报错信息;而且jvm进程也启动成功。 关键的一点信息是,服务的swagger地…

docker 资源限制

目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过Cgroup(Control Group 控制组)实现容器对物理资…

iOS多线程——pthread、NSThread

pthread NSThread 多线程的常见方案pthreadpthread 简介pthread 使用方法pthread 其他相关方法 NSThread创建、启动线程线程相关用法线程状态控制方法线程之间的通信NSThread 线程安全和线程同步NSThread 非线程安全NSThread 线程安全 多线程的常见方案 技术方案特点使用语言线…

[企业权限管理项目](二)环境搭建

数据库与表结构 oracle Oracle 为每个项目创建单独user,oracle数据表存放在表空间下,每个用户有独立表空间 创建用户及密码 语法[创建用户]: create user 用户名 identified by 口令[即密码]; 例子: create user tes…

bigemap在草原行业的应用案例

一.为什么选择Bigemap 1.使用软件一般都用于套坐标以及空间规划图,方便于项目选址和居民建房报建 2.在卫星图上找到用地范围,然后打点,导出点位范围的2000坐标,用于汇报出图 3.CGCS2000坐标系通过矢量转换转成地方坐标系

Noah-MP陆面过程模型建模方法与站点、区域模拟教程

详情点击链接:Noah-MP陆面过程模型建模方法与站点、区域模拟教程 陆面过程的内容(陆表能量平衡、水循环、碳循环等),陆面过程研究的重要性。 图 1 陆面过程主要研究内容 陆面过程模型的发展、基本原理、常用陆面过程模型等。 图…

VR虚拟仿真技术在道路桥梁中有哪些具体应用?

虚拟现实(VR)是一种新兴的技术,可以为桥梁工程提供许多应用场景。以下是一些可能的应用场景: 1.桥梁设计和模拟 VR元宇宙可以用于桥梁的设计和模拟。工程师可以使用VR技术来创建桥梁的三维模型,并对其进行测试和优化。这可以帮助工程师更好地…

C# Blazor 学习笔记(7):组件嵌套开发

文章目录 前言相关资料组件嵌套组件模板RenderFragment 意义传统前端样式组件化css 前言 我们在组件化一共有三个目的。 不用写CSS不用写html不用写交互逻辑 简单来说就是Java常说的约定大于配置。我们只需要必须的参数即可,其它的都按照默认配置。我们不需要关系…

intel advisor安装与使用

前言 没有搜到相关教程,所以自己写一篇,如有不足请指正 安装 建议直接安装完整工具包 Intel oneAPI Base Toolkit 注意先安这个 https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html linux指令 wget http…

让这些ai绘画神器为你打开创作灵感的大门

在一个小镇上,住着一位名为奥斯卡的艺术家。他的画作仿佛有生命般跃动,每一幅都散发着神秘的魔力。然而,奥斯卡却感到自己的创造力有些枯竭。他渴望找到一种新的灵感源泉,以挑战自己的创作瓶颈。这时,他听说了ai绘画生…

大数据与okcc呼叫中心融合的几种方式

在实际的生产实践中,为提高营销效率,避免骚扰大众,很多呼叫中心业务会与大数据平台进行合作,进行精准营销。 买卖数据是非法的,大数据平台方并不会提供直接的数据,一般情况下,提供的数据都是脱…

马上解锁 StarRocks 存算分离,降本增效无需等!

StarRocks 于 4 月底正式发布了 3.0 版本,该里程碑版本带来了大家期盼已久的新特性--存算分离。此新功能一推出,立即受到社区热情追捧,用户纷纷开始在自己的业务中评估和测试存算分离效果。从芒果TV、聚水潭、网易邮箱、浪潮、天道金科等数十…

【技巧】学术Poster的制作要点,详细!

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 内容零零散散均收集自网上,有点杂忘了引用。 内容技巧 https://posts.careerengine.us/p/5dac3e628c131b0541dd9171 展示内容包括(将信息分块) 可选择性删减,注意…

分享可以免费使用的5款好用小工具

​ 最近后台收到好多小伙伴的私信,今天继续推荐五款小工具,都是免费使用的,大家可以去试试看。 剪贴板管理器——ClipX ​ ClipX是一款微型剪贴板管理器,可以记录你复制的文本和图像,并让你随时通过快捷键或鼠标菜单…

git面试题

文章目录 git经常用哪些指令git出现代码冲突怎么解决你们团队是怎么管理git分支的如何实现Git的免密操作 git经常用哪些指令 产生代码库 新建一个git代码库 git init下载远程项目和它的整个代码历史 git clone 远程仓库地址配置 显示配置 git config --list [--global]编辑配置…

Python爬虫 从小白到高手 各种最新案例! request scrapy

Python爬虫 从小白到高手 各种最新案例! Urllib Xpath JsonPath BeautifulSoup requests 1.基本使用 1.官方文档: http://cn.python‐requests.org/zh_CN/latest/ 快速上手 http://cn.python‐requests.org/zh_CN/latest/user/quickstart.html 2.安装 pi…

数字运营、协同高效,为园区高质量发展插上“数字化”翅膀

园区,是产业集群的枢纽,是城市发展的基本要素。近年来,以大数据、人工智能、云计算等为代表的数字技术与城市的千行百业融合“发酵”,正在加速城市主体的智能升级。智慧园区作为数字化转型升级的一个缩影,上承智慧城市…

Rust dyn - 动态分发 trait 对象

dyn - 动态分发 trait 对象 dyn是关键字,用于指示一个类型是动态分发(dynamic dispatch),也就是说,它是通过trait object实现的。这意味着这个类型在编译期间不确定,只有在运行时才能确定。 practice tr…

阿里云ECS部署Mysql数据库

说明 首先需要到阿里云官方购买阿里云产品 ,如果有机会可以免费试用那会更好,跳过购买云服务步骤下面直接演示。 一、阿里云官网示意图 1.百度搜索 阿里云官方 2.点击控制台 3.展开更多 4. 选择云服务器ECS 5. 点击实例 可以看到服务器状态&#xff…

利用 USB 设备重定向实现无缝远程办公

随着当代工作环境的不断发展,对有效的、无缝的远程办公解决方案的需求日益增长。无论是创意人员、高级用户,还是游戏爱好者,能够随时随地工作或玩游戏都是一项显著优势。 但通常,这不仅需要能够远程访问工作站。创意人员和高级用…