面向理论和实际+散分

qscool1987 2012-01-18 03:14:41
之前开过一贴讨论面向对象思想,结贴之后依然有不少朋友跟帖,给出了很多自己的看法,把自己的理解都说了出来,很中肯。确实受益良多。面向对象的思想是超出语言范围的一种思想,已经是与语言无关了。只是方便于人们认识事物的一种方法论。

下面是引用一位网友的原话

本人不懂C++,但面向对象的思想是一样的。
依赖于抽象而不依赖与实现,并不难理解。
比方说我们需要一个东西来盛水,这个东西只要有盛水的功能就行了,我们并不关心它是马克杯,乐扣杯,或者是解放牌大瓷缸,甚至是尿壶,这个能盛水的东西便是抽象(我们在脑海里只有一个概念,却没有实物),而马克杯或者其他的具体实物便是抽象的实现,面向抽象编程会非常灵活,并且低耦合,易于扩展和维护,还是那个比方,人是一个类,人有一个喝水的方法,想喝水就要依赖一个能盛水的容器,如果我要是依赖于具体编程,比如我今天想用乐扣杯盛水喝,明天想换个口味用尿壶,那么我就得每天都换一种(换一种实现就得修改一会类),非常麻烦,如果我依赖抽象(接口),我只是想喝水,只要这东西能盛水就行,我需要什么具体容器,就由它人来提供(工厂类提供一个具体实现的向上转型也就是抽象以便喝水的人可以用),来实现解耦

这确实是一个很通俗很形象的比喻来说明 依赖于抽象而非依赖于实现 这个问题
不过这些都是纯粹的理论,说的不好听就是纸上谈兵。
不过理论是必须先学的,以理论为指导嘛。更重要的是将理论运用到实际项目中去,解决实际问题。这就是另个鸿沟了,至于如何运用,什么时候运用这个必然是要经历一段很漫长的时间。
既然问题研究到这里了,我想每个人都应该知道自己缺少什么。我觉得这才是最最重要的。

PS:终于可以回家了,顺便散分,赚个RP。
...全文
2186 42 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmxiaocai 2012-02-03
  • 打赏
  • 举报
回复
编程两年了,都布知道抽象啥概念!
overmind 2012-02-02
  • 打赏
  • 举报
回复
个人觉得抽象是很人类的方式,很适合人类理解和完善。
但是,离机器实际的效率越来越远,有太多不知道的细节无法把控,但是这些细节都交给计算机帮助我们完成的,而且所谓抽象是永远没有尽头的,永远都有更更高级的抽象。这一层有一层的空中楼阁早晚要倒塌,活下来的都是接地气的,恐龙死光了但是细菌照样生存发展。。。复杂的东西依赖的太多越来越多,固定僵化。而且越来越复杂,迟早崩塌。。。
越抽象,越OO,就有越多人类的思想揉进来,世界上本没有模式,用的人多了也就有了模式。但是这个模式反过来必定有他僵硬局限的地方,而最终最终的机器语言是自由的,是最最柔软的。
不过,机器语言查起来太费劲了。。。汇编语言严重依赖于指令集、寄存器、中断地址、计时器等等硬件信息,无法达到一次开发到处应用,不通用受限制。
要盖大楼,只靠赤手空拳就很难完成,得借助钢筋混凝土,框架啊接口啊,宏观的规划,细节的施工修改。
ztenv 版主 2012-02-01
  • 打赏
  • 举报
回复
比较入门级的知识,只有理论是不行的;只要稍稍学过OOP或OOD的人都能说明白这个“些”道理,但能不能在项目中使用呢?我就发现我们公司很多人说的时候都理解,都知道,但做的时候完全不是那么回事儿,还自以为是。
wsjrzjp 2012-02-01
  • 打赏
  • 举报
回复
是理解了,但很难使用在现实的项目中
frogoscar 2012-02-01
  • 打赏
  • 举报
回复
接分~~~~~~~~~~~~~
beckcheng 2012-02-01
  • 打赏
  • 举报
回复
当年刚学java第一次接触到的面向对象:

接口 func = new 具体类();
func.doSomething();


我这个人不太会说,只好这样表达了
  • 打赏
  • 举报
回复
OOXX
Defonds 2012-01-31
  • 打赏
  • 举报
回复
依赖于抽象,说明的是一个行为集中的方向
也是避免重复编码所需要的
魂寒 2012-01-31
  • 打赏
  • 举报
回复
同意思想和语言分开的观点,而且思想和语言本就是该分开的。思想是指导,语言是工具。以后我们可以说C++和java是可以实现面向对象思想的语言。
zc200711158 2012-01-19
  • 打赏
  • 举报
回复
问一下下,oo是什么嘛?
哈了 2012-01-19
  • 打赏
  • 举报
回复
IT_LEAF 2012-01-19
  • 打赏
  • 举报
回复
思想还是和语言分开比较好,特定的语言都会限制思想的
shangwu_35 2012-01-19
  • 打赏
  • 举报
回复
强烈期待有个英语好又懂编程的强人,能把《数学原理》全翻了。
这么一来什么对象都不在话下了。
zhongguoren666 2012-01-19
  • 打赏
  • 举报
回复
回家过年去吧。
朱韦刚 2012-01-19
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 liuxingvcvc 的回复:]

[/Quote]Object Oriented Programming,OOP

朱韦刚 2012-01-19
  • 打赏
  • 举报
回复
其实我们有的时候把问题固态化,这就是什么叫习惯,什么叫迷茫。多想,想些东西还是很有用的!,希望能对大家有些帮助,c转c++一年工作经验总结!
iamnobody 2012-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]
楼主最近醉心于OO啊。。。
我都不知道说什么好了,我这点东西都说完了。。。我的blog你也参考过了。。。

我看别人怎么说吧。。。
[/Quote]

最近楼主热衷于散粉
Kaile 2012-01-18
  • 打赏
  • 举报
回复
面向接口编程,不要面向实现。接分来了
灰灰君呀 2012-01-18
  • 打赏
  • 举报
回复
C/C++各有优势,没必要这样那样的非议。好的程序还是要看效率,使用何种语言次之了。
  • 打赏
  • 举报
回复
http://baike.baidu.com/view/1996652.htm
依赖倒转原则
  
  抽象不应该依赖于细节,细节应当依赖于抽象。
  要针对接口编程,而不是针对实现编程。
  传递参数,或者在组合聚合关系中,尽量引用层次高的类。
  主要是在构造对象时可以动态的创建各种具体对象,当然如果一些具体类比较稳定,就不必再弄一个抽象类做它的父类,这样有画蛇添足的感觉。
  优点:
  系统扩展灵活。
  缺点:
  需要大量的类。
加载更多回复(14)

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