免费注册 查看新帖 |

Chinaunix

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

我想,理解了 C 的面向对象,也就理解了 C++  关闭 [复制链接]

论坛徽章:
0
111 [报告]
发表于 2008-06-06 11:00 |只看该作者
原帖由 zhujiang73 于 2008-6-6 10:44 发表



一个团队中,程序员需要交流的主要是接口(或者叫协议)问题,而接口可以与对象的继承无关,不同的问题用不同的协议,如果要统一我看 unix 中一切都是文件的方法就很好。


当时unix的一切皆文件的思想是针对计算机外接设备的, 而"一切皆OIOIC对象"的思想的出发点是整个现实世界.
unix的不支持继承, 并且也没有对象化对象多线程的访问控制.
继承是很重要的. 可以这样看, 继承是软件的纵向复用 ( 纵向协作 ), 对象间通讯是软件的横向复用 ( 横向协作 ).

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
112 [报告]
发表于 2008-06-06 11:34 |只看该作者
原帖由 ew3j 于 2008-6-6 11:00 发表


当时unix的一切皆文件的思想是针对计算机外接设备的, 而"一切皆OIOIC对象"的思想的出发点是整个现实世界.
unix的不支持继承, 并且也没有对象化对象多线程的访问控制.
继承是很重要的. 可以这样看, 继承是 ...


一切皆对象是对的,但那是什么对象可就不一定了。如 gtk 和  qt  的对象实现就不同, 这个就是萝卜白菜各有所爱了。

论坛徽章:
0
113 [报告]
发表于 2008-06-06 11:52 |只看该作者
原帖由 zhujiang73 于 2008-6-6 11:34 发表


一切皆对象是对的,但那是什么对象可就不一定了。如 gtk 和  qt  的对象实现就不同, 这个就是萝卜白菜各有所爱了。


在软件界的面向对象的编程思想上出现 "萝卜白菜各有所爱" 的现象, 是因为罗卜和白菜各有自己的优缺点所至. 如果有这样一种菜, 它即有罗卜的优点又有白菜的优点, 即弥补了罗卜的缺点又弥补了白菜的不足, 那么就不会再出现 "萝卜白菜各有所爱" 的情况了.

论坛徽章:
0
114 [报告]
发表于 2008-06-06 12:56 |只看该作者
ew3j ,你就是O**的作者,为什么不承认呢?你觉得这么炒作你那个玩意儿有意思吗?

论坛徽章:
0
115 [报告]
发表于 2008-06-06 12:57 |只看该作者
这贴华丽地转型了,Orz
harry2008 该用户已被删除
116 [报告]
发表于 2008-06-06 14:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
117 [报告]
发表于 2008-06-06 15:09 |只看该作者
原帖由 converse 于 2008-6-6 12:56 发表
ew3j ,你就是O**的作者,为什么不承认呢?你觉得这么炒作你那个玩意儿有意思吗?



刚开完会.
我不是OIOIC作者, 也不是谁的MJ, 你们不用怀疑. 告诉大家, 我3年前在网上就看见OIOIC教程了.
我想, 都到这时了, OIOIC作者也该现身了, 这段时间OIOIC在网上吵的这么厉害, 他不会没看到的.

论坛徽章:
0
118 [报告]
发表于 2008-06-06 15:41 |只看该作者
论《我想,理解了 C 的面向对象,也就理解了 C++ 》这个帖子应该结束讨论


关于这个帖子,大家翻翻前面的几页,这里不再赘述。
我认为这个帖子可以结束讨论了。

第一、从一开始,这个题目就是有问题的
    本帖题目
我想,理解了 C 的面向对象,也就理解了 C++ » 发表回复

    这句话虽然没有语病,但是,有一定的逻辑错误
        首先,因为面向对象是一种通用的思想,不属于某种语言。因此,题目中“C 的面向对象”一说不妥。
        其次,“解了 C++”一说, 有未指明表述对象嫌疑。  此处没有明确指出要理解C++的哪些属性(如变量、语法、逻辑、设计缺陷等)
