黑马程序员技术交流社区

标题: 请简述下“面向对象”(不要复制粘贴,只说说自己的看法) [打印本页]

作者: 段朝骞    时间: 2013-10-22 22:53
标题: 请简述下“面向对象”(不要复制粘贴,只说说自己的看法)
本帖最后由 段朝骞 于 2013-10-23 15:05 编辑

如题,请简述下面向对象,不要复制粘贴。。。
作者: 杨靖    时间: 2013-10-22 23:43
面向对象要相对于面向过程来说吧。
我觉得程序就像在拍戏,面向过程是导演一步一步的按照故事的发展告诉故事的角色该干什么
而面向对象就是导演给每个演员发放一份属于各自角色的剧本(属性,方法等),然后让他们根据自己的剧本来演(方法调用等)。
鄙人愚见,有理解有误的地方还望大家纠正

作者: 孙健    时间: 2013-10-23 00:14
前者是抽象的没有实体,对象则是事实存在的实体,
比如说你买了台车,你朋友问你:买的是什么"车",
你说:买的是"奥迪车"
你朋友又问你:买的是哪款"奥迪"
你说:奥迪A8
你朋友在问你奥迪A8是什么颜色的?
你回答是:奥迪A8是黑色的
在这个过程中,车是抽象的,车有很多种,大众,宝马,奥迪,奔驰;而你指定的实体是奥迪,
奥迪对于"车"这个类来说就是一个实体的对象
然而当你朋友在问你奥迪是那一款的时候,奥迪又是抽象的了,因为奥迪也有很多种:A8,A6,A4,这时你指定的实体是奥迪A8
奥迪A8对于"奥迪"类来说也是一个实体的对象
当你朋友在问你什么颜色,奥迪A8有变成抽象了,因为有很多种颜色,红,白,黑....等等。你指定的实体是黑色的奥迪A8
黑色的奥迪A8对于"奥迪A8"这个类来说又是一个实体的对象
所以一切都可以看做面向对象,看你拿什么来做参照物,
但你不能说你买了台轿车(抽象的)来拿运煤的货车来(实体)作为实体对象,不属于同一类物质,但都是属于车类下的,都可以做为车类下的实例对象
作者: 姚团结    时间: 2013-10-23 00:40
万物皆对象,面向对象就是把属性(特征)、方法(动作)封装在对象中,通过对对象的组合完成程序动作
作者: 追溯客    时间: 2013-10-23 09:20
如问题被解决,请及时把分类设为"已解决",黑马有你更精彩!

作者: 茹化肖    时间: 2013-10-23 09:27
我觉得在解释这个面向对象操作的时候,我们最长举例的就是人。在每一本教程里都会提到,人。这个名词 ,这个概念。就是 是个对象。 你 ,我 他。或者她。这些具体的人,小明。小红。这些就是被实例化的对象、
我们以前说面向过程和面向对象 区别在哪,面向过程。好比泡面。煮水,拆开泡面,放进碗里。水开,倒水。盖盖子。吃泡面。这一系列的步骤完成了这件事。但是,我们用面向对象的观念来看,
其实这里有两个 对象。我们只能泡面么、我们其实还可以煮着吃,吵着吃,焖面也可以。
人作为对象的例子,我们容易理解。在于交互,人和人之间的交互,任何其他物体之间的交互。
面,水,锅,同样都可以作为对象。来相互之间进行交互。而这些交互动作,就是我们给写的方法。锅的大小,水的温度。面的重量。就是他们的属性。
比如,面被拆开。用到才开方法。
锅说,快到锅里来。然后调用锅的方法,面进去了。
水说,我也到锅里去。调用水的方法,水也到锅里去了。
锅调用 煮的方法。煮面。
水的温度改变,这就是水的属性么。等等等。
由此我们可以简单的认识到,世界上的任何一个物体。都是对象。
我们把相通但又不尽相通的对象抽象出来,就是这个对象的类。
锅是个类。可以实例化 平底锅,电饭锅,炒菜锅这些对象。
方便面是个类。可以实例化。酸菜面,鸡蛋面。大骨面这些对象。

我个人觉得,面向对象和面向过程主要的区别。在于 交互。不再是按部就班的执行,而是靠各自的行为(也即是封装好的方法,)进行交互,这样子才像现实世界。
作者: ˋ初°见    时间: 2013-10-23 13:02
面向对象就是找个对象帮你做事,例如你冻东西,那么就需要找冰箱,这时冰箱就是对象;你太热了想吹空调,空调就是对象。在C#中,类就是模型,对象就是按照这个模型创建一个对象。
作者: 迷你卡卡    时间: 2013-10-23 15:10
其实,面向对象就是一种编程的思想,是对比面向过程相对而言的,可能有些地方使用面向过程一行一行敲也能实现,但是为了更高效
的完成需求,面向对象会实现很多的代码重用,并且在后期维护,扩展的时候更方便。
面向对象就是把客观存在的事物他们的共有的特点和行为抽象成属性和方法,并将这些属性和方法写在一个类中,这样一个类就构成了
,而具有这些属性和方法的具体每一个事物就是这个类的一个实例对象,利用在程序中类和对象的特点,就可以实现很多方便功能
比如,类的继承能让在子类不用再重复写这些共有的属性和方法,类的封装也能实现很多面向过程实现起来比较麻烦的,比如某个方法要求传递的参数只有一个,但是按照原来你写的代码却发现必须传递两个参数进去,这时就可以把这两个参数写在一个类中,构成类的属性,然后这个类的实例就可以当成一个参数传递到那个方法中,利用抽象类抽象方法重写还可以实现多台等
总之,我的理解就是面向对象是一种编程的思想。有这种思想的指导可以写出更高效,扩展性更好的代码!
希望帮到你理解,以上都是小弟的刍议,不对请雅正!

作者: 追溯客    时间: 2013-10-25 12:06

同学给你加分了!好好学习!蔡蔡和叶叶在黑马等着你!黑马有你更精彩!快点为了当土豪努力吧!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2