有问题就有答案
Q1:面向对象的语言和面向过程有什么区别啊
一、编程思想不同1、面向过程:是一种以过程为中心的编程思想。都是以什么正在发生为主要目标进行编程。2、面向对象语言:是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。二、特点不同1、面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。2、面向对象语言:识认性,系统中的基本构件可识认为一组可识别的离散对象,对象具有唯一的静态类型和多个可能的动态类型,在基本层次关系的不同类中共享数据和操作。三、优势不同1、面向过程:不支持丰富的“面向对象”特性(比如继承、多态),并且不允许混合持久化状态和域逻辑。2、面向对象语言:在内部被表示为一个指向一组属性的指针。任何对这个对象的操作都会经过这个指针操作对象的属性和方法。参考资料来源:百度百科-面向对象语言参考资料来源:百度百科-面向过程
Q2:面向过程与面向对象有什么相同点和不同点
2009-04-11,22:41 (1)先说面向过程和面向对象,这是两种思想,都可以达到用程序完成一件事情的能力,但是思维方式不同。面向过程就是分析解决问题所需的步骤,然后用函数一步步实现这些步骤。使用的时候可以一个个依次调用。算法第一方法第二。面向对象是将构成问题的事务分解成各种对象。构建对象的目的不是完成一个步骤,而是描述解决问题的整个步骤中某个事物的行为。方法第一,算法第二。比如五子棋中,面向过程的设计思想是先分析问题的步骤:1。开始游戏;2.黑子先走;3.画一幅画;4.判断输赢;5.转向白子;6.画一幅画;7.判断输赢;8.返回步骤2和9。输出最终结果。通过用单独的功能实现上述每个步骤,问题将得到解决。而面向对象设计是从另一种思维方式去解决问题。整个五子棋可以分为1。黑白两面,行为完全一样;2.棋盘系统,负责画图;3.规则系统,负责判断违规、输赢等。第一类对象(玩家对象)负责接受用户输入,并通知第二类对象(棋盘对象)棋子布局的变化。当棋盘对象接收到棋子的I变化时,负责在屏幕上显示变化,同时使用第三类对象(规则系统)判断棋局。很明显,面向对象是用函数来划分问题,而不是用步骤。也是一个绘图游戏,在面向过程的设计中分散在很多步骤中,很可能会出现不同的绘图版本,因为设计师通常会考虑实际情况进行各种简化。在面向对象设计中,绘图只能出现在棋盘对象中,从而保证了绘图的统一性。功能的统一保证了面向对象设计的可扩展性。比如我想增加后悔棋的功能。如果我想改变面向过程的设计,那么从输入到判断到显示的一系列步骤都要改变,甚至步骤之间的顺序也要大规模调整。如果是面向对象的,只需要改变棋盘对象即可。棋盘系统保存了黑白两色的棋谱,可以简单追溯,而显示和规则判断则无需考虑。同时,对象函数的整个调用顺序没有变化,变化只是局部的。比如我想把这个五子棋游戏改成围棋游戏。如果你是面向过程的,五子棋的规则分布在你程序的每一个角落,所以如果你想改变它,最好重写它。但是如果你一开始是一个面向对象的设计,你只需要改变规则对象。五子棋和围棋的区别不就是规矩吗?当然,棋盘的大小看似不同,但你觉得这是个难题吗?直接在棋盘对象上做个小改动就可以了。)并且从面向对象的角度来看,下棋的一般步骤不会改变。当然,要实现仅仅部分的改变,需要设计者有足够的经验,对象的使用不能保证你的程序是面向对象的。初学者或者很差的程序员很可能用虚拟的面向对象来面对过程的现实,这样设计出来的所谓面向对象的程序很难有很好的可移植性和可扩展性。(2)面向过程是一种直接的编程方法,按照编程语言的思维来考虑问题。尤其是C语言这种过程语言,通过顺序执行一组语句来实现一个功能,这些语句的执行过程就是整个程序。不同的语言有不同的过程来解决同一个问题。面向对象是一种抽象程度较高的编程方法。它关注的是问题本身,而不是语言。它的目标是使模块更加抽象和可重用。面向对象的目标是可重用性。
面向过程和面向对象的区别并没有人们想象的那么大,面向对象的大部分思想都可以在面向过程中体现出来,但是面向过程最大的问题(也许是唯一的固有缺陷)就是随着系统的扩展,面向过程将无法应对,最终会导致系统的崩溃。还有,C,C,Java都是语言,不管是面向对象的都没有区别。c也可以写面向对象的程序,看看Linux的内核代码就知道了。c、Java可以编写面向过程的程序,它们之所以被称为面向对象编程语言,是因为它们提供的语言特性更容易实现面向对象的编程方法,而不是说它们只能做面向对象的编程。此外,这并不意味着面向对象比面向过程更好。面向对象的方法在许多领域是不可能实现的,比如硬件编程和嵌入式编程,这些领域对实时性和效率都有很高的要求。面向对象的主要领域仍然用于大型和复杂的软件系统。(3)面向对象的数据封装和数据处理方法;在面向过程中,数据和数据处理方法是分开的。(4)面向过程是对每个过程进行编程,而面向对象是将每个对象分开,然后表达它们之间的关系(成员函数)。(5)过程导向的关键是功能、过程、数据和算法。c是代表。面向对象的关键是继承、重载和多态。以Java、C和C#为代表。(6)简单来说,对象是类,进程是序列、选择、循环、数组和函数。面向对象很难学。我学会了面向过程,也就是为对象打基础。类以函数的方式封装了类中的所有序列、选择、循环和数组。面向对象程序由n个类组成。
Q3:面向对象与面向过程有什么本质区别?
有人这么形容OP和OO的不同:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低。蛋炒饭将“蛋”“饭”搅和在一起,想换“蛋”“饭”中任何一种都很困难,耦合度很高,以至于“可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。面向过程(OP)和面向对象(OO)是不是就是指编码的两种方式呢?不是!你拿到了一个用户需求,比如有人要找你编个软件,你是不是需要经过需求分析,然后进行总体/详细设计,最后编码,才能最终写出软件,交付给用户。这个过程是符合人类基本行为方式的:先想做什么,再想如何去做,最后才是做事情。有的同学说:“我没按照你说的步骤做啊,我是直接编码的”。其实,你一定会经历了这三个阶段,只不过你潜意识里没有分得那么清楚。对于拿到需求就编码的人,可能编着编着,又得倒回去重新琢磨,还是免不了这些过程,以OO为例,对应于软件开发的过程,OO衍生出3个概念:OOA、OOD和OOP。采用面向对象进行分析的方式称为OOA,采用面向对象进行设计的方式称为OOD,采用面向对象进行编码的方式称为OOP。面向过程(OP)和面向对象(OO)本质的区别在于分析方式的不同,最终导致了编码方式的不同。
Q4:请问面向对象和面向过程的区别有哪些?
面向过程是具体的东西,而且面向过程是面向对象的基础。面向对象可以说是面向过程的抽象,比如汽车有开车,加减速和刹车,关于汽车的操作有好多,每一个都需要一个具体的过程来实现,把这些过程抽象的总结起来就可以形成一个类,这个类包括的汽车所有的东西,所有的操作。总结来说就是,面向过程是一种基础的方法,它考虑的是实际的实现,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法。因此在模块化编程的时候才会有“低耦合,高内聚”的思想来提高效率。面向对象的方法主要是把事物给对象化,包括其属性和行为。当程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。但是,面向对象编程更贴近实际生活的思想。面向过程是具体化的,流程化的。解决一个问题,需要一步一步分析需要怎样,然后需要怎样,一步一步实现的。面向对象是模型化的,抽象出一个类,这是一个封闭的环境,在这个环境中有数据有解决问题的方法,你如果需要什么功能直接使用就可以了,至于是怎么实现的,你不用知道。从代码层面来看,面向对象和面向过程的主要区别就是数据是单独存储还是与操作存储在一起。在类的里边,实现具体的功能还是需要流程化、具体化的代码去实现的,在类里还是需要具体的算法来实现的。总结来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象。
Q5:面向对象"和"面向过程"有什么区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。C语言可以说是面向过程的,C++、JAVA可以说是面向对象的语言 后者简单易学一点
Q6:面向对象和面向过程的区别有哪些
掌握面向对象的难点在于思想的转化。我们通常习惯于思考解决问题,而不是把问题抽象成对象再解决。我给大家举两个简单的例子,希望能帮助大家改变思维:第一个简单的例子:(写一个开车的方法)面向过程的编程:写一个方法,void drive car();面向对象编程:将一个car作为一个对象,提取所有car对象的共性,设计一个类car,其中有一个方法void drive(),用这个类Car实例化一个具体的对象Car,调用:car.drive()。第二个简单的例子:问题:求矩形的周长和面积。用面向过程编程的方式思考:1。确定矩形周长和面积的算法。2.写两个方法(函数)分别计算矩形的周长和面积。3.求周长(函数)的方法和求面积(函数)的方法需要两个参数,即矩形的长度和宽度。面向过程的编程代码:class rectangle { static int period(int length,int width){ return 2 *(length width));}静态int区域(int长度,int宽度){ return length * width}公共静态void main(String[]args){ system . out . println(" period=" rectangle . period(5,4));System.out.println("area="矩形. area(5,4));}}面向对象编程:问题:求矩形的周长和面积。用面向对象编程的方式思考:1。矩形可以被视为矩形对象。2.矩形对象有两种状态(长度和宽度)和两种行为(周长和面积)。3.提取所有矩形的共性,设计一个矩形类。4.特定矩形对象的周长和面积可以通过矩形对象的行为来计算。(可以尝试自己编译程序!)