浅谈编程中的面向对象和面向过程

简介: 浅谈编程中的面向对象和面向过程

浅谈编程中的面向对象和面向过程

面向过程就是分析出解决问题所需要的步骤,就像我们做数学题一样,分析出解题的步骤,然后把这些步骤一步一步的去实现;面向对象是把大的问题分解成多个模块,每个模块就是一个对象,每个对象负责一部分功能,通过对这些模块的组合达到解决问题的结果。


       做数学题时,我们需要知道第一步的结果,才能进行第二步操作,然后一步一步的走下去,直到最后解决问题,得出答案,这是典型的面向过程的思想。在借用博客中的一个例子:我们要设计一个五子棋的游戏,面向过程的设计思路如下所示:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。


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



优点与缺点

接着做题的例子,讲述一下面向过程的思想,例如高考中的物理大题,一版情况是第二问使用第一问的答案,第三问使用第二问的答案。那么解决一个大题的步骤如下所示:先解决第一个小问题,接着解决第二小问,然后解决第三小问,最后这个大题解决。不幸的是第一问写错了,然后第二问和第三问都错了,这时候要改错的话,需要把整个答题重新写一遍。这也就是面向过程的弊端,步骤相互之间的关联性太强(耦合度太高),牵一发而动全身。

还是做高考题的例子介绍面向对象的思想,物理的解答题有三道大题,解答题就像一个问题,每道大题就像一个对象,哪道题做错了,只修改哪一道题就好了,和其他题的关联性不强,不会产生致命性的影响。

       这只是面向对象相对于面向过程的优点,面向过程也不是没有优点,面向对象编程有三大特点,封装、继承和多态。经过这一顿骚操作的包装,性能难免有所损失。



面向对象

  • 优点:代码灵活,容易理解、代码复用性、扩展性好,由于面向对象有封装、可以设计出低耦合的系统,
  • 缺点:性能比面向过程低
  • 高级语言基本上都是面向对象的编程语言,如Java

面向过程

  • 优点:性能比面向对象好,内存开销少,单片机用的比较多
  • 缺点:耦合性高,不利于维护,扩展性,复用性没有面向对象好
  • C语言就是典型的面向过程的语言
目录
相关文章
|
3月前
什么叫做 “面向对象” 编程?
本文介绍了面向对象编程(OOP)的概念、核心组件(类和对象)、三大特性(封装、继承和多态)以及六大设计原则,强调了面向对象编程在提高代码的可重用性、模块化、扩展性和维护性方面的优点。
138 1
|
5月前
关于对面向对象和面向过程的理解
关于对面向对象和面向过程的理解
50 1
|
7月前
面向对象与面向过程的区别
面向对象与面向过程的区别
81 0
面向对象和面向过程的理解
面向对象和面向过程的理解
119 1
|
8月前
面向对象和面向过程
面向对象和面向过程
55 0
|
Java C++
面向对象—面向过程
从80年代起,人们基于以往提出的有关信息隐蔽和抽象数据类型等概念,以及由MODula2,Ada和Smalltalk和语言所奠定的基础,再加上客观需求的推动,进行了大量的理论研究和是时间探索 ,不同类型的面向对象语言(如:Object-c、c++,Java、object-Pascal)逐步地发展和建立起较完整的和雨后春笋般研制开发出来,OO方法概念理论体系和实用的软件系统。面向对象源于Simula,真正的OOP由Smalltalk奠基
83 0
|
8月前
|
JavaScript 前端开发 开发者
面向过程和面向对象
面向过程和面向对象
86 0
|
8月前
|
Java C++
面向对象-面向过程
面向对象-面向过程
57 0
|
算法 Java Unix
面向对象和面向过程的区别?什么是面向过程?什么是面向对象?
面向对象和面向过程的区别?什么是面向过程?什么是面向对象?
4001 1