面向对象的程序设计设计思想(解决问题所需要的类),面向过程的程序设计思想(解决问题的步骤)

一、引言

面向对象思想是现代编程语言的主流编程思想,除了C语言外,其他的主流编程语言,无论是脚本的还是非脚本的,基本上都引入了面向对象这一设计思想,面向对象设计思想是怎样的?为什么现在的编程语言大都采用这种设计思想?他与面向过程设计思想有什么区别?

二、面向对象和面向过程

1、面向对象和面向过程都是程序设计思想。对于某一具体问题,可先使用面向对象的设计思想先设计好全局的解决方案,再使用面向过程的设计思想来设计好局部的解决方案,最终再通过使用具体的面向对象编程语言编写程序来解决问题

2、面向对象编程和面向过程编程是常用的两种编程范式

3、早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显,之后便出现了面向对象思想并成为主流的程序设计思想

三、面向过程的程序设计思想(Procedure Oriented Programming)

1、定义:是一种执行者思维,分析出解决问题的步骤,然后把步骤一步一步实现

2、关注点:过程,即操作数据的步骤,即如何执行

3、代码结构:以函数为组织单位,一个函数就是一个功能

4、适用范围:解决简单问题、解决不需要协作的问题

5、缺点:相对于面向对象的程序设计思想,代码扩展能力差、后期维护难度大

6、典型语言:C

四、面向对象的程序设计思想(Object Oriented Programming)

1、定义:是一种设计者思维,在进行程序设计的过程中,将事物的属性特征、行为特征抽象出来,用类来表示

2、关注点:类

3、代码结构:以类为组织单位,一个类就是一种事物

4、适用范围:解决复杂问题

5、优点:相对于面向过程的程序设计思想,代码扩展性强、可维护性高

6、典型语言:Java

五、由实际问题考虑如何设计程序-如何开车?

此问题是简单问题,使用POP思想来思考这个问题,首先要思考“怎么按照步骤来实现开车”

1、解决问题的步骤。即开车的步骤

2、步骤的实现。即开车步骤的实现

(1)函数A实现点火启动功能

(2)函数B实现踩离合、挂挡功能

(3)函数C实现松离合、踩油门功能

(4)函数D实现行进功能

3、组织代码。即组织函数

函数A----->函数B----->函数C----->函数D

六、由实际问题考虑如何设计程序-如何造车?

此问题是复杂问题,使用OOP思想来思考这个问题,首先要思考“车是怎样设计的”

1、车是由以下几个部分组成的

(1)可以找轮胎厂完成制造轮胎的步骤,发动机厂完成制造发动机的步骤....,这样大家可以同时进行车的制造

(2)最终进行组装就可以完成造车工作,大大提高了效率

(3)但具体到轮胎厂的一个流水线操作,也是有步骤的,还是离不开POP思想

七、由实际问题考虑如何设计程序-人把大象装进冰箱

1、使用POP思想解决问题-考虑人把大象装进冰箱的步骤

2、使用OOP思想解决问题-考虑人把大象装进冰箱需要的类

 

七、POP与OOP的选择

1、当需求简单时,我们可以一步步操作去解决问题,并且效率也很高

2、当需求复杂时,需要很多的功能,此时会发现面对每一个步骤已经变得非常麻烦了,这是就可以思考,能否将这些功能进行封装,根据功能的不同,将功能类似的功能封装在一起,形成一个类,使用时,只要找到对应的类即可。这就是OOP思想

八、POP与OOP的关系

1、非对立关系

2、相辅相成的关系

3、面向对象离不开面向过程的关系

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

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

相关文章

模型驱动开发(Model-Driven Development,MDD):提高软件开发效率与一致性的利器

目录 前言1. 模型驱动开发的原理1.1 什么是模型驱动开发1.2 MDD的核心思想 2. 模型驱动开发的优势2.1 提高开发效率2.2 确保代码一致性2.3 促进沟通和协作2.4 方便维护和扩展 3. 实现模型驱动开发的方法3.1 选择合适的建模工具3.1.1 UML3.1.2 BPMN3.1.3 SysML 3.2 建模方法3.2.…

大学生竞赛管理系统-计算机毕业设计源码37276

大学生竞赛管理系统的设计与实现 摘 要 随着教育信息化的不断发展,大学生竞赛已成为高校教育的重要组成部分。传统的竞赛组织和管理方式存在着诸多问题,如信息不透明、效率低下、管理不便等。为了解决这些问题,提高竞赛组织和管理效率&#x…

K8S 上部署大数据相关组件

文章目录 一、前言二、Redis 一、前言 Artifact Hub 是一个专注于云原生应用的集中式搜索和发布平台。它旨在简化开发者在 CNCF(Cloud Native Computing Foundation)项目中寻找、安装和分享包与配置的过程。用户可以通过这个平台方便地发现、安装各类云原…

用SurfaceView实现落花动画效果

上篇文章 Android子线程真的不能刷新UI吗?(一)复现异常 中可以看出子线程更新main线程创建的View,会抛出异常。SurfaceView不依赖main线程,可以直接使用自己的线程控制绘制逻辑。具体代码怎么实现了? 这篇文章用Surfa…

vscode启用项目后,没有触发debugger

启动项目后在debugger时,一直不走断点,重启vscode和电脑,打开其他vscode项目,都不行 1.F12点击设置 2.然后取消忽略列表的勾选即可。

【力扣高频题】042.接雨水问题

上一篇我们通过采用 双指针 的方法解决了 经典 容器盛水 问题 ,本文我们接着来学习一道在面试中极大概率会被考到的经典题目:接雨水 问题 。 42. 接雨水 给定 n 个非负整数,表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子…

Java-Redis-Clickhouse-Jenkins-MybatisPlus-Zookeeper-vscode-Docker-jdbc

文章目录 Clickhouse基础实操windows docker desktop 下载clickhousespringboot项目配置clickhouse Redis谈下你对Redis的了解?Redis一般都有哪些使用的场景?Redis有哪些常见的功能?Redis支持的数据类型有哪些?Redis为什么这么快…

第一个ffmpeg程序

在进行使用ffmpeg进行编写程序时,首先要记得进行注册设备(avdevice_register_all ),程序运行时,只需要注册一次就可以 avdevice_register_all 是 FFmpeg 多媒体处理库中的一个函数,其作用是注册所有可用的音…

【AI前沿】人工智能的历史演进

文章目录 📑引言一、人工智能的起源与早期发展1.1 古代与早期的智能机器设想1.2 20世纪初期的机械计算机1.3 图灵测试与计算智能1.4 达特茅斯会议与人工智能的正式诞生 二、早期AI研究与第一次冬天2.1 早期的探索与挑战2.2 早期的专家系统2.3 第一次AI冬天 三、专家…

SpringBoot日常:@Scheduled实现服务启动时执行一次

文章目录 一、Scheduled详解二、逻辑实现1、创建定时任务逻辑方法2、新建一个启动执行类 三、测试结果 说到定时任务,我们应该会想起Scheduled,Quartz以及XXL-JOB,但是有的单体服务或者小项目,为了方便快捷,可能会直接…

【昇思25天学习打卡营第1天】

前言 例如:随着大模型的爆火,这门技术也越来越重要,很多人都开启了关于大模型知识的学习,但大模型需要一定的资源且涉及的模块很多,如果个人想要系统的学习会有些难度,好在有昇思大模型平台,能…

WebRTC群发消息API接口选型指南!怎么用?

WebRTC群发消息API接口安全性如何?API接口怎么优化? WebRTC技术在现代实时通信中占据了重要地位。对于需要实现群发消息功能的应用程序来说,选择合适的WebRTC群发消息API接口是至关重要的。AokSend将详细介绍WebRTC群发消息API接口的选型指南…

本地部署 SenseVoice - 阿里开源语音大模型

本地部署 SenseVoice - 阿里开源语音大模型 1. 创建虚拟环境2. 克隆代码3. 安装依赖模块4. 启动 WebUI5. 访问 WebUI 1. 创建虚拟环境 conda create -n sensevoice python3.11 -y conda activate sensevoice 2. 克隆代码 git clone https://github.com/FunAudioLLM/SenseVoic…

本地部署 Llama3 – 8B/70B 大模型!

Llama3,作为Meta公司新发布的大型语言模型,在人工智能领域引起了广泛的关注。特别是其8B(80亿参数)版本,在性能上已经超越了GPT-3.5,而且由于是开源的,用户可以在自己的电脑上进行部署。 本文和…

太多项会毁了回归

「AI秘籍」系列课程: 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 多项式回归的过度拟合及其避免方法 通过添加现有特征的幂,多项式回归可以帮助你充分利用数据集。它允许我们甚至使用简…

【智能算法改进】多策略改进的蜣螂优化算法

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】蜣螂优化算法(DBO)原理及实现 2.改进点 混沌反向学习初始化 采用 Pwlcm 分段混沌映射,由于 Pwlcm 在其定义区间上具有均匀的密度函数,在特定的…

User parameters 用户参数与Web监控

目录 一. 自定义键介绍 二. 制作步骤 1. 添加无可变部分参数 2. 添加有可变参数 3. 使用用户参数监控php-fpm 服务的状态 三. Web页面导入应用监控 四. Web监控 主要功能和操作: 开启方式 官方预定义监控项文档https://www.zabbix.com/documentation/6…

华三m-lag三层转发+VRRP配置案例

目录 一、相关理论介绍 1.1 华三M-LAG介绍 1.2 DRCP协议 1.3 keepalive机制 1.4 MAD机制 1.5 一致性检查功能 二、M-LAG系统建立及工作过程 三、实验组网案例 3.1 组网需求 3.2 组网拓扑 3.3 设备接口及地址规划 四、具体配置命令 4.1 S6850-1的配置 4.2 S6850-2…

AI:助力开发者翱翔,而非抢夺其舞台

在当今这个科技飞速发展的时代,人工智能(AI)犹如一股春风,悄然渗透进全球各个行业,尤其在软件开发领域,其影响力日益显著。从初创企业到跨国巨头,无一不在积极探索AI如何重塑编程的面貌&#xf…

护眼灯什么价位的好?好用又实惠的护眼灯推荐

护眼灯,简单来说就是保护视力的台灯,专业的护眼台灯的光线与自然光光线相似,有亮度稳定、不闪烁,发光面积大等这些特点。那么,护眼灯什么价位的好?市面上所出现的护眼台灯良莠不齐,价格低的质量…