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

一、引言

面向对象思想是现代编程语言的主流编程思想,除了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.mfbz.cn/a/786328.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新功能上线 | 自定义工作台,成就个性化办公

为进一步优化用户操作体验,帮助用户更轻松、便捷的使用采购系统,隆道平台面向用户推出自定义工作台。根据个人的工作习惯和需求,轻松定制专属的工作界面。无论您需要快速查看待办事项,还是实时追踪业务进度,或是全面掌…

【瑞吉外卖 | day03】公共字段自动填充+分类信息的增删改查

文章目录 1. 公共字段自动填充1.1 问题分析1.2 代码实现1.3 代码完善 2. 新增分类2.1 需求分析2.2 数据模型2.3 代码开发 3. 分类信息分页查询3.1 代码开发 4. 删除分类4.1 需求分析4.2 代码开发4.3 功能完善 5. 修改分类 1. 公共字段自动填充 1.1 问题分析 在后台系统的员工管…

昇思25天学习打卡营第10天|ShuffleNet图像分类

ShuffleNet网络结构 ShuffleNet是一种专为移动设备设计的、计算效率极高的卷积神经网络(CNN)架构。其网络结构的设计主要围绕减少计算复杂度和提高模型效率展开,通过引入逐点分组卷积(Pointwise Group Convolution)和…

neo4j 图数据库:Cypher 查询语言、医学知识图谱

neo4j 图数据库:Cypher 查询语言、医学知识图谱 Cypher 查询语言创建数据查询数据查询并返回所有节点查询并返回所有带有特定标签的节点查询特定属性的节点及其所有关系和关系的另一端节点查询从名为“小明”的节点到名为“小红”的节点的路径 更新数据更新一个节点…

汇川Easy系列PLC使用本地脉冲5轴设置

根据官网手册可以看到,Easy302往上的系列都是支持本地5轴脉冲控制的 常规汇川PLC本地脉冲轴配置时,脉冲和方向的输出点都是成对出现的,但是easy如果要使用5轴的话,就需要自己定义方向 可以看到,Y0,Y1这两个点是单独…

SQLite 命令行客户端 + HTA 实现简易UI

SQLite 命令行客户端 HTA 实现简易UI SQLite 客户端.hta目录结构参考资料 仅用于探索可行性&#xff0c;就只实现了 SELECT。 SQLite 客户端.hta <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; cha…

27 岁的程序员 Gap 一年感受

最大的感受&#xff1a;变成 28 岁了 好吧&#xff0c;开个玩笑&#xff0c;下面是正文。 0.背景以及 Gap 原因 我硕士毕业时是 26 岁&#xff0c;然后校招进入一家航天国企&#xff0c;负责 Web 后端开发&#xff0c;工作了一年之后发现个人成长和挑战的空间极其有限&#…

SAP 新增移动类型简介

在SAP系统中新增移动类型的过程涉及多个步骤,‌包括复制现有的移动类型、‌调整科目设置以及进行必要的测试。‌以下是新增移动类型的一般步骤和关键点:‌ 复制现有的移动类型:‌ 使用事务代码OMJJ进入移动类型维护界面。‌ 勾选移动类型 这里不填写移动类型,然后直接下…

告别堆积,迎接清新:回收小程序,打造无废生活新选择

在快节奏的现代生活中&#xff0c;物质的丰富与便利似乎成为了我们日常的一部分&#xff0c;但随之而来的&#xff0c;是日益增长的废弃物堆积问题。街道边、社区里&#xff0c;甚至是我们的家中&#xff0c;废弃物品仿佛无孔不入&#xff0c;逐渐侵蚀着我们的生活空间与环境质…

Pyspider WebUI 未授权访问致远程代码执行漏洞复现

0x01 产品简介 Pyspider是由国人binux编写的强大的网络爬虫系统,它带有强大的WebUI(Web用户界面),为用户提供了可视化的编写、调试和管理爬虫的能力。这一特点使得Pyspider在爬虫框架中脱颖而出,尤其适合那些希望快速上手并高效开发爬虫的用户。允许用户直接在网页上编写…

zabbix“专家坐诊”第245期问答

问题一 Q&#xff1a;vfs.dev.discovery拿的是哪里的文件&#xff0c;我看源码里面获取的是/proc/parttions里面的信息&#xff0c;但是我没有这个device&#xff0c;是怎么获取出来的&#xff1f; 在这里插入图片描述 A&#xff1a;检查下系统内核版本或者agent程序版本&…

15 CIG重量级监控

目录 1. docker stats原生命令 2. CIG CAdvisor InfluxDB Granfana 3. 安装部署 4. Grafana配置 4.1. 添加数据源 4.2. 添加工作台 grafana官网文档参考&#xff1a;Grafana documentation | Grafana documentation influxdb官网文档参考&#xff1a;https://docs.in…

拨开迷雾,寻找大模型应用落地的支点

自主可控大模型底座个性化刚需场景&#xff0c;这家大模型公司率先趟出一条个性化发展路径。 作者 | 辰纹 来源 | 洞见新研社 上海的温度很高&#xff0c;接近40度&#xff0c;比上海温度更高的是AI的热度。 7月4日&#xff0c;2024世界人工智能大会暨人工智能全球治理高…

tapd项目管理由完全免费的工具向付费工具转变

TAPD从2022年左右开始面由一个完全免费的工具向付费工具转变。从最新政策看&#xff0c;TAPD 针对不同规模和需求的团队&#xff0c;TAPD提供了多种版本&#xff0c;其中包括“卓越版”和“企业版”。免费版本人数规模由原来的100人不断缩小&#xff0c;2024年仅支持30人以内免…

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

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

科普文:深入理解负载均衡(四层负载均衡、七层负载均衡)

概叙 网络模型&#xff1a;OSI七层模型、TCP/IP四层模型、现实的五层模型 应用层&#xff1a;对软件提供接口以使程序能使用网络服务&#xff0c;如事务处理程序、文件传送协议和网络管理等。&#xff08;HTTP、Telnet、FTP、SMTP&#xff09; 表示层&#xff1a;程序和网络之…

循环练习题

代码&#xff1a; public static void main(String[] args) { for (char c1a;c1<z;c1){System.out.print(" "c1); }System.out.println();for (char c2Z;c2>A;c2--){System.out.print(" "c2);}} 结果为&#xff1a;

二. Linux内核

一. Linux内核源码目录分析 arch 包含与体系结构相关的代码&#xff0c;用于支持不同硬件体系结构的实现。这个目录下会根据不同的架构&#xff08;如x86、arm、mips等&#xff09;进一步细分。 block 用于处理块设备的子系统&#xff0c;包含与块设备驱动和I/O调度相关的代码。…

HTML(29)——立体呈现

作用&#xff1a;设置元素的子元素是位于3D空间中还是平面中 属性名&#xff1a;transform-style 属性值&#xff1a; flat&#xff1a;子级处于平面中preserve-3d:子级处于3D空间 步骤&#xff1a; 父级元素添加 transform-style:preserve-3d 子级定位调整子盒子的位置&a…

高智能土壤养分检测仪:农业生产的科技新助力

在科技日新月异的今天&#xff0c;农业领域也迎来了革命性的变革。其中&#xff0c;高智能土壤养分检测仪作为现代农业的科技新助力&#xff0c;正逐渐改变着传统的农业生产方式&#xff0c;为农民带来了前所未有的便利与效益。 高智能土壤养分检测仪&#xff0c;是一款集高科技…