UML基础与应用之面向对象

news2025/1/11 12:51:33

UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,它使用图形符号和文本来描述软件系统的结构、行为和交互。在面向对象编程中,UML被广泛应用于软件系统的设计和分析阶段。本文将总结UML基础与应用之面向对象的重要概念和常用图形符号。

一、面向对象编程基础:

  1. 类与对象:类是对具有相同属性和方法的对象进行描述,而对象是类的实例化结果。
  2. 封装:将数据和对数据的操作封装在一个类中,隐藏实现的细节,提供公共接口。
  3. 继承:子类可以继承父类的属性和方法,并且可以进行扩展或修改。
  4. 多态:同一个接口可以有不同的实现方式,允许使用父类类型的引用指向子类对象。

二、常用UML图形符号:

  1. 类图(Class Diagram):用于描述类及其之间的关系,包括类名、属性、方法、关联、继承、实现等。
  2. 对象图(Object Diagram):展示系统中对象的状态和关系。
  3. 用例图(Use Case Diagram):描述系统的功能需求和参与者之间的关系。
  4. 时序图(Sequence Diagram):展示对象之间按时间顺序交互的消息流程。
  5. 活动图(Activity Diagram):描述系统中活动的流程和控制流。
  6. 状态图(State Diagram):展示对象在不同状态下的行为和转换。
  7. 组件图(Component Diagram):描述组件及其之间的关系和依赖。
  8. 部署图(Deployment Diagram):表示系统的物理部署结构和软件与硬件之间的关系。

三、应用场景:

  1. 系统设计:使用类图和对象图来描述系统的静态结构和动态行为,进行系统设计和分析。
  2. 需求分析:使用用例图来识别系统的功能需求、参与者和用例之间的关系。
  3. 系统测试:使用时序图和活动图来定义系统的测试用例和操作流程。
  4. 代码生成:通过类图和组件图来生成代码骨架和类之间的关系。
  5. 文档编写:使用UML图形符号来撰写技术文档,方便阅读和理解软件系统。

对象

对象可以是物理实体、概念实体、软件实体,具有状态(静态信息 属性)、行为(动态)、标识(名字)行为反映的是一个对象将如何响应其他对象。

类:

类是对一组具有相同属性、行为、和语义的对象的描述。一个对象是一个类的实例。

类的表示

说明:第一行是类的名称,第二行是类的属性,第三行是类的方法,属性和方法可以省略。如图

类和对象的关系

类是对象的抽象定义,它定义了属性和方法,提供了一个创建对象的模板

面向对象的基本内容

属性:描述的是对象静态部分

操作:通过操作可以读取、修改属性的值

接口

多态:不同对象得到同一消息时,产生不同行为。

组件:一个组件可以是源程序、运行时动态库、可执行程序

包:

包的创建就是将源程序文件中的接口和类纳入指定的包,对包进行分类管理

在项目中,我们要用到别的类的时候,我们可以把之前写好的类打成一个包进行引用,方便我们复用

子系统

对象之间的关系

关联:(聚合、组合)、依赖、泛化、实现、关联

面向对象的语言特点:继承、多态、封装

面向对象的基本原则:抽象、封装、模块性、层次性

抽象:抽象出对象,得出有哪些类

封装:把静态信息和动态信息封装成一个整体,做到一部分的信息隐藏(对客户隐藏实现,客户仅仅看到接口)

层次性

总结

UML是一种非常有用的面向对象建模语言,可以帮助开发人员更好地理解和设计软件系统。通过学习和应用UML基础概念和常用图形符号,可以更好地进行软件系统的设计、分析和测试。

  1. 面向对象编程是一种以对象为中心的编程范式,通过抽象、封装、继承和多态等概念,实现代码的模块化、重用和灵活性。
  2. UML提供了一套统一的图形符号和规范,可以直观地描述系统的结构和行为,促进团队成员之间的沟通和理解。
  3. 类图是UML中最常用的图表类型,用于描述系统中的类、属性、方法和它们之间的关系。类图可以帮助我们定义系统的静态结构。
  4. 用例图是用于需求分析的重要工具,描述系统的功能需求、参与者以及它们之间的关系。用例图有助于识别系统的边界和主要功能模块。
  5. 时序图和活动图用于描述系统的动态行为和流程。时序图展示对象之间的消息传递顺序,而活动图展示活动的流程和控制流。
  6. 状态图用于描述对象在不同状态下的行为和状态转换。状态图对于描述对象的生命周期和状态变化非常有用。
  7. 组件图和部署图用于描述系统的组件和物理部署结构。组件图可以帮助我们识别系统的模块化和组件之间的依赖关系,而部署图则展示软件与硬件之间的关系。
  8. UML不仅在系统设计和开发中有用,还在测试、文档编写和代码生成等方面起到重要作用。它可以将复杂的系统抽象为可视化的图表,提供清晰的视图和指导。

总而言之,UML是一种强大的面向对象建模语言,通过提供各种图表和符号,帮助开发人员更好地理解、设计和交流软件系统。通过充分理解UML基础概念和应用,我们能够更高效地进行软件开发,并保证系统的可靠性和可维护性。

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

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

相关文章

34.KMP算法,拒绝暴力美学

概述 今天我们来聊一聊字符串匹配的问题。 比如有字符串str1 “豫章故那,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。”,字符串str2 “襟三江而带五湖”。 现要判断str1是否含有str2,如果有则的…

zabbix介绍及部署(五十一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、zabbix的基本概述 二、zabbix的构成 1、Server 2、web页面 3、数据库 4、proxy 5、Agent 三、zabbix的监控对象 四、zabbix的常用术语 五、zabbix的工作流程 六、za…

区域气象-大气化学在线耦合模式(WRF/Chem)在大气环境领域实践技术应用

大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的,也是区域的,甚至是全球的。本地的污染物排放除了对当地造成严重影响外,同时还会在…

基于docker进行Grafana + prometheus实现服务监听

基于docker进行Grafana Prometheus实现服务监听 Grafana安装Prometheus安装Jvm监控配置 Grafana安装 docker pull grafana/grafanamkdir /server/grafanachmod 777 /server/grafanadocker run -d -p 3000:3000 --namegrafana -v /server/grafana:/var/lib/grafana grafana/gr…

Databend 开源周报第 111 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 理解 SHARE END…

9、DVWA——XSS(Stored)

文章目录 一、存储型XSS概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 一、存储型XSS概述 XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击&#xff…

MATLAB中filloutliers函数用法

目录 语法 说明 示例 在向量中对离群值进行插值 使用均值检测和最邻近值填充方法 使用移窗检测法 填充矩阵行中的离群值 指定离群值位置 返回离群值阈值 filloutliers函数功能是检测并替换数据中的离群值。 语法 B filloutliers(A,fillmethod) B filloutliers(A,f…

Paper Reading: RSPrompter,基于视觉基础模型的遥感实例分割提示学习

目录 简介目标工作重点方法实验总结 简介 题目:《RSPrompter: Learning to Prompt for Remote Sensing Instance Segmentation based on Visual Foundation Model 》,基于视觉基础模型的遥感实例分割提示学习 日期:2023.6.28 单位&#xf…

接口测试学习

1、curl 命令 无参:curl -X POST -H"Authorization: abcdefghijklmn" https://xxx.xxxxx.com/xxxx 有参:curl -X POST -H"Authorization:abcdefghijklmn " -H"Content-Type:application/json" https://xxx.xxxxx.com/…

synchronized锁详解

本文主要是对synchronized使用各个情况,加解锁底层原理的讲解 一,重量级锁 对象头 讲重量级锁之前,先了解一下一个对象的构成,一个对象是由对象头和对象体组成的,本文主要讲对象头,对象体其实就是对象的…

核心实验21_BGP高级(了解)(配置略)_ENSP

项目场景: 核心实验21_BGP基础_ENSP 通过bgp实现省市互通。 实搭拓扑图: 具体操作: 其他基础配置略(接口地址,ospf) 1.BGP邻居建立: R1: [R1]bgp 200 [R1-bgp]peer 10.2.2.2 as-number 200 …

Java高级之File类、节点流、缓冲流、转换流、标准I/O流、打印流、数据流

第13章 IO流 文章目录 一、File类的使用1.1、如何创建File类的实例1.2、常用方法1.2.1、File类的获取功能1.2.2、File类的重命名功能1.2.3、File类的判断功能1.2.4、File类的创建功能1.2.5、File类的删除功能 二、IO流原理及流的分类2.1、Java IO原理2.2、流的分类/体系结构 三…

LINUX内核启动流程-2

向32位模式转变,为main函数的调用做准备 1、关中断并将system移动到内存地址起始位置0x00000 1.1 关中断:将CPU的标志寄存器(EFLAGS)中的中断允许标志(IF)置0。 main函数中能够适应保护模式的中断服务体系被重建完毕才会打开中断,而那时候响应中断的服务程序将不再是…

【数据结构与算法】不就是数据结构

前言 嗨喽小伙伴们你们好呀,好久不见了,我已经好久没更新博文了!之前因为实习没有时间去写博文,现在已经回归校园了。我看了本学期的课程中有数据结构这门课程(这么课程特别重要),因为之前学过一点&#xf…

天宇微纳芯片测试软件如何测试电源芯片的持续电流?

持续电流(连续电流)是指元器件在工作状态下内部电流持续流动的状态,一般都是用于对元器件允许连续通过电流限制的一种描述。比如电源芯片允许的持续电流,就表示该芯片可连续通过的最大电流。 通过上面的描述我们可以知道&#xff…

爬虫 — 验证码反爬

目录 一、超级鹰二、图片验证模拟登录1、页面分析1.1、模拟用户正常登录流程1.2、识别图片里面的文字 2、代码实现 三、滑块模拟登录1、页面分析2、代码实现(通过对比像素获取缺口位置) 四、openCV1、简介2、代码3、案例 五、selenium 反爬六、百度智能云…

zabbix学习1--zabbix6.x单机

文章目录 1. 环境2. MYSQL8.02.1 单节点2.2 配置主从 3. 依赖组件4. zabbix-server5. agent5.1 yum5.2 编译 附录my.cnfJDK默认端口号 1. 环境 进入官网查看所需部署环境配置以及应用版本要求https://www.zabbix.com/documentation/current/zh/manual/installation/requiremen…

机器学习(11)---降维PCA

目录 一、概述1.1 维度1.2 sklearn中的降维算法 二、降维实现原理2.1 PCA与SVD2.2 降维实现2.3 降维过程 三、鸢尾花数据集降维3.1 高维数据的可视化3.2 探索降维后的数据3.3 累积可解释方差贡献率曲线 四、选n_components参数方法4.1 最大似然估计自选超参数4.2 按信息量占比选…

期权开户流程、交易时间和规则详解清晰易懂

本文将介绍期权开户流程、交易时间和规则详解清晰易懂则,包括期权的定义、期权交易的时间、期权交易的规则和期权交易的风险。本文的结论是,期权交易的时间和规则非常重要,应该遵守交易规则,并且要注意风险。本文来源:…