`
zb0116
  • 浏览: 6968 次
  • 性别: Icon_minigender_2
  • 来自: 鞍山
最近访客 更多访客>>
社区版块
存档分类
最新评论

面向对象与面向过程

 
阅读更多

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



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



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



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



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



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



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



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

相关推荐

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

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

    基于UML的面向对象与面向过程分析与设计.doc

    【结论】UML为面向对象与面向过程的分析和设计提供了统一的表达方式,无论是面向对象还是面向过程,都可以通过UML进行有效的建模和可视化,从而更好地理解和实现复杂系统的开发需求。理解和掌握UML,对于提升软件...

    第十一天 01面向对象与面向过程【千锋Python人工智能学院】1

    面向对象与面向过程01.面向过程编程02. 面向对象基本概念千 锋 Python人 工 智 能 学 院面向对象编程的关注点在于谁来做相比较函数,面向对象是更大的

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

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

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

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

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

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

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

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

    面向过程与面向对象区别

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

    面向对象VS面向过程

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

    浅谈面向对象程序设计

    本文将深入探讨面向对象程序设计的核心概念、特点以及它与面向过程编程的主要区别。 ### 一、面向对象程序设计的概念 面向对象的程序设计方法强调的是自底向上的功能综合,其核心思想是通过识别和建模现实世界中的...

    java面向对象编程课堂笔记

    面向对象与面向过程编程的主要区别在于,面向过程编程以过程和步骤为中心,而面向对象编程则以对象为中心。在面向过程编程中,我们使用函数来处理问题,而在面向对象编程中,我们创建类并实例化对象,通过对象之间的...

    java面向对象精讲

    #### 一、面向对象与面向过程的区别 面向对象与面向过程是两种不同的编程思想。在面向过程的编程中,程序的基本组成单元是函数,程序员主要关注的是如何通过一系列函数实现特定的功能。而在面向对象编程中,程序的...

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

    【描述】:“投票系统(面向过程与面向对象)PHP,PHP系统的初学者”意味着这个项目特别适合那些正在学习PHP并希望了解如何创建投票系统的初学者。通过实践这样的项目,学习者可以深入理解PHP的基础知识,同时掌握...

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

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

    面向对象软件开发过程

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

Global site tag (gtag.js) - Google Analytics