软考 - 面向对象开发

news2025/7/18 8:31:42

⭐设计模式UML详解:https://blog.csdn.net/qq_40274514/article/details/124047443

面向对象基础

面向对象的程序设计 和 面向对象设计区别

  • 面向对象的程序设计涉及到具体的编程语言

  • 面向对象设计只从系统逻辑结构设计解决方案

常见的机制

  • 动态绑定:过程调用和响应调用所需要执行的代码在运行时加以结合
  • 静态绑定:过程调用和响应调用所需要执行的代码在编译时加以结合

UML【下午重点】

UML是统一建模语言,和程序设计毫无关系!

UML基本构造块包含:事物、关系、图

事物(模型中最具有代表性的成分的抽象)

  • **结构事物:**模型的静态部分,如类,接口(声明对象类所需要服务),用例,构建等;
  • **行为事物:**模型的动态部分,如交互,活动,状态机;
  • **分组事物:**模型的组织部分,如包;
  • **注释事物:**模型的解释部分,简单符号;

在这里插入图片描述

关系(把事物结合到一起)

  • **依赖:**假设A类的变化引起了B类的变化,则说名B类依赖于A类。【调用其他类的方法】
  • 关联:分为聚合和组合,其中组合事物之间关系更强;两个类之间可以有多个由不同角色表示的关联
    • 聚合:即属性是外部类
    • 组合:即属性是内部类,同生共死
  • **泛化:**一般/特殊关系,字类和父类之间的关系
  • **实现:**一个类元指定了另一个类元保证执行的契约

在这里插入图片描述

图(聚集了相关的事物)

静态图

  • 类图:

  • 对象图:

  • 用例图:

  • 构件图:

  • **部署图:**系统静态部署图,表示软件组件和硬件之间的物理关系

动态图

  • 序列图:

  • 通信图:

  • 状态图:

  • 活动图:

实体类:主要负责数据和业务逻辑;
边界类:负责和用户进行交互,即用户界面;
控制类:负责实体类和界面类的交互;

设计模式

设计模式中的六大原则

  • 单一原则:一个类只负责一个功能领域的相应职责,实现高内聚低耦合
  • 开放-封闭原则:对增加进行开放,对修改则关闭
  • 里氏替换LSP原则:
    • 任何有**基类(父类)**出现的地方,子类一定可以出现
    • 软件系统中把基类都替换成它的子类,程序的行为没有变化
  • 依赖倒转原则:依赖于抽象,不依赖于实现
  • 接口隔离原则:客户端不应该依赖于它不需要的接口
  • 迪米特法则:合理引入一个第三者来降低现有对象之间的耦合度

解决方案的核心!

需要注意英文名称!!!

创建型设计模式

抽象工厂模式 和 工厂方法模式的区别
参考文献:
UML图:https://www.jianshu.com/p/6060e0632071
差异分析:https://www.cnblogs.com/my-blog-site/p/16293474.html

工厂方法模式、抽象工厂模式,傻傻分不清楚?
为了解释得更清楚,先介绍两个概念:
产品等级结构:比如一个抽象类是食物,其子类有苹果、牛奶等等,则抽象食物与具体食物名称之间构成了一个产品等级结构。食物是抽象的父类,而具体的食物名称是其子类。
产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品。如 AKitchen 生产的苹果、刀子,苹果属于食物产品等级结构中,而刀子则属于餐具产品等级结构中。而 BKitchen 可能生成另一组产品,如牛奶、杯子。
因此工厂方法模式、抽象工厂模式最大的区别在于:
工厂方法模式:针对的是 一个产品等级结构。
抽象工厂模式:针对 多个产品等级结构。
抽象模式比工厂模式高级!!

总结做题:
工厂方法模式:每个具体工厂类只能创建一个具体产品类的实例
抽象工厂模式:每个具体工厂类可以创建多个具体产品类实例

在这里插入图片描述

结构型设计模式

适配器模式和桥接模式的区别:
适配器模式:改变已有的两个接口,让他们相容。
桥接模式:分离抽象化和实现,使两者的接口可以不同,目的是分离。

在这里插入图片描述

行为型设计模式

行为型对象模式 和 行为型类模式 区别!!!
行为型对象模式采用组合或聚合在对象间分配行为
行为型类模式采用继承机制来在类间分派行为
由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

设计模式对应的UML图

参考文献【详解】:https://blog.csdn.net/qq_40274514/article/details/124047443

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

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

相关文章

ESXi5.5远程升级到ESXi6.7 (VMware Hypervisor)

1、ESXi的介质分为两类,以6.7为例: VMware vSphere Hypervisor (ESXi ISO) image (Includes VMware Tools)(ISO包) VMware vSphere Hypervisor (ESXi) Offline Bundle (ZIP包) 如果要升级,需要Z…

【畅购商城】详情页详情之商品详情

1.构建详情页 步骤0:确定访问路径 http://localhost:3000/Goods?id1 步骤二:复制 ~/static/goods.html 内容,导入第三方资源(css、js) head: {title: 列表页面,link: [{rel:stylesheet,href: /style/goods.css},{re…

Sysweld笔记:利用稳态算法加速算法模拟焊接过程的残余应力

作者:贾亚波博士,仿真秀专栏作者 在进行热力耦合的仿真过程中,如果模型足够的长并且热源速度恒定,通常其热学,相变以及热力耦合都会达到稳态的过程,因此如何直接计算稳态问题成为了大家研究的热点问题。 …

【C++笔试强训】第二十四天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦&a…

