WEB开发网
开发学院软件开发C++ C++可扩展的编程模式 阅读

C++可扩展的编程模式

 2012-12-13 16:53:29 来源:WEB开发网   
核心提示: 注意:设计原则尽量不要去修改基类内容,有新的东西要从派生类中去实现,C++可扩展的编程模式,层层派生,派生模式使得可扩展、#ifndef WIN_32_TEST_H#define WIN_32_TEST_H#include <iostream>#include <ctime>#include

 注意:设计原则----尽量不要去修改基类内容,有新的东西要从派生类中去实现。层层派生。派生模式使得可扩展、

#ifndef WIN_32_TEST_H
#define WIN_32_TEST_H
#include <iostream>
#include <ctime>
#include <string>
using std::endl;
using std::cout;
using std::string;

//钟表的几种颜色
enum Color
{
red,
blue,
white,
black
};

//钟表的形状
enum Shape
{
square, //方形
circle //圆形
};

//抽象钟表基类。将钟表类通用方法,例如显示时间抽象出来,放在基类中。
class Clock
{
public:
inline string GetTime() //显示时间的方法通用,所以抽出来作为基类中方法
{
time(&now);
NT = localtime(&now);
int nHour = NT->tm_hour;
int nMinute = NT->tm_min;
int nSecond = NT->tm_sec;
char *pTemp = new char[24];
memset(pTemp, 0, 24);
itoa(nHour, pTemp, 10);
string sHour = pTemp; //转换Hour
memset(pTemp, 0, 24);
itoa(nMinute, pTemp, 10);
string sMinute = pTemp; //转换分钟
memset(pTemp, 0, 24);
itoa(nSecond, pTemp, 10);
string sSecond = pTemp; //转换秒数
string sTime = sHour + ":" + sMinute + ":" + sSecond;
if (pTemp)
{
delete [] pTemp;
pTemp = NULL;
}
return sTime;
}

//返回表的外观颜色
virtual int GetColor() = 0; //纯虚函数,抽象类不能实例化对象

private:
time_t now;
struct tm *NT;
};

//派生类---挂钟
class WallClock : public Clock
{
public:
int GetColor() //重写派生类的虚方法
{
return red;
}


//挂钟的形状,派生类自己的方法
int GetShape()
{
return square;
}
};

//派生类---闹钟
class AlarmClock : public Clock
{
public:
int GetColor()
{
return black;
}


//闹钟形状----闹钟类自己的方法
int GetShape()
{
return circle;
}
};

//后续闹钟有功能增加了,需要从AlarmClock类派生,而不是从Clock派生
class AlramClockExtend : public AlarmClock
{
public:
void Alarm() //添加了闹铃功能
{
cout<<"Alarm"<<endl;
}
};

#endif

Tags:扩展 编程 模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接