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

对象

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

类:

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

类的表示

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

类和对象的关系

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

面向对象的基本内容

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

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

接口

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

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

包:

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

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

子系统

对象之间的关系

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

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

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

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

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

层次性

总结

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

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

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

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

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

相关文章

uniapp 拉起微信支付方法封装

本文示例基于 uniapp 的 uni.requestPayment() 微信支付拉起方法封装及调用示例: 方法封装 注:方法为 vue3 hooks 写法 可直接复制使用,但要注意传入的 data 参数中的各字段名,结合各自拉起支付时后端返回的参数字段做相应修改。…

程序员的文案

目录 这个社会的规则或者真相,跟人情一毛钱关系都没有 心平能愈三千疾(无欲无求是完人) 永远不要做羞耻心太重的人(丢人是成长最快的方式) 好脾气留给最亲的人 这个社会的规则或者真相,跟人情一毛钱关系…

网络爬虫-----爬虫的分类及原理

目录 爬虫的分类 1.通用网络爬虫:搜索引擎的爬虫 2.聚焦网络爬虫:针对特定网页的爬虫 3.增量式网络爬虫 4.深层网络爬虫 通用爬虫与聚焦爬虫的原理 通用爬虫: 聚焦爬虫: 爬虫的分类 网络爬虫按照系统结构和实现技术&#…

Linux——IO

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——文件系统 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;是不是只有C/C有文件操作呢&#xff1f;python&#xff0c;java&…

长尾关键词挖掘软件-免费的百度搜索关键词挖掘

嗨&#xff0c;大家好&#xff01;今天&#xff0c;我想和大家聊一聊长尾关键词挖掘工具。作为一个在网络世界里摸爬滚打多年的人&#xff0c;我对这个话题有着一些个人的感悟和见解&#xff0c;希望能与大家分享。 首先&#xff0c;让我坦白一点&#xff0c;长尾关键词挖掘工具…

《计算机视觉中的多视图几何》笔记(3)

3 Projective Geometry and Transformations of 3D 这章主要讲的是3D的射影几何&#xff0c;与2D的射影几何差不多。主要区别是&#xff1a; 3D射影几何对偶的是点和平面&#xff0c;直线是自对偶的。3D空间中直线有4个自由度&#xff0c;这一现象并不是那么容易直接得出。一…

SBCS、DBCS、ASCII、MBCS(ANSI)、Unicode

1.三种编码方式和三种字符类型。 第一种编码方式是单字节字符集&#xff0c;称之为 SBCS&#xff0c;它的所有字符可用一个字节存储。ASCII 码就是SBCS。SBCS字符串由一个零字节结尾。第二种编码方式是多字节字符集&#xff0c;称之为 MBCS&#xff0c;它包含的字符中有单字节…

实现注册手机号用户

1、使用Post异步发送请求&#xff08;发送短信&#xff09;&#xff0c;离焦事件触发时判断 <script src"layer/layer.js"></script><!--离焦事件--><script type"text/javascript" th:inline"javascript">$("#use…

HCS 基本概念(三)

一、定义 HCS采用FusionSphere OpenStack作为云平台&#xff0c;对各个物理数据中心资源做整合&#xff0c;采用ManageOne作为数据中心管理软件对多个数据中心提供统一管理&#xff0c;通过云平台和数据中心管理软件协同运作&#xff0c;达到多数据中心融合、提升企业整体IT效率…

2023最新安装微信小程序开发软件安装教程

一&#xff0c;安装开发者工具 我们在开发小程序之前&#xff0c;首先需要安装小程序开发者工具&#xff0c;今天就来教大家安装小程序开发者工具。 微信开放文档 (qq.com)https://developers.weixin.qq.com/miniprogram/dev/framework/ 官网工具下载地址&#xff1a; 微信…

在windows下持续ping ip,将返回结果及时间记录到文件中

在纯英文路径下创建文件ping.txt 在txt中写入 Dim args, flag, unsuccOut args"" otherout"" flag0If WScript.Arguments.count 0 Then WScript.Echo "Usage: cscript tping.vbs [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]" WScr…

NDK (ndk)报错 Unity requires NDK r19 (64-bit)(19.0.05232133)

一、介绍 在 Android 添加 NDK ndk 的时候&#xff0c;出现 Unity requires NDK r19 (64-bit)(19.0.05232133)。 二、环境 1、Unity 2020.3.48f1c1 2、Android NDK 配置 三、报错信息 NDK (ndk)报错 Unity requires NDK r19 (64-bit)(19.0.05232133) 四、解决方法 1、下…

uniapp 在父组件中使用ref属性调用子组件中的方法 报错undefined

项目背景&#xff1a; 项目是自定义底部tabBar&#xff0c;所以这个页面是index(首页的一个子组件ref"pageC") 现在要求是不管页面滚动到第几页数据&#xff0c;或者每次从详情页以及其他页面回到这个页面时&#xff08;子组件pageC)内容都要回到顶部 所以我在index的…

「提效脚本 redis」 使用Lua批量删除key

在redis里面可以使用keys aa* 进行匹配所有的key&#xff0c;却没办法直接删除所有匹配的key。 所以可以使用lua脚本进行增强。 以删除 suggest* 开头的key为例。 eval "local keys redis.call(keys, suggest*) for _, key in ipairs(keys) do redis.call(del, key) …

华为OD机试 - 求最多可以派出多少支团队 - 双指针(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

【 Tkinter界面-练习05】 event和bind

一、说明 事件和动作有关&#xff1b;所有的界面都与运动有关&#xff0c;本篇将对事件、事件触发、绑定回调函数等&#xff0c;其实是一系列部件配合的复杂的过程&#xff0c;这些过程牵扯到系统如何设计&#xff0c;线程、消息队列循环等。本篇将详细介绍各种因素的关系。 二…

python经典百题之求分数前N项和

题目&#xff1a;有一分数序列&#xff1a;2/1&#xff0c;3/2&#xff0c;5/3&#xff0c;8/5&#xff0c;13/8&#xff0c;21/13…求出这个数列的前20项之和。 1. 方法一&#xff1a;普通循环 思路&#xff1a;利用循环计算每一项的值&#xff0c;并累加求和。 优点&#x…

vue3创建的官网提示方法

创建: npm create vuelatest 或许会出现提示: 根据官网提示: 意味着我们需要安装或者更新create-vue的版本 后面就可以跟随提示了

【2023年11月第四版教材】第13章《资源管理》(第三部分)

第13章《资源管理》&#xff08;第部分&#xff09; 4 规划资源管理4.1 数据表现★★★4.2 资源管理计划★★★4.2 团队章程★★★ 5 估算活动资源 4 规划资源管理 组过程输入工具和技术输出规划1.规划资源管理1.项目章程2.项目管理计划&#xff08;质量管理计划、范围基准&am…

C++中返回类型与return语句

C中返回类型与return语句 有、无返回值的函数及其return语句 无返回值&#xff08;函数声明中&#xff0c;返回值类型为void&#xff09;的函数&#xff0c;如果其中没有任何return语句也是正确的&#xff0c;编译器会自动在函数结束处补上隐式的return;语句。如果这种void函数…