1.面向过程编程

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。
特性:模块化 流程化
优点:性能比面向对象高, 因为类调用时需要实例化,开销比较大,比较消耗资源;
单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

例如下面这个学生入学的例子:

第一个用户的信息
student_a = {'name': '小明','age': 23,'gender': '男',# 座右铭'matto': '人生苦短, 我用python!'
}第二个用户的信息
student_b = {'name': '小红','age': 21,'gender': '女',# 座右铭'matto': '合理安排时间,就等于节约时间。'
}第三个用户的信息
student_c = {'name': '小李','age': 26,'gender': '男',# 座右铭'matto': '挫折不是惩罚而是学习的机会。'
}def roll(studentDict):"""入学过程封装的函数:return:"""# 字典的get方法: 如果key值不存在, 直接返回为空;print("正在办理手续".center(20, '*'))print("正在注册用户[%s]信息" %(studentDict.get('name')))print("用户[%s]正在入学" %(studentDict.get('name')))print("用户[%s]正在上课" %(studentDict.get('name')))print("用户[%s]正在自我介绍" %(studentDict.get('name')))for key, value in studentDict.items():print(key, ':', value)roll(student_a)
roll(student_b)
roll(student_c)

上面的代码就是典型的面向过程编程。
面向过程:根据业务逻辑从上到下写代码 。面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。

考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介
绍。而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁。
用我们的现实思维方式该怎么用程序表达呢?这就要用到面向对象的编程思想了。

面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程

2. 函数式编程

函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。

主要思想: 把运算过程尽量写成一系列嵌套的函数调用。
例如:

def add(a,b):return a+bdef multi(a,b):return a*bprint(multi(add(1,2),add(2,3)))

Python 不是也不大可能会成为一种函数式编程语言,但是它支持许多有价值的函数式编程语言构建。也有些表现得像函数式编程机制(如:内建函数 filter()、map()、reduce()),但是从传统上也不能被认为是函数式编程语言的构建。

3.面向对象编程

面向对象是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。通过面向对象的理念使计算机软件系统能与现实世界中的系统一一对应。

特性:抽象 封装 继承 多态
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低

4.面向过程与面向对象的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

可以拿生活中的实例来理解面向过程与面向对象,例如五子棋。

面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。

如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

【计算机基础知识】三大编程思想相关推荐

  1. 计算机基础知识对编程的重要性

    码农和架构师的差别在哪里 从题目看文章,大家的第一想法是本篇文章是一篇讲述计算机基础知识和编程之间的关系,但是为什么开篇是这样的呢?当然这样的开篇并没有多大的意义,唯一的目的就是吸引读者而已. 纵观计 ...

  2. 一、编程基础之计算机基础知识

    1.1 整体概述计算机系统 计算机系统分为硬件系统和软件系统两个部分. 硬件:就是我们平时都能看得见的机械零件.不同种类的计算机,硬件系统的组成也会不相同. 软件:是程序.数据以及相关文档的总称. 程 ...

  3. 电子计算机的基本结构基于存储程序思想是由,第一章计算机基础知识习题

    <第一章计算机基础知识习题>由会员分享,可在线阅读,更多相关<第一章计算机基础知识习题(3页珍藏版)>请在人人文库网上搜索. 1.第一章 计算机基础知识习题一.单项选择题1.通 ...

  4. 编程入门:计算机基础知识 JAVA的基础知识

    目录 一.计算机基础知识 1.1计算机概述 1.2计算机硬件系统 1.3计算机软件系统 1.4软件开发 1.5计算机语言 1.6人机交互的方式 1.7常用的DOS命令 二.JAVA语言的概述 2.1J ...

  5. 这样学还不会?小白入门编程第1讲 计算机基础知识 JAVA基础知识 必看

    1 计算机基础知识 1.1计算机 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理数据的现代化智能电子设备.常见的形式有台式计算机.笔记本计算机.按照规模分 ...

  6. day01--java基础编程:计算机基础知识 ,java语言概述,java开发环境搭建,eclipse概述,创建简单java项目,JDK JRE JVM的关系,java开发中的命名规范,编程风格

    1 Day01–Java开发环境+HelloWorld 1.1 计算机基础知识 资料下载网址:刘沛霞 18600949004 code.tarena.com.cn tarenacode code_20 ...

  7. 学编程到底需要什么计算机基础知识?

    一.基础介绍 Hello,各位同学大家好,从现在开始,我们会从0开始一点一点的打开Java编程世界的大门. Java基础分类: 计算机基础知识 Java基础语法 编程思维的建立 二.计算机简介 计算机 ...

  8. Python3之旅之计算机基础知识

    计算机基础知识 编程的基本概念 编程的目的 "编程"一词的由来 编程语言的分类 机器语言 汇编语言 高级语言 计算机的认识 计算机的基本组成 与运行程序相关的三大核心硬件 组装计算 ...

  9. 计算机基础知识的最小集合

    码农翻身的老读者们估计要烦了: 老刘真是老了,怎么老是在这里啰嗦计算机基础? 没办法,问的人特别多, 我还是要再啰嗦一次,希望这是最后一次. 很多人工作后痛感计算机基础知识的缺乏, 那计算机基础知识都 ...

  10. 计算机基础知识总结论文,大学计算机基础总结论文

    计算机基础实训课是针对非计算机专业的大一新生开设的计算机入门课程,是应用性和操作性都非常强的课程,力求培养学生对计算机的新知识.新技术的理解和应用,使学生能够有效的利用计算机来提高学习和工作效率.下面 ...

最新文章

  1. 学自动化必知:20个传感器原理及应用动图
  2. AI Studio下C语言编程:一道简单的C语言作业题目
  3. 尚硅谷Docker---1、docker杂记
  4. Part2_1 Urllib的get请求和post请求
  5. Zookeeper_环境搭建及客户端使用
  6. php图片显示框,【转】php让图片弹出下载框的方法
  7. mp3 pcm java_Java mp3文件转pcm文件
  8. oracle死锁解决常用方法(屡试不爽)
  9. 通过代理上网 固定ip_浅析局部代理IP与全局代理IP的使用说明
  10. cannot read prpperty ‘start‘ of undefined(问题记录)
  11. 高精度加法(A+BProblemII)
  12. 从入门到入土:恶意代码Lab03-03.exe|分析实验|运行截图|问题回答|
  13. 《我也能做CTO之程序员职业规划》和《.NET软件设计新思维——像搭积木一样搭建软件》新书发布会 回顾
  14. mysql报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  15. php提示Undefined index的解决方法
  16. java web 登录demo_JavaWeb之Servlet登录demo
  17. 【MapGIS精品教程】005:MapGIS中间件的配置与使用
  18. udhcpc遇到问题
  19. 客户信息的收集办法有哪些 如何进行客户信息管理
  20. jsp运行linux脚本,jsp页面调用哪个Linux的shell 脚本步骤

热门文章

  1. Android开发真等于废人?已拿offer附真题解析
  2. KeepAlived,keepalive,keep-alive--简析
  3. An unexpected error has occurred. Conda has prepared the above report. Upload did not complete.
  4. 企业微信社群如何逆风翻盘
  5. 天猫超市幕后功臣并入阿里,店宝宝:互利互惠
  6. c语言管理系统实践体会,C语言实践实习工作个人心得体会汇编
  7. 采云weather 获取 会员等级
  8. U盘重装系统后内存变小解决办法,修复U盘
  9. Redis学习(含 Springboot 整合 Redis)
  10. Day09_01_Dubbo教程之简介