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基础概念和应用,我们能够更高效地进行软件开发,并保证系统的可靠性和可维护性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UG NX二次开发(C#)-计算直线到各个坐标系轴向的投影角度

文章目录 1、前言2、需求分析3、NXOpen方法实现3.1 创建基准坐标系3.2 然后计算直线到基准坐标系的轴向角度3.3 代码调用4、测试效果为:1、前言 最近有个粉丝问我如何计算直线到坐标系各个轴向的角度,这里用UG NX二次开发(C#)实现。当然,这里的内容是经验之谈,如果有更好的…

2、AWT介绍

2、AWT介绍 AWT是Swing的前身,我们使用AWT学习底层的实现而用Swing来画一些界面 2.1 AWT 介绍 AWT:抽象的窗口工具(Abstract Windows Tools),包含了很多的类和接口!用于GUI编程,GUI&#xff…

秦时明月沧海手游阵容推荐,秦时明月沧海角色强度

秦时明月沧海角色强度如何?在秦时明月沧海手游中,您可以从大量的角色卡牌中选择并发展,为了顺利通过各种副本,玩家们需要精心搭配阵容。那么,具体该如何配置最强的角色呢? 下面,小编将带各位玩家…

GeoServer运行报错503,……Unmapped relationship: 7

Windows11运行GeoServer-2.19.0报错[org.geoserver.system.status.OSHISystemInfoCollector]……Unmapped relationship: 7 问题说明解决方法 问题说明 最近换了新电脑,在电脑上安装了一个geoserver2.19.0版本,但是运行就是报错,虽然最后提示…

SVN_SERVER的搭建

一、目前svnserver仅支持windows下安装,所以前提需要一台windows服务器或者windows主机 1. 下载最新版本的包 当前最新版visualsvn server最新版5.3.0 visualsvn server下载地址Downloads | VisualSVN 当前tortoiseSVn最新版1.14.5 tortoise SVN下载地址 h…

高等数学应试考点速览(下)

函数项级数 【收敛域】上,收敛于:【和函数】; 幂级数:绝对收敛区间 ( − R , R ) (-R,R) (−R,R),(端点是否属于收敛域,需要再探讨) R lim ⁡ n → ∞ ∣ a n a n 1 ∣ R\lim_{n…

Spring整合RabbitMQ——消费者

1.配置consumer xml配置文件 2. 实现MessageListener接口 并重写onMessage方法

数组01-二分查找算法

目录 数组如何实现随机访问 两个关键词 数组的特点 根据下标随机访问数组元素 为什么数组要从0开始编号,而不是从1开始 LeetCode之路——704. 二分查找 Code 二分查找算法 数组如何实现随机访问 数组(Array)是一种线性表数据结构。它…

Docker部署ActiveMQ消息中间件

1、准备工作 docker pull webcenter/activemq:5.14.3 Pwd"/data/software/activemq" mkdir ${Pwd}/data -p2、运行容器 docker run -d --name activemq \-p 61616:61616 \-p 8161:8161 \-v ${Pwd}/data:/opt/activemq/data \-v /etc/localtime:/etc/localtime \--r…

活动预告|蚂蚁集团 2023 KubeCon Shanghai 议题揭秘

9 月 26日-28 日,由 Linux 基金会、CNCF 主办的 KubeCon CloudNativeCon Open Source Summit China 2023 将在上海跨国采购会展中心隆重召开。本次峰会将聚集全球社区,共同探讨云原生和开源领域的前沿洞察、核心技术与最佳实践,会议主题囊括…

深拷贝与浅拷贝

首先深拷贝与浅拷贝 只针对Object 和Array这样的引用数据类型 所以基本数据类型不用考虑了 等号赋值 基本数据类型 对于基本数据类型,就会创建一个新的变量,并将原变量的值复制给新变量。 这是基于变量是存储在栈内存中的特点。简单来说,等…

Linux学习第20天:Linux按键输入驱动开发: 大道至简 量入为出

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 中国文化博大精深,太极八卦,阴阳交合,变化无穷。在程序的开发中也是这样,数字0和1也是同样的道理。就本节来说&am…

pytho实例--pandas读取表格内容

前言:由于运维反馈帮忙计算云主机的费用,特编写此脚本进行运算 如图,有如下excel数据 计算过程中需用到数据库中的数据,故封装了一个读取数据库的类 import MySQLdb from sshtunnel import SSHTunnelForwarderclass SSHMySQL(ob…

【QT】Qt的随身笔记(持续更新...)

目录 Qt 获取当前电脑桌面的路径Qt 获取当前程序运行路径Qt 创建新的文本文件txt,并写入内容如何向QPlainTextEdit 写入内容QTimerQMessageBox的使用QLatin1StringQLayoutC在c头文件中写#include类的头文件与直接写class加类名有何区别mutable关键字前向声明 QFontQ…

面试打底稿④ 专业技能的第四部分

简历原文 抽查部分 了解Python的使用(第一篇关于Python升级版本bug解决的文章斩获6W阅读),用python实现了几篇图像信息隐藏领 域论文的复现(博客中有提及); 了解Django基本框架,写过Django框架的…

手把手教你实现:将后端SpringBoot项目部署到华为云服务器上

前言 前提:有一个后端项目,项目能够运行在本地,可以通过本地访问(localhost) 如果没有可以看这篇:一个基于SpringBoot的后端项目 注册华为云账号 华为云官网 购买云服务器 产品 -> 华为云耀云服务器…

Python+requests+unittest+excel实现接口自动化测试框架

一、框架结构: 工程目录 二、Case文件设计 三、基础包 base 3.1 封装get/post请求(runmethon.py) 1 import requests2 import json3 class RunMethod:4 def post_main(self,url,data,headerNone):5 res None6 if heade…

paddle2.3-基于联邦学习实现FedAVg算法

目录 1. 联邦学习介绍 2. 实验流程 3. 数据加载 4. 模型构建 5. 数据采样函数 6. 模型训练 1. 联邦学习介绍 联邦学习是一种分布式机器学习方法,中心节点为server(服务器),各分支节点为本地的client(设备&#…

【乳腺超声、乳腺钼靶、宫颈癌】等项目数据调研,及相关参考内容整理汇总

一、乳腺超声内容整理 1.1、数据集 Breast Ultrasound Images Dataset;下载地址2STU-Hospital处理和训练参考文档:https://blog.csdn.net/weixin_51511389/article/details/127594654 1.2、可以参考的论文 AAU-net: An Adaptive Attention U-net for Breast Lesions Segmen…

京东获得JD商品详情 API 返回值说明

京东商品详情API接口可以获得JD商品详情原数据。 这个API接口有两种参数,公共参数和请求参数。 公共参数有以下几个: apikey:这是您自己的API密钥,可以在京东开发者中心获取。 请求参数有以下几个: num_iid&#…