面前过程 和 面向对象法优缺点 的优缺点 和 各自适合做什么?

C++面向对象和面向过程的程序设计有何区别?-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
C++面向对象和面向过程的程序设计有何区别?
来源:互联网 发表时间: 7:31:46 责任编辑:鲁晓倩字体:
为了帮助网友解决“C++面向对象和面向过程的程序设计有何区别?”相关的问题,中国学网通过互联网对“C++面向对象和面向过程的程序设计有何区别?”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:C++面向对象和面向过程的程序设计有何区别?,具体解决方案如下:解决方案1:
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。 而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。 功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。 再比如我要把这个五子棋游戏改为围棋游戏,如果你是面向过程设计,那么五子棋的规则就分布在了你的程序的每一个角落,要改动还不如重写。但是如果你当初就是面向对象的设计,那么你只用改动规则对象就可以了,五子棋和围棋的区别不就是规则吗?(当然棋盘大小好像也不一样,但是你会觉得这是一个难题吗?直接在棋盘对象中进行一番小改动就可以了。)而下棋的大致步骤从面向对象的角度来看没有任何变化。 当然,要达到改动只是局部的需要设计的人有足够的经验,使用对象不能保证你的程序就是面向对象,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,这样设计出来的所谓面向对象的程序很难有良好的可移植性和可扩展性。
解决方案2:
简单地说就是“类”
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号请问面向对象有什么好处?跟面向过程相比,有什么优越性?_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:543,053贴子:
请问面向对象有什么好处?跟面向过程相比,有什么优越性?收藏
为什么说面向对象比面向过程优越呀?还有就是在JAVA里面,面向对象的思想重要吗?刚从C语言转过来,什么都不懂坐等楼下大神回复
上海java培训,汇道IT培训「实力教学」大专以上学员,0元入学,理论+实操,120天精通!汇道专注于JAVA培训,上海java培训,名师授课,免费试听,火热报名中,赶紧申请!
这是搞笑帖吗?
我去,你竟然抢我问题,不过要是我,我就不这么问
同问:求详解面向对象与面向过程的区别
面向过程就是你形容一个人的一天的时候,具体的说出起床吃饭拉屎上班睡觉,按着顺序来。面向对象就是给了你一个人,而这个人自身具备的行为就可以包括起床吃饭拉屎上班睡觉。他可以,但是他不一定什么时候干。。。
骗经骗的一点道德都没了。
写C语言脑子里想的是汇编,用C语言把汇编写出来。
多了个隐性参数this
同求面向过程,面向对象,面向接口,面向方面解释
"面向对象"说到底也就是为了模块 封装之类的原因 降低耦合 避免一个地方要修改导致整个程序大面积修改。面向对象是一种思想,并不限于特定语言。就算用C写代码依然可以体现此思想
面向过程是你自己去买菜、洗切菜、炒菜、再端给客人、再结账收钱面向对象是 你雇佣 采购员、配菜员、大厨、收银员,最后在雇个经理把其他人管起来。而你…你只听经理的汇报而已。
所谓封装,复用,解耦神马的并非面向对象的真正意义,其只是使用面向对象自然而然获得自然收益。面向对象的意义(我以为)在于它使你在分析问题领域时能划分出清晰的问题边界与层次( hierarchy ),使你可以在同一个层次上描述问题或分解出分子问题到下一层次。每一个问题域保持足够简单,独立和易于替换(多态)。
不懂甚麼是面向过程。不过 OOP 比传统 PP 优势的地方是逻辑和数据可以一起封装起来。做小东西时这样是较慢的 - 毕竟封装也需要费功夫 - 不过写大东西时, 这些封装可以促进模组化和源码的重用, 对控制复杂度有很大帮助。虽然后来还有各种各样的编程理念,但 Object-Oriented 依然是目前最成熟的基本功夫。就大部分语言来说搞懂 OO 还是很重要的,特别是 Java。
看了一下5L的百度知道
懂了点了。
面向过程相当于造房子 先把 大体造出来 在修改对象 就是先把个个零件 画好 在拼装
这是一个很大的题目啊,建议你去看看《面向对象式软件的构造》
会解开你的疑惑
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或您的位置: >>
  一、 面向对象,这个对象到底是什么?
  这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。也有的定义为&一切都是对象&然而面向对象也不能简单的等价理解成面向任何事物编程,面对一切编程?开玩笑,呵呵。
  因此面向对象这个对象,指的是客体。所谓客体是指客观存在的对象实体和主观抽象的概念。&
  二、 为什么要面向对象?
  面向对象是为了解决系统的可维护性,可扩展性,可重用性,我们再进一步思考,面向对象为什么能解决系统的可维护性,可扩展性,可重用性?&
  面向对象产生的历史原因有下面两点:&
  1、 计算机是帮助人们解决问题的,然而计算机终究是个机器,他只会按照人所写的代码,一步一步的执行下去,最终得到了结果,因此无论程序多么的复杂,计算机总是能轻松应付。结构化编程,就是按照计算机的思维写出的代码,但是人看到这么复杂的逻辑,就无法维护和扩展了。
  2、 结构化设计是以功能为目标来设计构造应用系统,这种做法导致我们设计程序时,不得不将客体所构成的现实世界映射到由功能模块组成的解空间中,这种转换过程,背离了人们观察和解决问题的基本思路。&
  可见结构化设计在设计系统的时候,无法解决重用、维护、扩展的问题,而且会导致逻辑过于复杂,代码晦涩难懂。于是人们就想,能不能让计算机直接模拟现实的环境,用人类解决问题的思路、习惯、步骤来设计相应的应用程序?这样的程序,人们在读它的时候,会更容易理解,也不需要再把现实世界和程序世界之间来回做转换。&
  与此同时,人们发现,在现实世界中存在的客体是问题域中的主角。所谓客体是指客观存在的对象实体和主观抽象的概念,这种客体具有属性和行为,而客体是稳定的,行为是不稳定的,同时客体之间具有各种联系,因此面向客体编程,比面向行为编程,系统会更稳定。在面对频繁的需求更改时,改变的往往是行为,而客体一般不需要改变,所以我们就把行为封装起来,这样改变时候只需要改变行为即可,主架构则保持了稳定。&
  于是面向对象就产生了。&
  然而人们追求的系统可维护性,可扩展性,可重用性又是怎么在面向对象中体现出来的呢?&
  首先看看面向对象的三大特征:&
  封装:找到变化并且把它封装起来,你就可以在不影响其它部分的情况下修改或扩展被封装的变化部分,这是所有设计模式的基础,就是封装变化,因此封装的作用,就解决了程序的可扩展性。&
  继承:子类继承父类,可以继承父类的方法及属性,实现了多态以及代码的重用,因此也解决了系统的重用性和扩展性。但是继承破坏了封装,因为他是对子类开放的,修改父类会导致所有子类的改变,因此继承一定程度上又破坏了系统的可扩展性,所以继承需要慎用。只有明确的IS-A关系才能使用,同时继承在在程序开发过程中重构得到的,而不是程序设计之初就使用继承,很多面向对象开发者滥用继承,结果造成后期的代码解决不了需求的变化了。因此优先使用组合,而不是继承,是面向对象开发中一个重要的经验。&
  多态:接口的多种不同的实现方式即为多态。接口是对行为的抽象,刚才在封装提到,找到变化部分并封装起来,但是封装起来后,怎么适应接下来的变化?这正是接口的作用,接口的主要目的是为不相关的类提供通用的处理服务,我们可以想象一下。比如鸟会飞,但是超人也会飞,通过飞这个接口,我们可以让鸟和超人,都实现这个接口,这就实现了系统的可维护性,可扩展性。&
  因此面向对象能实现人们追求的系统可维护性,可扩展性,可重用性。面向对象是一种编程思想,起初,&面向对象&是专指在程序设计中采用封装、继承、多态等设计方法,但面向对象的思想已经涉及到软件开发的各个方面,比如现在细分为了面向对象的分析(OOA),面向对象的设计(OOD),面向对象的编程实现(OOP)&
  三、面向对象编程,分为几个步骤?&
  面向对象是一种思想,他让我们在分析和解决问题时,把思维和重点转向现实中的客体中来,然后通过UML工具理清这些客体之间的联系,最后用面向对象的语言实现这种客体以及客体之间的联系。它分为面向对象的分析(OOA),面向对象的设计(OOD),面向对象的编程实现(OOP)三个大的步骤。
  1、首先是分析需求,先不要思考怎么用程序实现它,先分析需求中稳定不变的客体都是些什么,这些客体之间的关系是什么。
  2、把第一步分析出来的需求,通过进一步扩充模型,变成可实现的、符合成本的、模块化的、低耦合高内聚的模型。
  3、使用面向对象的实现模型&
  四、面向过程到面向对象思维如何转变?&
  当我们习惯了面向过程编程时,发现在程序过程中到处找不到需要面向对象的地方,最主要的原因,是思维没有转变。程序员通常在拿到一个需求的时候,第一个反应就是如何实现这个需求,这是典型的面向过程的思维过程,而且很快可能就实现了它。而面向对象,面对的却是客体,第一步不是考虑如何实现需求,而是进行需求分析,就是根据需求找到其中的客体,再找到这些客体之间的联系。因此面向过程和面向对象的思维转变的关键点,就是在第一步设计,拿到需求后,一定先不要考虑如何实现它,而是通过UML建模,然后按照UML模型去实现它。这种思路的转变,可能需要个过程。&
  五、面向对象和基于对象的区别
  &面向对象&和&基于对象&都实现了&封装&的概念,但是面向对象实现了&继承和多态&,而&基于对象&没有实现这些。因此在我们进行Web开发,普通三层开发中,基本上是基于对象的实现,因为只是实现了封装,但是没有使用继承和多态。不过这也正常,Web开发,大部分功能就是简单的增删改查,中间的BLL层基本就是直接New一个DAL的实例就return了,关系数据库已经为我们做了很多工作,所以大部分的工作,就是简单读取然后显示了。因此没有复杂的需求的时候,基于过程也没什么不对,面向过程也没什么不对,实用是压倒一切的因素。
软件设计热门文章
软件设计最新文章

我要回帖

更多关于 面向对象优缺点 的文章

 

随机推荐