到底什么叫做面向对象?自认为搞清楚了,可是经理说我没搞清楚。 面向对象编程不就是封装,多态,继承吗?
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 1
倒不如帖一点代码出来看看? OOP 更多的是体现在框架构建理念上。
另外只说你“没搞清楚”?提到细节了没有?如果只是扣个帽子,那说明这个人一样不靠谱。 |
5
araraloren 2016-05-11 08:26:12 +08:00
你们经理对你有意思吗?面向`对象`。。。
|
6
tobyxdd 2016-05-11 08:27:26 +08:00 via Android
教科书式的回答。。估计是你得说详细点
|
7
wezzard 2016-05-11 08:29:37 +08:00 2
你們經理在裝逼,一個這種破概念還翻來覆去的,又不是做學術寫論文。
這是教科書的回答:「面向對象的本質是代碼的復用。」 這是我的理解:「面向對象的本質是消息的傳遞。」 每個人都有每個人的理解,沒必要在這種隨着經歷增加而在不斷變化的東西上使太多勁兒。 |
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 4
封装、多态和继承这些只是实现面向对象的技术手段,如果你自己在对象的提取和抽象上没做好,这些技术用上去也写不出好代码。面向对象是一种分析问题、看待事物的思维方式,只着眼于这些技术层面的东西,有点太狭隘了。个人觉得编程不只是写写代码,也是在培养各种看待世界的方式。
|
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 8
经理一拍桌子:你好好看着我!
然后红着脸小声说了句:这就是面向对象。 |
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 1
你就是一個对象,具备一些功能,拥有一定的编程能力,你们经理在面向你的时候,把你的技能属性值设置成了没搞清楚面向对象是什么,你们经理还可以调用你的编程能力,喊你去做任何能做的事情,但是呢,过了一段时间,你们经理发现你这对象该优化优化了,需要提升一下技能,于是找你谈话,问你什么是面向对象. 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 1
要面向对象,首先要结对编程,
妹子或者汉子都行, 再不济也得要有个程序员鼓励师, 不然就会一直找不到对象。。 |
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
kangkang 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 1
|
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 1
你是对象,你女朋友是对象,你们两个互相搞对象,你们俩就是类;
你出生在一个富裕家庭,有一堆跑车,是你爹的,你也可以用,这个叫继承;,但是你娘不属于你,所以这个叫私有对象,跑车和房子属于公共对象,但是只能你和你家人一起用,这个叫公有对象 你判断政府要在一个地方搞开发,然后你先占坑,放了几张桌子,你听说明年就要开发了,你马上又去修了一个鱼塘,后来政府不开了,你很失望你把那个坑给填了,这个叫抽象类 以上都是我胡说八道,我是一外行啥也不懂 |
67
Asan 2016-05-12 08:36:28 +08:00 via 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 同意
|