对于编程思想来说,大意上可分为俩种,一种为面向对象,一种为面向过程。

面向过程,只追求运算逻辑、耦合度高(耦合度是指事物关联程度的紧密度)、扩展力差

而面向对象是追求的是模块之间的互相协作,耦合度低,扩展力强。

对于面向过程和面向对象的理解和差别是这么理解的(爬山):

——面向过程就像走山路爬山一样,必须一步一步走上去,途中没有其他方式上山。这种一条路走到黑的方式就是面向过程,他的逻辑性很强,一般的程序逻辑是没有问题的,但是假如出现问题,他的逻辑性就是被破坏,前段代码逻辑和后段代码逻辑会没有连接,导致整段程序会失效,最主要的是面向过程的编程思想,他的扩展力极差,没有办法将相对应有问题的代码及时更换。按照爬山的说法来说,就是上山的路坏了,他没有办法爬山了,而上山的路修补需要很长时间或者舍弃这条路也是有可能的。(比较原始)

——而面向对象对于爬山可以说是很丰富(多样)的,就比如同样是上山我们可以选择交通工具,坐汽车,坐缆车,骑自行车等都是可以的,他的选择方面是较多的,并且对于面向对象来说万物皆可为对象,我们可以定义人的属性,车的速度、颜色、类型等,这就是面向对象的好处,他的扩展力是很强的,他不会因为某一段代码出现了问题而造成整段代码会崩溃,因为基于面向对象的高扩展性,随时随地可以跟换错误的代码,那怕再复杂的代码逻辑相对于面向过程来说处理起来也相对容易

相对于例子爬山来讲,路坏了,我们可以坐缆车来达到爬山的目的。他的方法有很多种措施,而对于面向过程来说逻辑属性从建项目的那一刻就固定了,后面要做更改相对于面向对象的话会很难,毕竟面向过程的局限性就在那里。

面向对象和面向过程的优缺点:

面向过程的优点:

虽然面向过程他的局限较强,但是在一般并不复杂的业务逻辑时,他的前期工作是轻松的,只要有逻辑就能很快的做出项目来。

面向对象的缺点:

同样虽然面向对象他的扩展力极高,但是在前期的准备工作是非常复杂和缓慢的,在开发一个项目时,一个一个定义模块是非常消费时间的,前期投入较大,工程量大。

面向对象和面向过程的联系(自我认为):

虽然面向对象和面向过程有很大的区别,但是我认为面向过程是包含面向对象的。虽然面向对象是定义一个一个模块进行互相协作,但是我认为在互相协作的同时也是面向过程的同时,因为它具有逻辑性。所以面向对象走到最后也是面向过程,只不过这个面向过程具有面向对象的高扩展性。

当然,面向对象和面向过程只是一种编程的思维方式,我们不需要计较这两种编程思想哪个特殊。我们只要能理解了就好。

由于博主目前只会些jJAVA编程,所以下面用JAVA来表示一下面向对象和面向过程(也以爬山为例):

定义的类有:

ObjectOriented 面向对象类
ProcessOriented 面向过程类
People 人“类”
Car 车类

定义的属性有:

People 人“类”:String name; 名字
Car 车类:String brand;品牌int speed;速度String color;颜色People people;人名

———首先是面向对象类:

// 面向对象类public class ObjectOriented {public static void main(String[] args) {//创建对象people 引用 People类People people = new People();people.name = "李四";// 调用walk方法(走路的方法)people.walk();// 假如 walk方法失效 我们可以引用Car类的方法来上山 来取缔掉walk的方法 继续执行程序
        // 若想使方法失效 注释27行 people.walk();就行// 创建对象 car 引用Car类Car car = new Car();// 定义Car类的中的属性car.brand = "宝马";// 定义Car类的中的属性car.speed = 120;// 定义Car类的中的属性car.color = "黑色";// 让原属于people的内存地址赋予了car.people// 相当于car.people = new People() 可以直接访问People类的属性car.people = people;// 将People类中的名字属性赋值car.people.name = "张三";car.drive();}}——————其次是人“类”: 
// 人“类“
public class People {// 名字String name;// 走路的方法public void walk(){// 输出打印到控制台System.out.println(name +"走路上山");}}

————再是车类:

// 车类public class Car {// 品牌String brand;// 速度int speed;// 颜色String color;// 人名People people;public void drive() {System.out.println(people.name + "坐" + brand + "的车" + "速度为:" + speed + "每小时公里" + "颜色为:" + color + "的车到山顶");}
}

图解:

————最后是面向过程类:

// 面向过程类public class ProcessOriented {public static void main(String[] args) {// 定义一个名字变量String name = "王五";// 将name这个变量传入到WalkUpTheMountain方法中WalkUpTheMountain(name);}// 假如WalkUpTheMountain失效了 那么这个程序就会失去意义 王五再也不会去到山顶上// 定义一个走路上山的方法static void WalkUpTheMountain(String name){System.out.println(name +"走路上山到山顶");}
}

