首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

大家哪位高手知道一些关于c语言面向对象编程的书啊介绍一下

2012-03-19 
大家谁知道一些关于c语言面向对象编程的书啊,介绍一下.大家帮忙.[解决办法]你这是第二个帖子了吧?自己去搜

大家谁知道一些关于c语言面向对象编程的书啊,介绍一下.
大家帮忙.

[解决办法]
你这是第二个帖子了吧?
自己去搜索有那么难么?一定要别人喂你吃?
看这里:
http://www.google.com.hk/search?hl=zh-CN&safe=strict&client=firefox-a&hs=VOf&rls=org.mozilla%3Azh-CN%3Aofficial&q=c+%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1+pdf&aq=f&aqi=&aql=&oq=&gs_rfai=
[解决办法]
你可以看看高焕堂的《UML+OOPC嵌入式C语言开发精讲》,或者一本英文书《用C实现面向对象.pdf>
[解决办法]

C语言编程中常用的“面向对象”方法 

其实C语言诞生以来,人们就想了很多办法来体现“面向对象”的思想。 
1. 宏定义: 
有的人不禁要问,宏定义怎么扯到这里来了,我们可以先看一个简单的例子: 
#define MacroFunction Afunction 
然后在程序里面你调用了大量的AFunction,但是有一天,你突然发现你要用BFunction了,(不过AFunction又不能不要,很有可能你以后还要调用),这个时候,你就可以#define MacroFunction Bfunction来达到这样的目的。 
当然,不得不说这样的办法是too simple,sometime naïve的,因为一个很滑稽的问题是如果我一般要改为BFunction,一半不变怎么办? 那就只好查找替换了。 
2. 静态的入口函数,保证函数名相同,利用标志位调用子函数: 
这样的典型应用很多,比如说网卡驱动里面有一个入口函数Nilan(int FunctionCode,Para*)。具体的参数是什么记不清楚了。不过NiLan的主体是这样的: 
Long Nilan(int FunctionCode,Para*){ 
Switch(FunctionCode){ 
Case SendPacket: send(….) 
Case ReceivePacket: receive(…) 
….. 


写到这里大家明白什么意思了吧。保证相同的函数名就是说:网卡驱动是和pNA+协议栈互连的,那么如何保证pNA+协议栈和不同的驱动都兼容呢,一个简单的办法就是仅仅使用一个入口函数。通过改变如果函数的参数值,来调用内部的各个函数。这样的做法是可以进化的:如果以后想调用新的函数,增加相应的函数参数值就好了。如果我们将网卡驱动和pNA+协议栈看作两个层的话,我们可以发现: 
层与层之间的互连接口是很小的(这里是一个入口函数),一般是采用名字解析的办法而不是具体的函数调用(利用FunctionCode调用函数,Nilan仅仅实现名字解析的功能)!
3.CALLBACK函数。
虽然它很简单,就象如何把鸡蛋竖起来一样,但是你如果没想到的话,嘿嘿。如果说静态入口函数实现了一个可管理的宏观的话,CallBack就是实现了一个可进化的微观:它使得一个函数可以在不重新编译的情况下实现功能的添加!

4.Event和Message
为了提高程序的灵活性,Event和Message的办法产生了。用名字解析的办法代替通常的函数调用,这样,如果双方对这样的解析是一致的话,就可以达到一个统一。不过Event和Message的作用还不仅仅是如此。
Event和Message还有建立进程间通信的功能。进程将自己的消息发给“控制中心”(简单的就是一个消息队列,和一个while循环不断的取消息队列的内容并执行),控制程序得到消息,分发给相应的进程,这样其他进程就可以得到这个消息并进行响应。 




至于楼主想看的话,推荐
C面向对象编程
下载地址:http://download.csdn.net/down/230341/eqiaotea

热点排行