`

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

阅读更多

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

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

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



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



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



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



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



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



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



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

分享到:
评论

相关推荐

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

    面向对象的程序设计语言与面向过程的程序设计语言全文共3页,当前为第1页。面向对象的程序设计语言与面向过程的程序设计语言全文共3页,当前为第1页。面向对象的程序设计语言与面向过程的程序设计语言 面向对象的...

    Java零基础-面向对象和面向过程.md

    建议通过编写和执行一些简单的示例代码,加深对面向对象编程和面向过程编程的理解。 如有疑问,可以参考Java官方文档或搜索相关资料,进一步扩展学习。 推荐深入学习和实践面向对象编程的概念、原则和设计模式,以...

    面向对象分析与设计练习题

    目前常用的面向过程的方法,面向对象的方法,面向结构的方法,形式化方法等软件开发方法各有什么特点? 10. 面向对象系统开发过程 在面向对象的系统开发过程中,每个阶段需要建造的模型各有什么作用? 11. UML ...

    Java面向对象.docx

    面向过程与面向对象之间的区别: 都是思想,思维方式 面向过程:"我该如何实现?" 然后一步一步完成就可以了 面向对象:"我该招谁来完成?"只关注对象,不关注实现步骤 面向对象是依托于面向过程的 面向...

    java零钱通简单项目 面向过程 面向对象 两种代码

    通过简单java零钱通项目 理解面向过程和面向对象的区别

    JAVA面向对象详细资料

    2 面向对象语言与面向过程语言的区别 7 3 面向对象?什么对象? 8 4 什么是类? 9 5 如何创建一个类Class? 10 6 如何使用类创建对象 10 7 引用与实例 11 8 实例属性与实例方法 11 9 实例属性与实例方法的使用 12 10...

    面向对象的思维过程

    本文是关于面向对象思维过程系列文章的第一部分,选择这个主题作为书籍或专栏的标题是一个重大的决定,做出这个选择并不简单,因为已经有很多面向对象主题的好书和文章了,包括面向对象分析、面向对象设计、面向对象...

    JAVA面向过程的程序设计

    l –面向对象问题求解关心的不仅仅是孤立的单个过程,而是孕育所有这些过程的母体系统 –它能够用计算机逻辑来模拟、描述系统本身,包括系统的组成,系统的各种可能状态,以及系统中可能产生的各种过程与过程引起的...

    《C--面向对象程序设计》习题与上机解答-提交稿-陈维兴

    面向过程程序设计的主要特征是:程序由过程定义和过程调用组成(所谓过程,简单地说,就是程序执行某项操作的一段代码,函数是最常用的过程。),从这个意义出发, 基于面向过程的程序可以用以下的公式来表述: 程序 = ...

    面向对象的设计过程(有案例)

    IBM提供的面向过程分析设计实例,简单明了的设计方法过程描述,非常实用。

    Java语言程序设计(第二版)\第04章 面向对象编程.ppt

    面向对象编程基础知识 面向对象编程(OOP)是一种全新的编程理念,它将软件模型化为对象的集合,每个对象都具有自己的状态和行为。 Java语言作为完全面向对象编程语言,对OOP理念的支持力度非常大。 1. 对象基础...

    Android-一个简单的面向对象的Android的轻量级数据库框架

    一个简单的面向对象的轻量级数据库框架,简化了Android开发中操作数据库的繁琐过程,将面向过程的业务逻辑封装,完全的零Sql语句。

    面向对象与UML资料

    面向对象与UML 第一部分 软件开发活动 7 第一章 结构化的分析与设计 8 第一节 模型图 8 业务流程图 8 数据流图 11 功能结构图 12 功能树 13 网络结构图 14 程序流程图 15 第二节 需求分析 15 需求分析的任务 15 需求...

    《Java练习题》面向对象

    面向对象是相对于面向过程来说的,面向过程是一种以“过程”为中心的编程思想,分析出解决问题所需的步骤,然后用函数把这些步骤一步步的实现,使用的时候一个个依次调用就好。而面向对象,是一种以“对象”为中心的...

    UML建模-面向对象设计

    《UML建模-面向对象设计》系列文章描述了常见的一些UML图,主要包括了用例图(Use Case Diagram)、类图(Class Diagram)、活动图(Activity Diagram)、时序图(Sequence Diagram)、状态图(Statechart Machine ...

    Python面向对象思想与应用入门教程【类与对象】

    本文实例讲述了Python面向对象思想与应用。分享给大家供大家参考,具体如下: 面向对象思想 1、面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点。 2、面向对象和面向过程的区别 面向过程 在生活中: 它...

    C语言中的面向对象编程技术.pp(中文翻译版)

    OOPC是指OOP(Object-Oriented Programming)与C语言的结合,它是一个面向对象C语言编程框架。它是一套C语言的宏,定义了OOP概念的关键字,借助于这一套宏,实现面向对象的特性,如类、对象、继承、接口、多态、消息等...

    《C#完全自学手册电子图书》\第3章 C# 3.0面向对象程序设计

    传统的程序语言都是面向过程的,主要由“变量”和“过程”组成,变量就像设计编写应用软件的基本元件,而过程则是将变量元件贯穿起来的程序,所以传统程序的编写程序的重心总是放在过程的逻辑和算法上。后来发现单独...

    面向对象的分析方法---学习

    对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

Global site tag (gtag.js) - Google Analytics