【数据结构】栈基本操作的实现(C语言)

🚀 作者简介:一名在后端领域学习,并渴望能够学有所成的追梦人。 🐌 个人主页:蜗牛牛啊 🔥 系列专栏:🛹初出茅庐C语言、🛴数据结构 📕 学习格言:博…

SpringBoot项目打包时配置文件区分日常、测试、预发、正式环境

前言🍊 在我们开发项目的时候,一般有四套环境:日常、测试、预发、正式。日常环境作为我们开发环境;测试环境给测试同学测试功能;预发环境给正式环境发布时提供准备;正式环境则是稳定的生产环境。 这四套环…

面试官问我new Vue阶段做了什么?

前言 本篇录入吊打面试官专栏,希望能祝君拿下Offer一臂之力,各位看官感兴趣可移步🚶。这段时间面了很多家公司,被问到的题我感觉不重复不止100道,将会挑选觉得常见且有意义的题目进行分析及回答。有人说面试造火箭&am…

Redis字符串、hash、列表方法使用以及Redis管道与Django集成Redis

目录标题一、Redis字符串操作二、Redis-hash操作三、Redis列表操作四、Redis管道五、Redis其他操作六、Django中集成Redis七、Celery介绍一、Redis字符串操作 名称属性setex:过期时间(秒)px:过期时间(毫秒) nx:如果设置为True,则只有name不存…

毕业设计:SpringBoot+Vue+Element的校内跑腿平台

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 文末获取源码 项目编号:BS-XX-…

MySQL基础总结

一.sql数据及语言基本类型: 1.语言的分类 DDL:数据定义语言,用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等 DML:数据操作语言,用来对数据库中表的记录进行操作。关键字:insert,delete,update等 DQL:数据库查询语言,用来查询数据库中表的记录。关键字:select,…

PIX2SEQ: A LANGUAGE MODELING FRAMEWORK FOR OBJECT DETECTION

文章目录ABSTRACT1 INTRODUCTION2 pix2seq框架2.1SEQUENCE CONSTRUCTION FROM OBJECT DESCRIPTIONS2.2 ARCHITECTURE, OBJECTIVE AND INFERENCE2.3 SEQUENCE AUGMENTATION TO INTEGRATE TASK PRIORS3 EXPERIMENTS3.1 EXPERIMENTAL SETUP3.2 MAIN COMPARISONS3.3 ABLATION ON SE…

2022年都在说软件测试饱和了?都在担心面试不上。

今年开始,小编听到最多的问题就是 软件测试行业是不是饱和了? 软件测试行业还有前景吗? 无非是因为投出去的简历回复的越来越少了 据中华英才网统计,目前软件测试人才的缺口在100万人以上,并以每年20%的速度递增&am…

2.5 自定义srv C++

功能介绍 以自定义数据类型为基础,完成一个节点作为服务器,另一个节点接收传送两个数字到服务端,服务端计算后反馈到客户端进行打印输出 1、工作空间 1.1 创建工作空间lee_ws mkdir -p ~/lee_ws/src cd ~/lee_ws/src/ catkin_init_worksp…

Unity 旋转大总结和项目操作

操作演示 旋转 (online-video-cutter.com)旋转方法都放在了按钮上,第一个是初始化按钮,将cube恢复到(0,0,0),但是位置不会变成(0,0,0) 这个是参…

clickhouse中的sql操作

DDL操作 create操作 create table t_order_mt2(id UInt32,sku_id String,total_amount Decimal(16,2),create_time Datetime,INDEX a total_amount TYPE minmax GRANULARITY 5 ) engine MergeTree partition by toYYYYMMDD(create_time) order by (id, sku_id) primary key …

【工具】工具小集

Gif录制工具 LICEcap一款轻量级屏幕录制工具,可以导出GIF动画图片格式,支持导出GIF 动画图片格式,可灵活调整录制窗口大小。 https://www.cockos.com/licecap/ 浏览器插件(工具箱) FeHelper插件支持Chrome、Firefox…

创建个人中心页面(下)

目录 布局规划前端页面 获取头像获取Bot列表 对接获取Bot信息渲染到前端 实现创建一个Bot 前端进行对接插入Bot 实现创建成功关闭和清空 修改时间 实现删除按钮 安装依赖:vue3-ace-editor 布局规划前端页面 使用 bootstrap 的 grids system 进行布局 在 bo…

windows常见的命令操作大全

目录 一、目录文件操作 cd命令 dir命令 md命令 rd命令 move命令 copy命令 del命令 二、文本相关操作 type命令 >命令 findstr命令 |命令 三、网络相关操作 小建议:跟着文章亲手敲一遍是避免忘记的有效方法 一、目录文件操作 cd命令 功能&#xf…

你真的会解决android ANR 问题吗?

前言 ​ 还记得之前写过一篇关于ANR 的介绍,现在看来,那个只是皮毛。现实中遇到应用或系统ANR 的问题,是很难解决的。下面进入正题,来详细了解下如何解决。 一.ANR 关键字 1. event log 中“am_ANR” 关键字,main-l…

27岁Python程序员做独立开发年收入超900万,家中有屋又有田,生活乐无边

他是谁 他叫赖利蔡斯,27岁的Python程序员。现在拥有一家自己的小型软件公司。 他现在的生活 躺赚 每天躺着就可以赚到钱,睡觉时从来不会被闹钟吵醒。 每天干自己的喜欢的事情,读书、编程、讨论公司业务、研究自己感兴趣的事情&#xff0…