免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: art_codes
打印 上一主题 下一主题

[C++] 确认一下c++中不能使用interface(如java)那样的功能把 [复制链接]

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
421 [报告]
发表于 2009-03-31 15:23 |只看该作者
要讨论一个问题,首先要明确定义。

是的,抽象和OO不是一回事。只有符合特定标准的抽象才叫OO。

那么,如果不定义下这个抽象到什么程度算OO的话,讨论显然只能落入相互讥笑和谩骂的结局。


我对面向对象程序设计的定义是:
1、以同类数据结构或其他机制表示同类实体(对象)
以后省略 其他机制 四字(特意提出其他机制,是因为某些语言可能有特殊方法组织信息)
2、以接受这些数据结构的处理函数实现操纵对象的逻辑(方法)
3、允许扩充出兼容数据结构(和/或增加相关的处理函数),以便扩展功能(继承)
4、如有必要,设计处理函数隐含替换机制(多态)

一旦一个项目是按照这个思路来设计的,不管最终用什么实现,不管设计师脑子里有没有念叨面向对象三原则,它都是面向对象的。

举个例子,iTCL使用命名空间模拟类和对象,使用这个机制设计的程序算不算面向对象?
如果我把这个机制打散,只抽出当前自己要用到的部分机制实现了一个项目,符合上面的几条标准,这算不算面向对象?

我认为都算。

相反,如果一个程序虽然用了很多class、inherit、virtual,但实际上一个class包了很多不相干的东西、类内部数据仅仅是全局数据的替代品、对象则被当作划分不同人用到的全局数据的“天然屏障”,this则是指向全局数据替代品的索引指针……这样凑起来的系统,我叫它结构化甚至非结构化的,并不认为它和面向对象有半点联系。

这也正是为何我认为必须把面向对象语言给出的那些“面向对象的协议”和“面向对象的设计”本身区分来看的根本原因。


我想请flw兄说明一下自己对面向对象的定义。
我相信不会是“必须使用面向对象语言(而不是设计自己的面向对象机制)才能算是面向对象程序设计”。

当然,我认为我们是在讨论“面向对象是什么”而不是“用面向对象语言开发面向对象程序”,也不是在讨论“怎样为非面向对象语言增加面向对象机制才能让用它开发的项目变成面向对象的”。

[ 本帖最后由 shan_ghost 于 2009-3-31 16:10 编辑 ]

论坛徽章:
0
422 [报告]
发表于 2009-03-31 15:48 |只看该作者
都没有什么哲学思想,还在那谈论个屁OO。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
423 [报告]
发表于 2009-03-31 16:27 |只看该作者
http://zh.wikipedia.org/wiki/OOP

一个东西,你总得声称你是什么,不是什么。
总不能别人说什么好,你就说你是什么。
今天有人说面向过程好了,你说你就是面向过程的典范。
明天有人说面向对象好了,你又说你是面向对象的杰作。

有得必有失,总不能把所有的好都往自己身上揽吧。

我不敢说 UNIX 文件系统从来都没有说过自己是 OO 的杰作,
但是我敢说以著名黑客们为首的 UNIX 主流社团一向很少这么标榜自己的。


说实话,我对 OOP 的理解不深。就不参与讨论了。大家继续。

[ 本帖最后由 flw 于 2009-3-31 16:31 编辑 ]

论坛徽章:
0
424 [报告]
发表于 2009-04-08 15:43 |只看该作者
原帖由 OwnWaterloo 于 2009-3-24 23:19 发表


我也想说 “洗洗睡把,没别要在这充大牛”。

别在这里“陡增笑料”。

btw, 喜欢说“每种语言都只是工具” ,经常都是不愿思考、夸夸其谈的家伙。 我看你也差不多。

看看你对局部对象的理解 ……  ...



" 喜欢说“每种语言都只是工具” ,经常都是不愿思考、夸夸其谈的家伙",这句话很犀利。我也是这么觉得。

因为“每种语言都只是工具”后面必须跟上一句话,“工具确实有好坏之分,而且最好能在不同的场合选择不同的工具”。

论坛徽章:
0
425 [报告]
发表于 2009-04-08 17:24 |只看该作者
原帖由 sorrento 于 2009-3-26 00:49 发表


使用C/C++开发web应用,一般使用FastCGI这样的协议和框架,对于HTTP请求的包装有cgicc之类的库,总的来说,开发效率还是不低的。
当然这样的开发环境适合用来开发使用HTTP作传输协议的网络应用(比如所谓的 ...



google有个ctemplate,用C++写网页很爽快的。我知道有家公司就这么做的。

论坛徽章:
0
426 [报告]
发表于 2009-04-09 02:48 |只看该作者
看到24页之后,我精神崩溃了,竟然搞了40多页。。。。。。

其实我有一个比方:
C++好像给你一个地球,提供给你一个世界,你喜欢热带雨林你就去南美,你喜欢冰天雪地你就去南极,你喜欢非洲黑妞你就去非洲,你喜欢登高望远你就去西藏。。。。。。

论坛徽章:
0
427 [报告]
发表于 2009-04-09 10:42 |只看该作者
原帖由 OwnWaterloo 于 2009-3-27 16:03 发表


我本来也一直想举这个理由的。 但自己没实际管理过什么项目, 所以就没说了。
看来有人想法和我一样。

c++特性是很多,  很难操控得好。  但是团队可以根据自己开发人员的水平,人为规定应该采用c++的那 ...



看到code style,忍不住想说说国内编程的流毒。
比如 if (a == 0)和if (0 == a),国内很多人受林锐那篇狗屁文章影响,认为应该写成后面的方式。但是大家如果去阅读一下linux kernel, MFC, Apache, GNome, OpenOffice, lighttpd, eMule等等的代码,就会发现绝大部分优秀项目的代码都是写成前面那个写法的。原因是我认为是由于:易读性比新手会犯的初级错误更重要。

论坛徽章:
0
428 [报告]
发表于 2009-04-09 11:02 |只看该作者
原帖由 CMAX 于 2009-4-9 01:27 发表
看到柏拉图的出现想说下我一直有个一个感受:
柏拉图认为世界上先是存在着各种各样完美的事物模版,而后现实中的事物只是其对应的完美模版的瑕疵版实现。
比如有着理论上的圆,而现实中的圆都不够完美,仅仅只 ...


柏拉图太老了,找点近代的看看吧

论坛徽章:
0
429 [报告]
发表于 2009-04-09 11:04 |只看该作者

回复 #429 CMAX 的帖子

OO最有利于软件的复用和维护。

论坛徽章:
0
430 [报告]
发表于 2009-04-09 11:06 |只看该作者
原帖由 reiase 于 2009-4-9 11:02 发表


柏拉图太老了,找点近代的看看吧


嗯,建议学学辩证唯物主义哲学。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP