当前位置: 首页 > news >正文

UML基础与应用之面向对象

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图形符号来撰写技术文档,方便阅读和理解软件系统。

对象

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

类:

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

类的表示

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

类和对象的关系

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

面向对象的基本内容

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

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

接口

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

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

包:

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

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

子系统

对象之间的关系

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

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

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

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

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

层次性

面向对象和面向过程 

面向对象编程(OOP)面向过程编程(POP)
设计思想以对象为中心,将问题分解为相互关联的对象和它们的交互以过程为中心,将问题分解为一系列的步骤和函数调用
主要组成类、对象、方法、属性等函数、变量、数据结构等
封装性支持封装,将数据和操作封装在对象中,隐藏内部实现细节不强制要求封装,较少对数据进行隐藏或限制访问
继承性支持继承,允许创建新的类从现有类派生,并继承其属性和方法不直接支持继承,功能通过函数和模块复用来实现
多态性支持多态,允许在父类引用中使用子类对象,实现动态行为较少直接支持多态,通常通过函数重载来实现
数据处理将数据和操作封装在对象中,通过方法调用处理数据通过函数来处理数据,传递参数并返回结果
代码结构主要由对象和对象之间的交互组成主要由函数和函数之间的调用组成
代码复用通过继承和组合机制实现代码的重用通过模块化和函数调用来实现代码的重用
异常处理支持异常处理机制,可以捕获和处理异常通常使用错误码或返回值进行错误处理
可扩展性支持模块化开发,易于扩展新的对象和类可以通过添加过程和修改函数来实现功能的扩展

总结

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

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

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

相关文章:

UML基础与应用之面向对象

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

将 Ordinals 与比特币智能合约集成:第 2 部分

在上一篇文章中,我们展示了一种将 Ordinal 与智能合约集成的方法,即将Ordinal和合约放在同一个 UTXO 中。 今天,我们介绍了一种集成它们的替代方案,即它们位于单独的 UTXO 中。 作为展示,我们开发了一个智能合约&…...

PCL 法线空间采样(C++详细过程版)

法线空间采样 一、概述二、代码实现三、结果展示1、原始点云2、采样结果一、概述 法线空间采样在PCL里有现成的调用函数,具体算法原理和实现代码见:PCL 法线空间采样。为充分了解法线空间采样算法实现的每一个细节和有待改进的地方,使用C++代码对算法实现过程进行复现。 二…...

论文阅读:AugGAN: Cross Domain Adaptation with GAN-based Data Augmentation

Abstract 基于GAN的图像转换方法存在两个缺陷:保留图像目标和保持图像转换前后的一致性,这导致不能用它生成大量不同域的训练数据。论文提出了一种结构感知(Structure-aware)的图像转换网络(image-to-image translation network)。 Proposed Framework…...

CNC 3D浮雕 Aspire 11.55 Crack

Aspire 提供了功能强大且直观的软件解决方案,用于在 CNC 铣床上创建和切割零件。有用于 2D 设计和计算 2D 刀具路径的工具,例如仿形、型腔加工和钻孔以及 2.5D 刀具路径,包括:V 形雕刻、棱镜雕刻、成型刀具路径、凹槽、 倒角刀具路…...

【Clickhouse2022.02 查询优化】