第二、此帖有误导新人之嫌疑
    本帖存在一定的未知之事(尚处于讨论阶段,没有形成结论,不利于新人理解,或可能造成误解),由于知者,不一定是正确还是错误,可能影响新人学习
第三、此帖有在技术区灌水之嫌疑
    本帖发帖日期为 “2008-5-19 16:49 ”而今时今日为“2008-6-6 15:40”,之间跟帖,无意义发言或争吵较多,技术讨论较少,有悖于技术版建版初衷

综合考虑以上三点,我认为本帖应当结束讨论。

[ 本帖最后由 net_robber 于 2008-6-6 15:43 编辑 ]

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
119 [报告]
发表于 2008-06-06 15:43 |只看该作者
原帖由 zhujiang73 于 2008-5-20 14:43 发表
最简单的继承:
...


最简单的多继承:


#include <stdio.h>

#pragma pack(1)

#define  SIZETAB   6

#define  A_ID   1001
#define  B_ID   1002
#define  C_ID   1003

typedef struct
{
&nbsp;&nbsp;&nbsp;&nbsp;int  id;
&nbsp;&nbsp;&nbsp;&nbsp;int  madd;&nbsp;&nbsp;&nbsp;&nbsp;
} CInfo;

typedef struct
{  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int ma;
} A;

typedef struct
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int mb;
} B;

typedef struct
{
&nbsp;&nbsp;&nbsp;&nbsp;CInfo  citab[SIZETAB];
&nbsp;&nbsp;&nbsp;&nbsp;A  parent01;
&nbsp;&nbsp;&nbsp;&nbsp;B  parent02;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int mc;
} C;

void*  get_parent(void *this,  int  id_parent)
{
&nbsp;&nbsp;&nbsp;&nbsp;void   *pp;
&nbsp;&nbsp;&nbsp;&nbsp;CInfo  *pc;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;pp = 0;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;pc = (CInfo*)this;

&nbsp;&nbsp;&nbsp;&nbsp;int  i;

&nbsp;&nbsp;&nbsp;&nbsp;for (i=0; i<SIZETAB; i++)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (pc->id == 0) break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (pc->id == id_parent)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pp = this + pc->madd;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc++;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;return  pp; &nbsp;&nbsp;&nbsp;&nbsp;
}

void  C_init(void  *this)
{
&nbsp;&nbsp;&nbsp;&nbsp;CInfo  *pc = (CInfo*)this;
&nbsp;&nbsp;&nbsp;&nbsp;pc->id = A_ID;
&nbsp;&nbsp;&nbsp;&nbsp;pc->madd = sizeof(CInfo)*SIZETAB;
&nbsp;&nbsp;&nbsp;&nbsp;pc++;
&nbsp;&nbsp;&nbsp;&nbsp;pc->id = B_ID;
&nbsp;&nbsp;&nbsp;&nbsp;pc->madd = sizeof(CInfo)*SIZETAB + sizeof(A);
&nbsp;&nbsp;&nbsp;&nbsp;pc++;
&nbsp;&nbsp;&nbsp;&nbsp;pc->id = 0;
}

int main (int argc, char *argv[])
{
&nbsp;&nbsp;&nbsp;&nbsp;C   c;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A   *pa;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B   *pb;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C   *pc;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
&nbsp;&nbsp;&nbsp;&nbsp;void  *pp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc = &c;

&nbsp;&nbsp;&nbsp;&nbsp;C_init((void*)pc);

&nbsp;&nbsp;&nbsp;&nbsp;pp = get_parent((void*)pc, A_ID);
&nbsp;&nbsp;&nbsp;&nbsp;pa = (A*)pp;
&nbsp;&nbsp;&nbsp;&nbsp;pa->ma = 10;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;pp = get_parent((void*)pc, B_ID);
&nbsp;&nbsp;&nbsp;&nbsp;pb = (B*)pp;
&nbsp;&nbsp;&nbsp;&nbsp;pb->mb = 20;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;pc->mc = 30;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("c.ma = %d   c.mb = %d  c.mc = %d\n", c.parent01.ma, c.parent02.mb, c.mc);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return  0;
}

论坛徽章:
0
120 [报告]
发表于 2008-06-06 17:16 |只看该作者
我也学oioic去
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP