A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我对面向对象的理解:首先要理解什么是类才能搞懂什么是对象。类就是通过抽取事物的特点把一群具体的东西抽象化。而对象则反之这个过程,在抽象化的群体中给其中之一注入灵魂,使他成为群体中一个具体的个体,我们知道名,知道姓。好比我和我的同学都是学生,我们都要上课,我们都是20多岁,学生是一个类,它包含了一群这样人的群体,所以它没有具体的名字,因为它代表了一类人,但是它有这一类人的特点,共性。而我则是其中的一个对象,是这群人中的一个具体的人。这就是对象

评分

参与人数 1技术分 +1 收起 理由
Micro + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 jackwang 于 2015-3-19 20:27 编辑

面向对象:
    字面意思,将视角放在对象上,开发,解决问题,分析问题,思考问题,都站在对象的角度上考虑。
    我觉得和面向过程对比,更能体会出面向对象的思想。面向过程,就是解决问题时,着眼于过程。将一个大问题分解成一个个的过程来解决。而面向对象的思想告诉我们要分析出问题中有那些对象,依靠对象提供的功能和属性去解决问题,而不是依靠过程(即函数)去解决问题。
     如果你一直用面向过程的思想解决问题,你会发现,实际上是你在一个人控制着,完成着整个程序的流程。
     而用面向对象的思想,每个被创建出来的对象都相当于一个具有一定功能的小人,这些小助手可以听你的
   指挥,并完成你交给它的任务,从而使得你开发起来,尤其对于解决大型复杂问题感觉容易的多,因为你有了助手,只需要下达命令就可以了,至于如何实现的,对象来帮你完成,面向过程就无法做到这一点,只能是下达命令到方法(过程),而一个方法的独立性往往比较差,和其他方法的耦合程度有时很高,最后形成一团纠缠在一起的乱面条,正是无法将他们相对屏蔽封装起来,才要出现面向对象的思想。也就有了类,封装的特性。
      所以面向对象的思想要求我们在描述事物时,要站在事物的角度上,想想自己是该事物,哪些事情应该是我来做或者我来做最方便、最合适的,哪些事情是我独自就可以解决的,哪些功能是我可以对外提供的。要将事物看成一个具有生命的独立个体来去描述事物。所以毕老师说的经典例子:如何画圆,圆最清楚。因为园中有描述一个圆实例的半径的字段,有圆心位置字段,甚至有圆的颜色字段。
     至于继承、多态,这些都是在封装之后,为了描述类之间的关系,对象之间的特性而出现的技术。最核心本质的还是对事物的描述,即类的封装、定义。而对于提高代码的复用性,可扩展性,灵活性,健壮性,这些都是在封装的基础之上。      其实面向对象中也有面向过程,面向对象中的每个对象中功能的实现就是面向过程的。实际上面向过程比较适合于我们个人平时的思维,因为平时我们就是自己干,不求人,也不指挥别人,我们是一个工程的具体施工者,是一个大楼的具体建造者。而面向对象是让我们作为领导来去解决问题,作为一个指挥者,指挥一个个的对象去解决问题,然而一个个对象的创建过程,构造过程,就又用到了面向过程,然而你只需要用面向过程创造一次这个事物就可以了,以后你只需要知道该事物所提供的功能,去指挥它就好了。不需要再考虑该事物如何构造、运转了。这其实就会降低了我们做大型复杂项目的难度了。
      另外,受上面的坛友启发,觉得应该补充这一点,类的出现,也即面向对象思想的出现,使得,我们有了抽象的事物、具体的实例个体的概念。这样的概念非常有利于开发,但是它是牺牲了一定的效率,使得数据有一定的冗余来达到便利开发的。所以,当我们熟悉了解面向对象后,会发现,面向对象的思想站在的角度是上帝的角度,面向过程的思想站在的角度人的角度。面向对象的思想更适于我们去描述这个世界,因为它给出了抽象(类)和具体(实例)的定义。


评分

参与人数 1技术分 +4 收起 理由
Micro + 4 很给力!

查看全部评分

回复 使用道具 举报
面向对象编程引入了类和对象的概念,把一些具有相同特性,包括行为和属性的事物归为一类,这一类中的个体就是属于这个类别的对象,并在此基础上产生了封装、继承和多态的概念。
封装:类中定义的属性只有类中的对象才拥有,并通过访问控制来控制外界是否能够通过对象访问其属性,类中定义的行为(即方法)也只有其对象才拥有(可使用)。通过封装可以使代码称为一个独立的块。
继承:把类再细分成多个子,这些划分出来的类不仅拥有原类中的所有属性和方法,还具有自己特有的属性和方法,原类就称为父类或超类,划分后的类称为子类,子类还可以再细分称多个类。继承可用于扩展代码。
多态:只要对象属于这个类或者其某个子类,都可以通过指向这个类的指针调用该对象的方法,即同一接口访问多个不同对象的方法。
不论封装,继承或者多态都大大提高了代码的可重用性。

