C++笔记4.44

封装一个电视机的类

  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4.   
  5. class TV  
  6. {  
  7.     friend class Remote;  
  8. private :  
  9.     int mState;//电视状态,开机,还是关机  
  10.     int mVolume;//电视机音量  
  11.     int mChannel;//电视频道  
  12. public :  
  13.     enum{On,Off}; //电视机状态  
  14.     enum{minVol ,maxVol = 100}; //音量从1到100  
  15.     enum{minChannel = 1, maxChannel = 255};//频道从1到255  
  16.   
  17.     TV()  
  18.     {  
  19.         this->mState = Off;//默认关机  
  20.         this->mVolume = minVol;  
  21.         this->mChannel = minChannel;  
  22.     }  
  23.     //电源按钮  
  24.     void onOrOff()  
  25.     {  
  26.         this->mState = (this->mState == On ? Off : On);  
  27.     }  
  28.   
  29.     void volumeUp(void)  
  30.     {  
  31.         if(this->mVolume >= maxVol)  
  32.             {  
  33.             cout << "最大音量!" << endl;  
  34.             return;  
  35.             }  
  36.         else if (this ->mState == Off)  
  37.             {  
  38.             cout << "未打开电源!" << endl;  
  39.             return;  
  40.             }  
  41.         this->mVolume++;  
  42.     }  
  43.   
  44.     void volumeDown(void)  
  45.     {  
  46.         if(this->mVolume <= minVol)  
  47.            {  
  48.                cout << "最小音量!" << endl;  
  49.                return;  
  50.            }  
  51.         else if (this ->mState == Off)  
  52.             {  
  53.             cout << "未打开电源!" << endl;  
  54.             return;  
  55.             }  
  56.   
  57.         this->mVolume--;  
  58.     }  
  59.   
  60.     void channelUp(void)  
  61.     {  
  62.         if(this->mChannel >= maxChannel)  
  63.         {  
  64.             this->mChannel = minChannel;  
  65.         }  
  66.         else if (this ->mState == Off)  
  67.         {  
  68.             cout << "未打开电源!" << endl;  
  69.             return;  
  70.         }  
  71.         this->mChannel++;  
  72.     }  
  73.   
  74.     void channelDown(void)  
  75.     {  
  76.         if(this->mChannel <= minChannel)  
  77.         {  
  78.             this->mChannel = maxChannel;  
  79.         }  
  80.         else if (this ->mState == Off)  
  81.         {  
  82.             cout << "未打开电源!" << endl;  
  83.             return;  
  84.         }  
  85.         this->mChannel--;  
  86.     }  
  87.   
  88.     void showTVState(void)  
  89.     {  
  90.        cout << "电视机的状态为:" << (this->mState==On?"开机":"关机") << endl;  
  91.        cout << "电视机的音量:" << this->mVolume << endl;  
  92.        cout << "电视机的频道:" << this->mChannel << endl;  
  93.     }  
  94.   
  95.     ~TV()  
  96.     {  
  97.         cout << "析构函数" << endl;  
  98.     }  
  99. };  
  100.   
  101. //遥控器的类  
  102. class Remote  
  103. {  
  104. private:  
  105.     TV *pTv;  
  106. public:  
  107.     Remote(TV *pTv )  
  108.     {  
  109.         this->pTv = pTv;  
  110.     }  
  111.   
  112.     void volumeUp(void)  
  113.     {  
  114.         this->pTv->volumeUp();  
  115.     }  
  116.   
  117.     void volumeDown(void)  
  118.     {  
  119.         this->pTv->volumeDown();  
  120.     }  
  121.   
  122.     void channelUp(void)  
  123.     {  
  124.         this->pTv->channelUp();  
  125.     }  
  126.   
  127.     void channelDown(void)  
  128.     {  
  129.         this->pTv->channelDown();  
  130.     }  
  131.   
  132.     void onOrOff(void)  
  133.     {  
  134.         this->pTv->onOrOff();  
  135.     }  
  136.   
  137.     void setChannel(int num)  
  138.     {  
  139.         if(num >=TV::minChannel && num <= TV::maxChannel && this->pTv->mState == TV::On)  
  140.         {  
  141.             this->pTv->mChannel = num;  
  142.         }  
  143.     }  
  144.   
  145.     void showTVState(void)  
  146.     {  
  147.         this->pTv->showTVState();  
  148.     }  
  149.   
  150. };  
  151. int main()  
  152. {  
  153.     TV tv;  
  154.     Remote remote(&tv);  
  155.     //插电开机  
  156.     tv.onOrOff();  
  157.     //音量从0上调4次  
  158.     tv.volumeUp();  
  159.     tv.volumeUp();  
  160.     tv.volumeUp();  
  161.     tv.volumeUp();  
  162.     //频道从1上调3次  
  163.     tv.channelUp();  
  164.     tv.channelUp();  
  165.     tv.channelUp();  
  166.     //显示状态  
  167.     tv.showTVState();  
  168.     //用遥控器关机  
  169.     remote.onOrOff();  
  170.     remote.channelUp();  
  171.     remote.volumeUp();  
  172.     //显示状态  
  173.     tv.showTVState();  
  174.     //用遥控器开机控制  
  175.     remote.onOrOff();  
  176.     remote.volumeDown();  
  177.     remote.volumeDown();  
  178.     remote.setChannel(123);  
  179.     //显示状态  
  180.     tv.showTVState();  
  181.   
  182.     return 0;  
  183. }  

发表评论

邮箱地址不会被公开。 必填项已用*标注