一、现场场景概述 现场每天每张表入库数据量大约2-4亿条,页面涉及到自定义时间段查询(白天08:00-15:00,夜晚23:00-06:00)与不同时间段(最近一天、一周、一个月和全部)的统计指标查询。 二、主要问题 时间跨度大无查询或查询条件命中数据过多的分页查询场景速度慢 (主要是数据…...

PMP证书在国内已经泛滥了,还有含金量吗?

没有泛滥吧?这个证书现在就是趋向于项目管理人士要去考的呀,也不是考了没用,提升自身个人的能力、找工作方面和晋升加薪方面确实有用呀,不然报名费那么贵,为什么越来越多人考呢? 1、提升自身个人的能力 首…...

SolidJs节点级响应性

前言 随着组件化、响应式、虚拟DOM等技术思想引领着前端开发的潮流,相关的技术框架大行其道,就以目前主流的Vue、React框架来说,它们都基于组件化、响应式、虚拟DOM等技术思想的实现,但是具有不同开发使用方式以及实现原理&#…...

数据采集技术在MES管理系统中的应用及效果

在现代制造业中,MES生产管理系统已成为生产过程中不可或缺的一部分。MES管理系统能够有效地将生产计划、生产执行、质量管理等各个生产环节有机地衔接起来,从而实现生产过程的全面优化。本文将以某车间为例,探讨结合MES系统的数据采集技术的应…...

php函数usort使用方法

在 PHP 中,usort() 函数用于对数组进行排序,它允许你使用自定义的比较函数来确定元素的顺序。以下是 usort() 函数的使用方法: usort(array &$array, callable $cmp_function): bool参数说明: $array:要排序的数…...

35.浅谈贪心算法

概述 相信大家或多或少都对贪心算法有所耳闻,今天我们从一个应用场景展开 假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。 如何选择最少的广播台,让所有的地区都可以接收到信号? 广播台覆盖地区k1北京、上海、天津…...

QT时间日期定时器类(1.QDate类)【QT基础入门 Demo篇】

使用时候需要包含头文件   创建一个 QDate 实例   设置 QDate 的日期   获取 QDate 的日期   获取当前是周几   判断 QDate 的有效性  格式化 QDate 的显示字符串   计算 QDate 的差值  QDate显示格式   年月日转换时间戳时间戳转换年月日 QDate相关…...

记一次实战案例

1、目标:inurl:news.php?id URL:https://www.lghk.com/news.php?id5 网站标题:趋时珠宝首饰有限公司 手工基础判断: And用法 and 11: 这个条件始终是为真的, 也就是说, 存在SQL注入的话, 这个and 11的返回结果必定是和正常页…...

Serv-U FTP服务器结合cpolar内网穿透实现共享文件并且外网可远程访问——“cpolar内网穿透”

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角,智能…...

EasyWindow - Android 悬浮窗框架

官网 https://github.com/getActivity/EasyWindow 项目介绍 本框架意在解决一些极端需求,如果是普通的 Toast 封装推荐使用 Toaster 集成步骤 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入 allprojects {repositories {/…...

tp5连接多个数据库

一、如果你的主数据库配置文件都在config.php里 直接在config.php中中定义db2&#xff1a; 控制器中打印一下&#xff1a; <?php namespace app\index\controller; use think\Controller; use think\Db; use think\Request; class Index extends Controller {public fun…...

SAP PO运维(一):系统概览异常处理

打开SAP PIPO Netweaver Administration界面,系统概览下显示异常: 参考SAP note: 2577844 - AS Java Monitoring and Logging parametrization best practice service/protectedwebmethods = SDEFAULT -GetVersionInfo -GetAccessPointList -ListLogFiles -ReadLogFile -Para…...

安全厂商安恒信息加入龙蜥社区,完成 与 Anolis OS 兼容适配

近日&#xff0c;杭州安恒信息技术股份有限公司&#xff08;以下简称“安恒信息”&#xff09;签署了 CLA&#xff08;Contributor License Agreement&#xff0c;贡献者许可协议&#xff09;&#xff0c;正式加入龙蜥社区&#xff08;OpenAnolis&#xff09;&#xff0c;并成为…...

maven找不到jar包

配置settings.xml文件之后出现报错找不到jar包 先改maven设置: 然后在重新清理构建项目: 可以通过执行以下命令清理本地 Maven 仓库 mvn dependency:purge-local-repository...

MySQL的数据目录

文章目录 MySQL的数据目录1. MYSQL目录结构2. 数据库与文件系统的关系2.1 查看默认数据库2.2 数据库在文件系统中的表示2.1.1 MyISAM存储引擎模式2.1.2 InnoDB存储引擎模式 2.3 视图在文件系统中的表示2.4 小结 MySQL的数据目录 1. MYSQL目录结构 查询主要目录结构&#xff1a…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...