`
newleague
  • 浏览: 1500725 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

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

 
阅读更多

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

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


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

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

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

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

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

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

分享到:
评论

相关推荐

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

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

    面向过程与面向对象区别

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

    面向对象VS面向过程

    与面向对象编程相比,面向过程编程较少关注数据的封装和抽象,更多地关注如何通过算法解决问题。 面向过程编程的核心在于清晰地定义问题解决的步骤,其特点包括: - **结构化**:程序被划分为较小的、逻辑上独立的...

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

    2. **执行效率相对较低**:由于类和对象的存在,面向对象编程在某些场景下的运行效率可能不如面向过程编程。 3. **设计复杂度增加**:为了充分利用面向对象的优势,需要更精心地设计类和对象之间的关系。 #### 四、...

    面向对象软件开发过程

    面向对象软件开发过程是当前主要应用的一种技术,它和面向过程形成了鲜明的对比。面向对象的软件开发就是将面向对象的思想应用于软件开发过程中的各个阶段,其主要过程为:首先从实际问题触发,用面向对象的方法分析...

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

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

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

    面向过程和面向对象是两种不同的编程范式,它们在解决问题的方式和代码结构上有显著的差异。面向过程编程(Procedure-Oriented Programming)是一种基于步骤的编程思维,它侧重于将一个问题分解为一系列有序的函数或...

    面向对象的思考过程(英文版).zip

    这个压缩包文件《面向对象的思考过程(英文版)》很可能提供了一个深入探讨面向对象设计原则、概念和技术的详细指南。 1. **对象与类**:对象是OOP中的核心单元,它包含属性(也称为成员变量或字段)和方法(成员函数...

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

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

    面向对象 面向对象 面向对象

    7. **面向对象与面向过程对比**:面向对象编程与传统的面向过程编程相比,更注重数据和操作数据的方式,而非步骤的执行顺序。面向对象强调模块化和组件化,更适合处理复杂系统的构建。 8. **案例分析**:在实际开发...

    面向对象分析与设计UML2.0(PDF)

    详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了...

    Java用面向对象和面向过程方法解求100内素数并输出素数之和

    在给定的文件中,通过两种不同的编程范式——面向对象和面向过程,来解决一个经典问题:找出100以内的所有素数,并计算这些素数的总和。这不仅是一次对数学原理的应用,也是对编程语言特性和设计模式的深度探讨。 #...

    IBM面向对象软件开发和过程

    在这个IBM developerworks的教程系列中,我们可以期待深入探讨面向对象软件开发的核心概念和实践过程。 首先,面向对象编程(OOP)的基础是类和对象。类是创建对象的模板,它定义了对象的属性(数据成员)和行为...

    投票系统(面向过程与面向对象)PHP

    这个系统可以采用两种不同的编程范式:面向过程和面向对象。面向过程编程是通过步骤和函数来组织代码,而面向对象编程则是通过类和对象来构建程序。对于初学者来说,理解这两种方法的差异和应用场景是非常重要的。 ...

    面向对象和面向过程的区别,类和对象的概念区别.docx

    面向对象编程(Object-Oriented Programming,OOP)和面向过程编程(Procedural Programming)是两种主要的编程范式,它们在解决问题的方式上有着显著的区别。 面向过程编程是一种自下而上的编程方式,注重的是程序...

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

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

    面向对象分析与设计1

    国外计算机科学经典教材-面向对象分析与设计(UML 2.0版) 简介:本书详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。 本书使用最常见的技术和方法,通过一个贯穿全书的...

Global site tag (gtag.js) - Google Analytics