接触VC之四:COM组件模型基础
2006-07-19 11:36:48 来源:WEB开发网核心提示: 我如果要做一个人的组件对象的话,我首先要定义一些接口来表示人的外部表现行为,接触VC之四:COM组件模型基础(6),class physiology{public:virtual void eat(Food in) = 0;virtual void drink(Liquid in) = 0
我如果要做一个人的组件对象的话,我首先要定义一些接口来表示人的外部表现行为。
class physiology
{
public:
virtual void eat(Food in) = 0;
virtual void drink(Liquid in) = 0;
virtual Somethings toilet() = 0;
};
class psychics
{
public:
virtual Sound laugh() = 0;
virtual Sound cry() = 0;
virtual Sound angry() = 0;
};
class dynamics
{
public:
virtual Speed run() = 0;
virtual Speed walk() = 0;
virtual Interval jump() = 0;
};
我将人的行为分成了生理学、心理学和动力学三类,让它们分别表示人不同的行为。那么,这么三组相关函数就是三个接口。C++组件对象的实现就是从这些接口中多重派生,并实现它们。这样,我们就得到一个组件对象(声明啊,本示例只是一个表示概念,真正的COM组件对象还需要加一些东东)。
class human :
public physiology,
public psychics,
public dynamics
{
public:
void eat(Food in)
{
cout << "Good! Very delicious!";
}
void drink(Liquid in)
{
cout << "No! I am not drunk!";
}
Something toilet()
{
cout << "hum…….";
return dejecta();
}
Sound laugh()
{
return Sound("Ha…Ha…Ha");
}
Sound cry()
{
return Sound("dad!Don’t beat my buns.");
}
Sound angry()
{
return Sound("where did you go last night? Darling.");
}
Speed run()
{
cout << "Run, Police come!";
return 20km/h;
}
Speed walk()
{
cout << "out. yegg, I am no…not afraid o….of y…you.";
return 1m/s;
}
Interval jump()
{
cout << "Yeah….";
return 4m;
}
};
这样,一个组件对象就定义完了。当使用组件对象时,系统所给予你的一个指针。它是一个组件对象实现了的虚类指针,我们可以使用它来调用组件对象对于这个纯虚类所实现的功能(当然,我们有选择什么虚类指针的权利;只要组件对象支持就可以了)。
更多精彩
赞助商链接