一、题目描述
电视机有开机和关机状态,有音量,有频道,提供音量操作的方法,频道操作的方法。由于电视机只能逐一调整频道,不能指定频道,增加遥控类,遥控类除了拥有电视机已有的功能,再增加根据输入调台功能。
二、代码实现
#include<iostream>
using namespace std;
//声明遥控器类
class Remoter;
//定义电视类
class Tv
{
friend class Remoter;
enum
{
OFF,
ON
};
enum
{
MIN_V,
MAX_V = 100
};
enum
{
MIN_CH = 1,
MAX_CH = 255
};
private:
int mStatus; //电视状态
int mVolume; //声音
int mChannel; //频道
public:
Tv()
{
mStatus = OFF; //状态
mVolume = 10; //声音
mChannel = MIN_CH; //频道
}
void power() //电源按钮
{
mStatus = mStatus ? OFF : ON;
}
void volumeUp()
{
if(mVolume != MAX_V)
mVolume++;
showInfo();
}
void volumeDown()
{
if(mVolume != MIN_V)
mVolume--;
showInfo();
}
void channelUp()
{
if(mChannel != MAX_CH)
mChannel++;
showInfo();
}
void channelDown()
{
if(mChannel != MIN_CH)
mChannel--;
showInfo();
}
void showInfo()
{
if(mStatus)
{
cout << "status ON, volume " << mVolume << ", channel " << mChannel <<endl; //输出格式也可以自行修改
}
}
};
//定义遥控器类
class Remoter
{
private:
Tv *mTv;
public:
Remoter(Tv *tv)
{
mTv = tv;
}
void power()
{
mTv->power();
}
void vUp()
{
mTv->volumeUp();
}
void vDown()
{
mTv->volumeDown();
}
void chUp()
{
mTv->channelUp();
}
void chDown()
{
mTv->channelDown();
}
void setChannel(int ch)
{
if(ch >= mTv->MIN_CH && ch <= mTv->MAX_CH)
{
mTv->mChannel = ch;
mTv->showInfo();
}
}
};
void test() //测试函数可以根据自己需求修改
{
Tv *tv = new Tv();
Remoter remoter(tv);
remoter.power();
remoter.setChannel(25);
remoter.vUp();
remoter.vUp();
remoter.vUp();
remoter.chDown();
remoter.power();
delete tv;
}
int main(int argc, char const *argv[])
{
test();
return 0;
}
三、测试结果