c语言和设计模式 pdf,设计模式学习与其C语言实现笔记.pdf

设计模式学习及其 C 语言实现笔记

第 1 章:面向对象 C 语言 (Object Oriented C )

我曾经在嵌入式控制系统工作过, 苦于嵌入式系统编程一直是 C 语言, 而没法用 C++ 或其他高

级语言的面向对象方法编程。 每次做项目, 代码基本上都是重头再来, 以前的代码有少量的可以 copy

过来直接用,开发和维护很不方便。偶然间发现《 UML+OOPC 嵌入式 C 语言开发精讲》里面详细

的讲述了 OOC 的原理和实现方法,感觉不错。遗憾的是上面只提供接口和多态的实现方法,没有

提供继承的处理。根据本人的研究,将其上面的宏文件进行修改和扩充,提出一种可行而且结构明

了的继承实现方法。至此, C 的 OO 编程中的封装、继承、多态都全实现了。

面向对象 C 语言 (Object Oriented C ) 只是运用单纯的 C 的宏 (Macro) 技巧,实现面向对象的基本

技术。借用 OOC.H 文件的宏,就可以实现类的封装、继承、多态。 OOC 毕竟不是一门语言,不可

能做出与 C++ 或 C#这些面向对象语言一样的干练、简洁,有的甚至没法实现比如对 private 成员变

量的限制等。但 OOC 方法借用宏在一定的规则下还是能做出比较漂亮的面向对象代码。下面是对

比 C++ 介绍 OOC.H 文件中的对象的命名、定义、封装等的规则。

1、类的封装和对象的构造

1.1 类的封装(类的定义)

在 C++ 中,类的定义如下

class myClass{

private:

int a; // 类属性 (变量 )

public:

myClass();

void Set(int a);

void put();

};

在 OOC 中“类”实际是结构体, myClass 定义的风格为

CLASS(myClass)

{

int a; // 类属性 (变量 )

void (*init)(void *t); //-- 初始化成员变量用函数

void (*Set)(void *t,int a); //-- 函数指针

void (*Put)(void *t);

} ;

在 C++ 和 OOC 的类封装中,最大的区别是 OOC 用函数指针来表示类的方法(或成员函数) ;

此外 OOC 中没有 private 的变量, private 变量只能通过定义方法来实现,比如把 int a 改写为

int __a ,这样也许外面误访问的可能性大大降低,但还是不能阻止外面访问。

1.2 类的成员函数的实现

C++ 中可以在类内部定义成员函数的实现,也可以在类的外面。而 OOC 中的类实质是 struct ,

其所存放的只能是变量,其中的函数指针变量是用来实现类的方法。因此在 OOC 的类中是不

能定义函数的实现的。 OOC 中函数也不像 C++ 中的函数属于哪个类就和哪个类紧密结合在一

起。 OOC 中的函数的实现就是普通的函数实现,只是函数的参数要和 CLASS() 宏定义的函数

(指针)的参数变量保持一致。例如 myClass 类的 Set 方法可以取名 S

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值