评分

参与人数 1技术分 +2 收起 理由
Micro + 2 赞一个!

查看全部评分

回复 使用道具 举报
面向对象,就是通过分类,把有共同特点的生物分到一类(比如在生物学分类,植物,动物,哺乳动物......),更加符合人们的逻辑思维。用在计算机编程中,通过分类,总结共性,找出个性。用封装,继承,多态,简化问题,提高效率。

评分

参与人数 1黑马币 +3 收起 理由
Micro + 3

查看全部评分

回复 使用道具 举报
面向对象是相对于面向过程来说的,面向过程,如果需要实现某个功能的话,需要一步步具体步骤来实现这个功能,但是面向对象的话,我们只需要调用这个对象的某个方法就能实现这个功能,而这个方法具体细节如何,我们并不需要知道。一个简单的例子,我们算一个2的5次方,面向过程我们需要2*2*2*2*2一步一步才能计算出来,但是面向对象的话,我们可以用计算机,用计算机的乘方功能就能算出来。

评分

参与人数 1技术分 +1 收起 理由
Micro + 1 山寨

查看全部评分

回复 使用道具 举报
sydie 中级黑马 2015-3-20 09:57:03
66#
类别不同,所对应的功能不同。面向对象,首先要对对象按一定方式分类。

评分

参与人数 1黑马币 +2 收起 理由
Micro + 2

查看全部评分

回复 使用道具 举报
面向对象不就是你喜欢一个人,不管做朋友还是做恋人,你只关注这个人。

评分

参与人数 1黑马币 +2 收起 理由
Micro + 2

查看全部评分

回复 使用道具 举报
面向对象的好处我想从两个角度去分析,一个是对象本身,另外一个是对象的使用者。
我们可以将汽车看为一个对象,他能实现载人的功能,他内部的发动机,各种配件如何协作,如何装配,如何制动等等细节功能只有造汽车的人知道,这些功能没必要给使用汽车的人知道,这样就使的分工明确,我专心设计对象的每一个功能和细节,只要将必要的接口开放给使用者即可,如方向盘,和刹车闸,作为汽车的使用者只需关心如何通过对象接口使用对象即可,对对象内部运作原理无需担心,这样就会使得造车的专心造车,造船的专心造船,造飞机的专心造飞机,大家分工明确,互不干扰,整个团队的效率都得到了提高,最后我想说未来是面向对象的天下。

评分

参与人数 1技术分 +1 收起 理由
Micro + 1 很给力!

查看全部评分

回复 使用道具 举报
对象就是很多属性的集合体,有了这个对象,可以对这个对象进行操作,甚至其他对象也可以使用这个对象。

评分

参与人数 1黑马币 +2 收起 理由
Micro + 2 淡定

查看全部评分

回复 使用道具 举报
:D 面向对象封装是为了和别人合作、但是又不想让别人乱动代码。所以需要把一些东西封装为private。还有一点是为了提高代码的复用
:D面向对象继承、继承即可以提高代码的复用。又可以配合实现多态、我记得java的面向对象和C++的是这样的,嘻嘻、
:D至于多态、其实觉得多态的实现也是为了提高代码的复用性,方便编写和维护、、、
所以、我觉得面向对象这种技术,就是改进了编写大型软件的方式、提高了代码的复用性、比较方便维护、比较容易在开发人员之间相互合作、交流。

评分

参与人数 1技术分 +1 收起 理由
Micro + 1

查看全部评分

回复 使用道具 举报
本帖最后由 iMcG33k 于 2015-3-20 16:24 编辑

面向对象不就是把程序分成一个个人么,每个人都有都有自己会做的事情(方法)都有自己知道的知识(数据),大家也都有自己的师傅(父类)、徒弟(子类),师傅能干徒弟的事(多态),自己不会的交给别人做(代理),大家安同一标准做事情前立个规矩(接口、协议),你师父没教你的我教你了(分类),没必要给人看的东西就把它们藏到自己心里(封装)。。。

评分

参与人数 1技术分 +1 收起 理由
Micro + 1 赞一个!

查看全部评分

