#include using namespace std; class TLightSource { private: int lightState; virtual void Light(void) = 0; virtual void Dark (void) = 0; public: TLightSource() {lightState = 0;} void TurnOn (void) { if(!lightState) Light(); lightState = 1;} void TurnOff (void) { if(lightState) Dark(); lightState = 0;} int IsOn(void) {return (lightState != 0);} }; class TTungstenBulb : public TLightSource { private: int LightStrength; virtual void Light(void); virtual void Dark(void); public: void SetStrength(int s){ if(s<101 && s>-1){LightStrength=s;} } int ShowStrength(void){ return LightStrength; } }; void TTungstenBulb::Light(void) { cout << "Turning this tungsten bulb ON...\n"; } void TTungstenBulb::Dark(void) { cout << "Turning this tungsten bulb OFF...\n"; } int main(void) { TTungstenBulb MyLamp; cout << "Initial status " << MyLamp.IsOn() << "\n"; MyLamp.TurnOn(); cout << "Current status " << MyLamp.IsOn() << "\n"; MyLamp.TurnOn(); // What's happening if we turn on some more times? MyLamp.SetStrength(50); cout<< "Currenth strength is: "<< MyLamp.ShowStrength()<