今晚的月光很好,刚好倾泻到我的书桌上,恬静、安详,心里却有一种孤独。这个城市仿佛与我无关、这里的人好像与我无关,自己坐在一个安静的角落里,泡一杯
茶水敲打着键盘,听着音乐,流淌自己的灵魂。人生吧,也许就这样,平淡而幸福,也许是最完美的追求。也只有在这样的夜晚,坐在窗户旁边,看着街边路灯发着懒懒的光,
什么都不想,让思维在那一刻停留,多么美好而单纯的感觉啊 !嘻嘻,写的这一段算是一段优美的前奏吧,接下来该写今天的东东了
C语言实现类的最简单的方式就是用文件作为包含边界,用一对文件(.h文件和.c文件)来表示一个类。
public的变量和函数写在.h文件中,private的变量和函数写在.c文件中-------------体现了类的封装性
以下是我摘录的Design Patterns for Embedded System in C里的一个例子:
设计了一个传感器类,嘻嘻,这么巧呢,我们公司就是专门卖传感器的,各式各样的。。。。。。。。。。。
传感器类Sensor,属性:data elements value, updateFrequency, filterFrequency
操作:getValue(), setValue(v: int), setUpdateFreq(r:int), getUpdateFreq(), setFilterFreq(ff: int), and getFilterFreq()
Sensor.h文件源码:
#ifndef Sensor_H
#define Sensor_H
/*## class Sensor */
typedef struct Sensor Sensor;
struct Sensor {
int filterFrequency;
int updateFrequency;
int value;
};
int Sensor_getFilterFrequency(const Sensor* const me);
void Sensor_setFilterFrequency(Sensor* const me, int p_filterFrequency);
int Sensor_getUpdateFrequency(const Sensor* const me);
void Sensor_setUpdateFrequency(Sensor* const me, int p_updateFrequency);
int Sensor_getValue(const Sensor* const me);
Sensor * Sensor_Create(void);
void Sensor_Destroy(Sensor* const me);
Sensor.c文件源码:
#include "Sensor.h"
void Sensor_Init(Sensor* const me) {
}
void Sensor_Cleanup(Sensor* const me) {
}
int Sensor_getFilterFrequency(const Sensor* const me) {
return me->filterFrequency;
}
void Sensor_setFilterFrequency(Sensor* const me, int p_filterFrequency) {
me->filterFrequency = p_filterFrequency;
}
int Sensor_getUpdateFrequency(const Sensor* const me) {
return me->updateFrequency;
}
void Sensor_setUpdateFrequency(Sensor* const me, int p_updateFrequency) {
me->updateFrequency = p_updateFrequency;
}
int Sensor_getValue(const Sensor* const me) {
return me->value;
}
Sensor * Sensor_Create(void) {
Sensor* me = (Sensor *) malloc(sizeof(Sensor));
What Is Embedded Programming? 13
if(me!=NULL)
{
Sensor_Init(me);
}
return me;
}
void Sensor_Destroy(Sensor* const me) {
if(me!=NULL)
{
Sensor_Cleanup(me);
}
free(me);
}
测试程序
应用测试
#include "Sensor.h"
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
Sensor * p_Sensor0, * p_Sensor1;
p_Sensor0 = Sensor_Create();
p_Sensor1 = Sensor_Create();
/* do stuff with the sensors ere */
p_Sensor0->value = 99;
p_Sensor1->value = -1;
printf("The current value from Sensor 0 is %d\n",
Sensor_getValue(p_Sensor0));
printf("The current value from Sensor 1 is %d\n",
Sensor_getValue(p_Sensor1));
/* done with sensors */
Sensor_Destroy(p_Sensor0);
Sensor_Destroy(p_Sensor1);
return 0;
}
这样就简单实现了一个传感器的类,但是这样只是基于对象的编程,还不是面向对象的编程,因为面向对象的编程的类的三个特征:
封装、继承、多态,到目前为止我们只触及到了封装,接下来我们将在此基础上做修改,实现继承和多态的特性,才是真正的面向对象噻!
一看时间10:30分了,自己越来越懒了,下班回家了就啥也不想干了,虽然还有那么多未干的事情。