到底什么叫做面向对象?自认为搞清楚了,可是经理说我没搞清楚。 面向对象编程不就是封装,多态,继承吗?
![]() | 1 laoyuan 2016-05-11 08:13:12 +08:00 一堆值和函数的集合。。 |
![]() | 2 pangtianyu 2016-05-11 08:14:39 +08:00 请问什么是封装…… 什么是多态…… 什么是继承…… 请具体一点…… |
![]() | 3 designer 2016-05-11 08:18:07 +08:00 via iPhone 就是帮单身猿猿们找对象! |
![]() | 4 cxbig 2016-05-11 08:19:37 +08:00 ![]() 倒不如帖一点代码出来看看? OOP 更多的是体现在框架构建理念上。 另外只说你“没搞清楚”?提到细节了没有?如果只是扣个帽子,那说明这个人一样不靠谱。 |
![]() | 5 araraloren 2016-05-11 08:26:12 +08:00 你们经理对你有意思吗?面向`对象`。。。 |
![]() | 6 tobyxdd 2016-05-11 08:27:26 +08:00 via Android 教科书式的回答。。估计是你得说详细点 |
![]() | ![]() 你理在逼,一破概念翻覆去的,又不是做文。 是教科的回答:「面向象的本是代的用。」 是我的理解:「面向象的本是消息的。」 每人都有每人的理解,必要在着增加而在不化的西上使太多。 |
![]() | 8 ren2881971 2016-05-11 08:35:59 +08:00 你们经理唬你呢~ |
![]() | 9 k9982874 2016-05-11 08:40:13 +08:00 via iPad 我觉的你把最重要的一条“抽象”漏了 |
![]() | 10 vietor 2016-05-11 08:43:39 +08:00 via Android 面向对象是理念与工具集,你关注了工具集 |
11 jeffersonpig 2016-05-11 08:43:51 +08:00 ![]() 封装、多态和继承这些只是实现面向对象的技术手段,如果你自己在对象的提取和抽象上没做好,这些技术用上去也写不出好代码。面向对象是一种分析问题、看待事物的思维方式,只着眼于这些技术层面的东西,有点太狭隘了。个人觉得编程不只是写写代码,也是在培养各种看待世界的方式。 |
12 just4test 2016-05-11 08:46:30 +08:00 via Android 我觉得本质是绑定了数据和操作,使其更类似于真实世界的实体,从而易于理解和使用 |
![]() | 13 wjh3936 2016-05-11 08:46:58 +08:00 你的经理可能是说你没搞清楚,他来教你怎么做“对象”?手动滑稽 |
![]() | 14 xpol 2016-05-11 08:53:07 +08:00 via Android 设计模式解析上有一段叫从传统面向对象到新的面向对象。 大致是说新的面向对象是抽象和封装变化点。 |
![]() | 16 Ouyangan 2016-05-11 08:59:54 +08:00 看看 think in java 导论 |
![]() | 17 kideny 2016-05-11 09:01:03 +08:00 只是计算机语言这种拙劣的表现语言,找一个实用.或者->访问对象方法和属性的方式,找一个借口罢了。 |
![]() | 18 chunqiuyiyu 2016-05-11 09:01:33 +08:00 赞同十一楼。面向对象每个人都有自己的理解,如果你们的经理执着于这点就太无聊了,实际的工作项目中,更值得理解和解决的问题根本比概念的理解要重要的多。估计你们经理想要一种教科书式的回答。。 |
![]() | 19 linux40 2016-05-11 09:15:11 +08:00 via Android 我也觉得你们经理在装逼,这个东西还是要看代码。。。 |
![]() | 20 UnisandK 2016-05-11 09:20:05 +08:00 ![]() 经理一拍桌子:你好好看着我! 然后红着脸小声说了句:这就是面向对象。 |
![]() | 21 evilic 2016-05-11 09:22:44 +08:00 尽量用最有效的方法来解决问题。面向对象也好,怎样都好,反正都是为了解决问题的。 |
![]() | 22 tony1016 2016-05-11 09:26:41 +08:00 10 年工作经验来看,大多数程序猿依旧停留在对象就是有个类的基础上,现实开发中根本没有多少封装,继承和抽象,还不如直接函数编程呢 |
![]() | 23 admol 2016-05-11 09:28:04 +08:00 ![]() 你就是一对象,具备一些功能,拥有一定的编程能力,你们经理在面向你的时候,把你的技能属性值设置成了没搞清楚面向对象是什么,你们经理还可以调用你的编程能力,喊你去做任何能做的事情,但是呢,过了一段时间,你们经理发现你这对象该优化优化了,需要提升一下技能,于是找你谈话,问你什么是面向对象. 2333333333333 |
24 xylophone21 2016-05-11 09:30:08 +08:00 断章取义概率很大 |
![]() | 25 suuuch 2016-05-11 09:35:23 +08:00 看情况吧,这算是一个开放性问题吧,有自己的见解就好了。 |
![]() | 26 kyze8439690 2016-05-11 09:36:03 +08:00 懂技术的经理 |
![]() | 27 jason19659 2016-05-11 09:38:14 +08:00 我同样想起了一个问题,你对 spring 的理解怎么样 |
![]() | 28 firsthym 2016-05-11 09:42:22 +08:00 这明明是一个 big topic |
29 yszx 2016-05-11 09:52:11 +08:00 面向对象是一种设计思路反正我是说不出来 |
![]() | 30 lwbjing 2016-05-11 09:59:17 +08:00 ![]() 要面向对象,首先要结对编程, 妹子或者汉子都行, 再不济也得要有个程序员鼓励师, 不然就会一直找不到对象。。 |
![]() | 31 fin 2016-05-11 10:11:13 +08:00 能不能讲一下 J2EE 。 |
32 niepan0oo 2016-05-11 10:24:50 +08:00 个人观点:更多的是设计程序的一个思路吧,用这种方式去解决问题,让程序便于理解、便于维护、便于迭代。封装,多态,继承这些应该是具体的实现吧。 |
![]() | 33 jydeng 2016-05-11 10:26:35 +08:00 讲不了,所以还是搬砖去吧 |
![]() | 34 lifesimple 2016-05-11 10:30:31 +08:00 找不到对象,何以面向对象? |
35 alexRH 2016-05-11 10:32:22 +08:00 看看设计模式的书,虽然单纯看完你还是不懂设计模式,但是至少,装逼,已经不会输给你经理了。 |
![]() | 36 j4fun 2016-05-11 10:59:35 +08:00 给我找个对象我告诉你 |
![]() | 37 bumz 2016-05-11 11:19:46 +08:00 via iPhone 何为面向对象?可以从实践、思维、目的三个角度回答 封装、多态、继承是实现面向对象的常见方式 以物件为导向设计架构是面向对象的基本维 达到代码复用的效果,是面向对象的主要目的 |
![]() | 38 blackfire 2016-05-11 11:19:59 +08:00 为什么我到现在还搞不清楚?每次说完都觉得不对,别人说出来都好有道理的样子。突然想起来张三丰问张无忌,“无忌,招式记住了多少?”…………我感觉面试这么回答是很好的,如果我们总监这么问我,我这么回答,我会祈祷他不打死我 |
![]() | 39 y835L9DyC5XD09kq 2016-05-11 11:35:13 +08:00 是产品狗最后的遮羞布 |
![]() | 40 sensui7 2016-05-11 11:50:52 +08:00 思想的, 如果只是把函数葑装类里面, 那没有多大意义啊. 个锂解猪要是, 数据保护, 低耦合, 复用. |
![]() | 41 wingyiu 2016-05-11 12:05:49 +08:00 以后面试记得带两个象棋 |
![]() | 43 alphadog619 2016-05-11 12:20:36 +08:00 世间万物皆对象 |
![]() | 44 Chrisplus 2016-05-11 12:29:15 +08:00 面向对象是一种思维方式 |
45 zhuzhe1983 2016-05-11 12:41:00 +08:00 首先你要有个对象,然后面对她编程就可以了。。。 |
46 SuperMild 2016-05-11 13:04:32 +08:00 via iPad 感觉面向对象体现得最明显的就是各种 framework 。 现在能这么方便地 import 一个包就获得一堆很实用的类和方法,就是面向对象的好处。 把逻辑封装为 class ,使 api 非常清晰,同时也使 namespace 划分得很清楚。 |
![]() | 47 an168bang521 2016-05-11 13:05:36 +08:00 我理解的面向对象是: 像自然界中一样,把事物分为不同的类,方便进行管理; 自然界中有人类,动物类等;比如人都属于人类,人都继承人类的特征,都有一个鼻子两只手; 编程语言中,进行归类,继承,多态等; 比如 Javascript 常见的,可以用构造函数创造一个类,实例都继承所创建的类; 实例的方法继承类;但是实例 A 内的数据和实例 B 内的数据是不同的,虽然都是继承同一个类; 就好比我们每个人都有一双手,都是继承人类的特征,但是我的手不等于你的手; 大概就是这样的吧; 妈的,这玩意,真的认真说起来,就好比是一本正经的吹牛 B 一样; |
![]() | 48 Reign 2016-05-11 13:09:06 +08:00 via Android |
![]() | 49 qiumaoyuan 2016-05-11 13:10:03 +08:00 面向对象是一种管理代码复杂度的有效方法 |
![]() | 50 qiumaoyuan 2016-05-11 13:11:18 +08:00 对了,补充一句,其实你经理未必清楚。 |
![]() | 51 21grams 2016-05-11 13:17:49 +08:00 本质就是通过封装降低了复杂度。 |
![]() | 52 Erbied 2016-05-11 13:32:02 +08:00 ![]() |
53 ChiChou 2016-05-11 13:55:49 +08:00 你有对象了吗? |
![]() | 54 Epirus 2016-05-11 16:33:46 +08:00 发送消息 |
![]() | 55 redhatping 2016-05-11 16:46:34 +08:00 想和你谈对象呢... 你就这么呆瓜 |
56 McContax 2016-05-11 17:16:32 +08:00 via Android 面向对象编程,首先你得有对象(好吧这一块区域我也很模糊,生活中的任何事物都是对象,对象有属性。。。。这一段我都可以背下来了但是就是不懂) |
57 aksoft 2016-05-11 17:20:35 +08:00 就是面向女朋友 |
![]() | 58 loryyang 2016-05-11 17:42:57 +08:00 一种思维方式吧,尽量做好封装,需要的时候用好继承和接口。 另外设计是演化出来的,上来就一定要严格面向对象其实意义不大。而且没有具体的问题,空谈 OO 没啥意思,实用至上 |
![]() | 59 crayygy 2016-05-11 18:29:34 +08:00 via iPhone 面试前端的时候让我讲一下观察者模式和工厂模式……当时就觉得这事儿没那么简单。果不其然现在这个小项目几乎所有的都是我一个人在做……我特么只是个实习生啊! |
61 garrych 2016-05-11 20:09:03 +08:00 都知道封装,多态,继承,但这并不等于理解了面向对象,封装,多态,继承只是为了解决代码层面的问题,比如代码复用 对象是为了解决业务层面的问题 |
62 garrych 2016-05-11 20:12:06 +08:00 赞同十一楼。 建议楼主看看领域驱动设计,会有很大帮助 |
![]() | 63 beyoung 2016-05-11 22:20:55 +08:00 @designer @araraloren @lwbjing @Chrisplus @UnisandK 如果对方是妹纸 你可以做个手势,然后淡淡道: 就像我们现在这样;你不需要知道我到底究竟是怎么做到某件事的,你告诉我,我去做就好;你就是面向了你的对象,也就是我; |
![]() | 64 chilaoqi 2016-05-11 22:29:29 +08:00 你是不是很想说: “咱不装逼了行么,求你了” 哈哈哈 |
![]() | 65 ichou 2016-05-11 23:19:25 +08:00 我觉得面向对象并不是模式,或者语言特性,那些是实现面向对象的工具 面向对象 是编程中逻辑编排的一种思想,它不强调我要做什么,而是我这个东西有什么,可以做什么,再通过各个对象的串联来完成一个系统 很多刚接触一段时间的人,对什么是面向对象如数家珍,但是代码中着实看不到面向对象的思想,要么是为 OOP 而 OOP ,要么是大家都是这么写的所以我这么写 推荐给楼主一种彻底面向对象的语言: ruby ,凡事皆对象 |
![]() | 66 SlipStupig 2016-05-12 00:05:47 +08:00 ![]() 你是对象,你女朋友是对象,你们两个互相搞对象,你们俩就是类; 你出生在一个富裕家庭,有一堆跑车,是你爹的,你也可以用,这个叫继承;,但是你娘不属于你,所以这个叫私有对象,跑车和房子属于公共对象,但是只能你和你家人一起用,这个叫公有对象 你判断政府要在一个地方搞开发,然后你先占坑,放了几张桌子,你听说明年就要开发了,你马上又去修了一个鱼塘,后来政府不开了,你很失望你把那个坑给填了,这个叫抽象类 以上都是我胡说八道,我是一外行啥也不懂 |
![]() | 67 Asan 2016-05-12 08:36:28 +08:00 ia iPhone 面向过程是什么事都自己做,面向对象是什么事都让别人做。 |
![]() | 68 smallpath 2016-05-12 11:29:44 +08:00 哈哈, 也许你可以看看湾湾的面向组件这种说法, 然后跟你经理装个比 |
![]() | 69 elvba 2016-05-12 13:27:19 +08:00 @SlipStupig 挺形象的哈哈 |
![]() | 70 SlipStupig 2016-05-12 14:42:18 +08:00 @elvba 这种东西每个人理解不一样,我见过国外一些开源项目人家不用 oop ,照样可以写出牛 x 的项目,我个人认为 OOP 目的是让大家水平更平均,要要逞口舌之利,你可以这么玩。 版本 1 : 经理:你还是没理解 OOP 你:我更注重设计模式 经理:你连 OOP 都理解不了怎么去理解设计模式呢 你:你写代码都不设计的嘛,那模块如何懈耦,如何拓展,如何降低模块依赖,数据库复杂度,是否做到可持续交付呢?你设计模式都不理解,你怎么写代码!就算你写出来了,我都不知道是什么代码! 版本 2 : 经理:你还是没理解 OOP 你:我不需要理解,我更注重系统和编译原理这些 经理:你连 OOP 都理解不了怎么去理解这些呢? 你:你说的虚类 保护对象 隐含调用,在 JVM 里面只不过是内存一个指针而已,在底层虚拟机实现指令中全都是过程没有对象,编译流程中也全部都是过程,你这些都不理解,可能写出来的代码最终就是被编译器优化掉的下场! 经理:那对你开发速度和质量上也没什么帮助啊 你:我理解这些所以我能写出更高性能的代码,你连系统原理都不了解,我都不知道是什么代码! |
71 xingzhela OP @jeffersonpig 同意 |