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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© haixian 中级黑马   /  2014-4-3 19:21  /  2867 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有人问我请谈谈你对面向对象的理解.虽然做过一段时间的开发,项目。但是我还是不知道要怎么说,你们会怎么说。。。。。。

评分

参与人数 1黑马币 +3 收起 理由
朱神必 + 3

查看全部评分

6 个回复

倒序浏览
先谈谈我对学习技术的看法:我认为所谓技术使我们用来表达自己看法的一种手段,就像画笔至于画家,厨具之于厨师

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 满兴旺 于 2014-4-3 19:59 编辑

1,先谈谈我对学习技术的看法:我认为所谓技术使我们用来表达自己看法的一种手段,就像画笔之于画家,厨具之于厨师,所以一个好的程序员应该是先有看法,见解,态度,后用技术表现出来,举例来说,为什么会有facebook,最初是由于扎克伯格对于社交自己的理解(在《社交网络》这部电影中,解释是哈佛大学的GG对于校外MM的吸引力:funk:)而在百度百科上有这么一条:通过6个人你可以认识世界上任何一个人。
2,数学是解释现实世界的强大工具,比如谷歌的搜索算法
3,所以程序员的世界观应该是这样  哲学(世界观)--》数学---》技术
4,回归正题--》面向对象:面向对象的基本哲学是认为世界是有各种各样具有自己的运动规律和内部状态的对象组成的不同对象之间的相互作用(继承。。)和通讯构成了完整的世界。因此人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互作用来反应世界。这就是面向对象。而毕老师说面向对象是一种编程思想,应该就是这么理解吧。
5,没想出来。。。欢迎共同讨论,不喜勿喷:lol

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
满兴旺 发表于 2014-4-3 19:52
1,先谈谈我对学习技术的看法:我认为所谓技术使我们用来表达自己看法的一种手段,就像画笔之于画家,厨具 ...

不错啊,
回复 使用道具 举报
首先程序的编写是为了将物理世界中的信息抽象到程序世界(抽象世界)中。物理世界和程序世界中的组成部分是一对一的关系。

    物理世界是由各个“实体”组成的,当然这个实体就对应了程序世界中的“对象”,我们为了理解该实体会在物理世界中将其泛化为“概念”,概念是实体的一个集合,所用的方法就是高中数学中曾经学过的两种方法(1.列举法2.描述法),列举法对于可以列举的实体是可行的,例如说列举“情侣”,如果是狭义的,可以用情侣={谢霆锋,张柏芝}列举,如果是广义的,可以用情侣={a|a是世界上所以正在恋爱中的两个人},而程序中我们要实现这种物理世界,要先将“概念”这个集合抽象成为程序中的“类”这个集合,而列举法定义一种集合就相当于程序中的“枚举”类型,有了“类”这种虚拟意义上的概念,我们就可以将其实例化为虚拟的“实体”,也就是“对象”了,实体的特征则对应对象的属性,实体的行为和功能则对应对象的方法。

    而物理世界中的实体是在活动着的,比如“张三告诉李四要修路,李四召集工人去修路,路修成了张三付给李四报酬,从而张三也得到了上级的嘉奖”,这样一个一个的消息传递就使世界动起来了。对应到程序世界里就变成了对象之间的消息传递,对象之间的消息传递就被称为消息序列,对应了序列图,这样程序世界也就动起来了。

    而为什么说物理世界与程序世界是一一对应的呢,这是不是说程序世界中什么都可以有呢,不错,什么都可以有但不代表什么都必须有,因为我们编程序时只关注物理世界中的某些对象的某些特征和行为,所以我们在程序世界中只需要描述某些行为即可。

    而定义上将“抽象、封装、多态、继承”等定义为面向对象的特点,是因为本身“实体”到“对象”是一个抽象的过程;将“对象”泛化为“类”、将“属性和方法”包装到类中、将“一段执行过程”包装到方法中本身就是将散件进行了封装;多态是说明执行同样的方法可以出现多种结果,继承则是“对象”继承“类”的属性和方法,“子类”继承“父类”的属性和方法。

评分

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

查看全部评分

回复 使用道具 举报
三大特征:封装、继承、多态
从JDK里面考一段代码出来都具有这些特征,封装就不说了,所有对象都继承自Objec,就下面
List<String> list = new ArrayList<String>
这么一段,List是父类接口,而ArrayList是子类List众多的实现类其中的一个,这就是所谓的多态
回复 使用道具 举报
<<认真+诚恳的回答,为了技术分!!>>
面向对象的根本概念就是:主观世界的"我",对客观世界的认识,通过程序软件去物理的表现出来!
100个"我",有一百种面向对象的认识......
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马