图解:

~~对于面向过程的图解解释:
        1.由于定义的方法是个传参的方法,所以定义了一个name变量并且赋予值为“王五”。

2.main方法调用WalkUpTheMountain方法。

对于博主自写 的这篇文章,觉得有些疏漏之处,也希望大神能指点一二。但是还是希望能够帮助一些初学者。

最后希望大家能够成功上岸。

面向对象和面向过程~~编程思想相关推荐

  1. 通俗理解面向对象和面向过程+编程思想

    上午单位的C++大佬给我们分享了一些编程思想,开始介绍了面向对象和面向过程 面向过程是什么,就是对事件的过程进行编程,我们已知事件的发展过程,我们根据过程发展的节点去编程.整个编程是过程驱动,开始,然 ...

  2. 面向对象与面向过程编程

    从语言角度来讲: C是面向过程编程: C++一半是面向过程编程,一半是面向对象编程: Java是面向对象编程. 一.什么是面向对象编程与面向过程编程? 面向过程(Procedure Oriented ...

  3. 面向对象,面向过程编程

    很多时候,我们都是用面向对象语言进行面向过程编码.     1. 滥用 getter.setter 方法. 滥用getter,setter方法很容易造成违反封装特性.数据没有访问权限控制,任何代码都可 ...

  4. 编程思想:面向对象和面向过程

    何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中.我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起,最后可能也只会说出一句就是那样啦,你知道啦 ...

  5. 编程思想:面向对象和面向过程的区别与联系

    前言 何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中.我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起.而这种茫然,其实就是对这两大编程思想 ...

  6. 面向对象和面向过程思想 oc

    面向对象和面向过程思想 oc 面向对象和面向过程只是两种思想:都能解决问题: 面向过程关注的是解决问题的步骤:例如听歌-打开电脑--打开播放歌曲--关闭电脑 面向对象的思想的:思考的不是步骤,解决这个 ...

  7. 【Java开发语言 03】第三章 面向对象编程(面向对象与面向过程+类和对象+类成员一:属性+类成员二:方法+对象的创建和使用+封装和隐藏+构造器+关键字this,package,import)

    面向对象编程 1 面向对象与面向过程 1.1 java类及类的成员 2 java语言的基本元素:类和对象 2.1 类的语法格式 2.2 创建Java自定义类 2.3 对象的创建及使用 3 类的成员之一 ...

  8. 什么是面向对象编程?面向对象和面向过程有什么区别?

    面向对象 面向对象的程序设计(Object-Oriented Programming,简记为OOP),是当下最流行的程序设计方式之一.在面向对象的设计思想中,将程序视为多个对象共同协作的结果.程序被划 ...

  9. 面向对象和面向过程:两种程序设计思想的基础介绍和对比

    一.面向过程程序设计 面向过程:程序=算法+数据结构 面向过程的核心理念是"步骤分解",即把需要解决的问题分成一个个步骤,并用不同函数来实现它们.设计思维"自顶向下,逐步 ...

最新文章

  1. 解决img标签间距问题
  2. 黑马程序员:从零基础到精通的前端学习路线
  3. 郑州5月份的windows phone7小聚
  4. OpenGL 与 GLSL 版本号
  5. Flutter实战一Flutter聊天应用(十一)
  6. 反复平方——快速计算一个数的平方
  7. c++中的堆(优先级队列 priority_queue)
  8. python collections.Counter
  9. CC2530之ADC
  10. 单片机高效c语言编程,飞思卡尔单片机高效C语言编程(中文).pdf
  11. 一、ShenYu快速开始
  12. h5禁止页面长按操作_解决HTML5对手机页面长按会粘贴复制禁用的方法-H5教程
  13. rk3288 安卓7.1显示正确的ICCID值
  14. Relative Orientation 与fundamental essential matrix
  15. 如何一眼辨别谁有男朋友/女朋友?哈哈哈哈哈哈哈
  16. 秒杀Excel的动态可视化报表,不用学python,用它仅需10分钟
  17. Python获取二维数组的行列数
  18. 数值计算笔记之插值(四)三次样条插值
  19. MYSQL的删除和重装
  20. mac 搭建Elasticsearch 6.8.6

热门文章

  1. vue 路由懒加载,使用 import 无法处理
  2. 计算购买商品总金额的程序
  3. Excel合并多列增加指定字符指定字符替换为换行符调整行高步骤
  4. Idea控制台 CMD Tomcat乱码
  5. 卡塔兰数(Catlan)
  6. 计算机中分页符号是什么,2013年职称计算机操Word2003精选知识点:分页符号
  7. shiro教程1(HelloWorld)
  8. Java最新面试题100道,包含答案示例(1-10题)
  9. BootLoader是什么 转载至百度百科
  10. YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