`

面向对象与面向过程的简单比较

阅读更多

这两个概念对于很多学习编程的人来说可能都不明白,或者可以说无法具体理解的,包括我也是,之前曾经查过相关资料,可是今天想想又有点模糊了,于是重新去理解了下,结果发现了下面这份资料,感觉不错,至少举例来说明比较,会让人比较容易理解

以下是转载内容
----------------------------------------------------------------------------------------------------------------------

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 



面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 



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



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



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



功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。 



再比如我要把这个五子棋游戏改为围棋游戏,如果你是面向过程设计,那么五子棋的规则就分布在了你的程序的每一个角落,要改动还不如重写。但是如果你当初就是面向对象的设计,那么你只用改动规则对象就可以了,五子棋和围棋的区别不就是规则吗?(当然棋盘大小好像也不一样,但是你会觉得这是一个难题吗?直接在棋盘对象中进行一番小改动就可以了。)而下棋的大致步骤从面向对象的角度来看没有任何变化。 



当然,要达到改动只是局部的需要设计的人有足够的经验,使用对象不能保证你的程序就是面向对象,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,这样设计出来的所谓面向对象的程序很难有良好的可移植性和可扩展性。

分享到:
评论

相关推荐

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较 软件开发历程与架构演进 软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,这一进程不仅反映了编程技术的不断进步,更是软件工程...

    面向过程与面向对象区别

    面向过程与面向对象区别 面向过程和面向对象是两种不同的软件设计方法,它们之间的区别是非常重要的。在设计软件时,选择合适的方法对于软件的质量和可维护性有着重要影响。 面向过程是一种-old school-的设计方法...

    面向对象VS面向过程

    ### 面向对象与面向过程编程:对比与分析 #### 一、引言 在计算机科学领域,程序设计范式是定义如何构建和组织软件系统的基础。两种主要的编程范式包括面向对象编程(Object-Oriented Programming,简称OOP)与...

    面向对象与面向过程的程序设计方法比较.pdf

    根据给定文件的信息,本文将深入探讨面向对象与面向过程这两种程序设计方法,并对比分析两者的特点及适用场景。 ### 面向过程的程序设计 面向过程的程序设计方法是传统编程模式的基础,它强调按照一定的顺序来组织...

    面向对象和面向过程的区别

    ### 面向对象与面向过程的区别 #### 一、概念理解 - **面向过程**:这是一种编程思想,强调按照程序执行的过程来组织代码。它更注重于算法和步骤的实现,通过一系列有序的指令来完成任务。面向过程的思想在早期...

    从PHP看面向对象和面向过程的优缺点评比

    ### 从PHP视角探讨面向对象与面向过程编程的优缺点 #### 一、引言 在软件开发领域,编程范式的选择对项目的成功至关重要。PHP作为一种广泛应用的脚本语言,在Web开发领域尤其受到青睐。本文将从PHP的角度出发,...

    面向对象思想与面向过程思想比较

    总结来说,面向过程思想更适合简单的、线性的任务,而面向对象思想更适用于复杂、模块化的项目,能够更好地应对需求变化和代码扩展。在实际编程中,开发者通常会结合这两种思想,利用面向过程的简洁性和面向对象的...

    面向对象的程序设计语言与面向过程的程序设计语言.docx

    面向对象的程序设计语言与面向过程的程序设计语言是两种主要的编程范式,它们各自具有独特的设计理念和方法。在编程领域,理解这两种语言的区别对于编写高效、可维护的代码至关重要。 面向过程的编程(Procedural ...

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

    例如,对于一些简单的任务或者需要高效执行的代码,面向过程可能会比面向对象更有优势。 总的来说,选择面向过程还是面向对象取决于项目的需求、规模以及团队的开发习惯。对于初学者,理解这两种编程范式的区别并...

    面向对象设计方法与面向过程设计方法比较

    面向对象设计方法(OOD)与面向过程设计方法(POP)是软件开发中两种不同的程序设计范式。面向过程设计方法是一种早期的编程范式,以算法为核心,将问题分解为可直接操作的过程或函数,从而完成任务。而面向对象设计...

    C++代码从面向过程到面向对象一应俱全

    《C++代码从面向过程到面向对象一应俱全》 C++是一种强大的、通用的编程语言,它在计算机科学领域扮演着至关重要的角色。它不仅继承了C语言的高效和灵活性,还引入了面向对象编程(OOP)的概念,使得程序设计更加...

    面向对象分析与设计(第3版).pdf

    ### 面向对象分析与设计(第3版) #### 知识点概览 《面向对象分析与设计(第3版)》是一本全面介绍面向对象方法论的经典著作,由Grady Booch、Robert A. Maksimchuk、Michael W. Engle、Bobbi J. Young、Jim ...

    面向对象编程与非面向对象编程

    面向对象编程(Object-Oriented Programming,简称OOP)与非面向对象编程是两种不同的编程范式,它们在软件开发中的应用和设计理念有着显著的区别。本文将深入探讨这两种编程范式的概念、特点及其在实际软件工程中的...

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较.pdf

    【面向过程、面向对象、面向组件、面向服务软件架构的分析与比较】 软件架构是软件开发中的核心概念,它决定了软件系统的结构、组织和交互方式。随着技术的不断发展,软件架构经历了从面向过程到面向对象,再到面向...

    JavaScript面向对象实现简单工厂模式

    JavaScript面向对象实现简单工厂模式是一种常见的设计模式,它在软件工程中被广泛应用于创建对象的场景。简单工厂模式的核心思想是将对象的创建过程抽象出来,由一个专门的工厂类负责,使得客户端代码无需关心具体...

    C#基于面向对象的计算器源代码,学习面向对象的好资料

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序设计中的实体(如数据和操作)封装在独立的对象中,强调数据的表示和操作的结合。C#是一种支持OOP的强大语言,非常适合用来学习和...

    C#面向对象程序设计简单的计算器.zip

    在本项目中,"C#面向对象程序设计简单的计算器.zip"是一个包含了一个基本的C#计算器应用程序的压缩包。这个程序展示了面向对象编程的基本概念,使用C#语言实现加法、减法、乘法和除法操作。让我们深入探讨一下其中...

Global site tag (gtag.js) - Google Analytics