回复 使用道具 举报
面向对象:说高深点,就是万物皆对象,嘿嘿
说简单点,那么就有三大特征:封装、继承和多态;面向对象,就是将一系列细节和功能隐藏起来,也就是封装,作为操作者,就只需要通过封装后的对象,就可以实现功能,就好比我不知道电脑在内部结构和运作的方式,但我依然能通过这个外部所呈现的对象来获取他的功能,这样就使一切变的简单起来,当然你也要知道这个对象有哪些功能才行。
举个例子,比如小明的爸爸是木匠,小明从小跟爸爸学会了做木工,一天小明的爸爸叫小明和他一起去修房,那么这个时侯小明就是一个对象,小明爸爸作为操作者,只需要知道小明会修房,然后操作他,也就是叫上他一路去修房就行了,不需要知道小明具体会怎样动作,这就相当于小明自己封装了这些功能。等小明去修房后,小明爸爸发现小明不仅学会了自己的修房技术,而且还有自己独特的修房技术,这时,我们可以说,小明继承了爸爸的修房功能,并且还定义了自己特有的方法。有一天小明爸爸不在家,有人找他去修房,小明代替爸爸去了,一样把房修好了,那么这时就体现出多态的特点。

评分

参与人数 1技术分 +2 收起 理由
Micro + 2 很给力!

查看全部评分

回复 使用道具 举报
面向对象就是一思想。比如我去一家公司面试,老板叫主管来面试我,那么对于老板 主管就是对象,因为他有筛选他人的能力,知道谁能做这工作谁做不了。而相对于主管来说我就是对象,因为我能做那些他做不了或是不愿做的事情,这就是简单的面向对象的讲解

评分

参与人数 1黑马币 +2 收起 理由
Micro + 2

查看全部评分

回复 使用道具 举报
我的理解就是面向对象主要是和“结构化”过程相区别的把,所谓结构化就是通过算法一步步的来解决问题,像机器人一步一步走都是通过算法设计好的。而面向对象则不必那样死板,无论程序员怎么写程序,只要能满足用户的最终需要就行了,非常灵活。再来解释下对象,所谓对象就是我们所遇到的一切任何事物包括人,动物啊等。面向对象有三个最基本的特征,即:封装、继承、多态。封装很好理解就是一块整体的东西里面包含了很多小的东西,比如飞机里面的核心技术发动机,我们不知道发动机的内部构造,但我们只把它拿来用就可以了。继承就更好理解了,比如我们人类或者动物都有继承各自祖先的特征,反映到程序上来就是通用的属性和方法。多态字面意义上理解就是类别很多,比如同样的狗有不同的品种。

评分

参与人数 1技术分 +1 收起 理由
Micro + 1 很给力!

查看全部评分

回复 使用道具 举报
面向对象就是把一些本来很死的代码步骤,以及繁琐的算法,通过对象来进行层次化,创建对象很重要,对象内部的方法可以自己写,也可以使用系统的,在我们需要调用对象的时候,创建它就好了,不用管它内部如何计算,如何调用。面向对象省略了一大堆头疼的代码量,让我们轻松~~

评分

参与人数 1黑马币 +3 收起 理由
Micro + 3 淡定

查看全部评分

回复 使用道具 举报
中括号左边是方法实施者,首字母大写的就是类,一般是要去创建一个新对象,返回值一般是指针;首字母小写的是对象,一般是要做某个事情,返回一般是具体的数值。
回复 使用道具 举报
面向对象的编程思想就是把你需要解决的问题中的所有具体的东西,都看成一个对象,然后把所有具有相同性质的对象组成一个类,那些与问题无关的对象则忽略。比如你自己的班级,对于你来说,你们班就是一个班级对象。而班级中的某个具体的人,他也是一个对象。
回复 使用道具 举报
面向对象设计是从现实世界中抽象出与其相应的信息世界中的模型,以便进一步在计算机世界中模拟实现现实世界中的功能。
这需要从具体的事物中抽象,发现它们的共同特征,无外乎是状态与功能,然后定义为类,即相当于模板,具体的事物则是一个个实例。
   状态与功能分别用类的属性与类的方法来表示。
从以上可知,类的对象是现实存在的,不用去发现,而要从一个一个的实例对象中抽象,发现类。

评分

参与人数 1技术分 +1 收起 理由
Micro + 1

查看全部评分

回复 使用道具 举报
Etby 中级黑马 2015-3-21 20:06:09
79#
万物皆对象?
将各种事物的属性和功能抽象化,数据化。
然后抽取相似状态进行分析,形成不同的体系。
最后万物归根,抽象出来并且数据化,形成了类与类类型。
然后,我们就可以自顶向下,不论是任何一个事物,都可以用数据或者类来表达。
然后,就可以让我们的程序描述以及计算很多关于事物的问题。
然后就是不断的面向对象编程。
回复 使用道具 举报
caishipi 来自手机 中级黑马 2015-3-21 20:37:05
80#
面向对象,字面上的理解就是直接面对面的意思。在计算机语言这方面来说,就像C++语言,OC语言,java语言等高级语言,它们易懂且接近生活语言,也就是像面对面沟通一样。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马