Skip to content

Instantly share code, notes, and snippets.

@XoLinA
Last active April 15, 2026 10:07
Show Gist options
  • Select an option

  • Save XoLinA/3da701fa6d896ef31d9aa540a2a6228f to your computer and use it in GitHub Desktop.

Select an option

Save XoLinA/3da701fa6d896ef31d9aa540a2a6228f to your computer and use it in GitHub Desktop.
#include <iostream>
using namespace std;
class PowerSupply
{
public:
void PowerOn() { cout << "Power Supply: power on\n"; }
void PowerOff() { cout << "Power Supply: shutdown\n"; }
void SupplyVideo() { cout << "Power Supply: supply power to video card\n"; }
void SupplyRAM() { cout << "Power Supply: supply power to RAM\n"; }
void SupplyDrive() { cout << "Power Supply: supply power to optical drive\n"; }
void SupplyHDD() { cout << "Power Supply: supply power to hard drive\n"; }
void StopVideo() { cout << "Power Supply: stop power to video card\n"; }
void StopRAM() { cout << "Power Supply: stop power to RAM\n"; }
void StopDrive() { cout << "Power Supply: stop power to optical drive\n"; }
void StopHDD() { cout << "Power Supply: stop power to hard drive\n"; }
};
class Sensors
{
public:
void CheckVoltage() { cout << "Sensors: check voltage\n"; }
void CheckTempPSU() { cout << "Sensors: check PSU temperature\n"; }
void CheckTempGPU() { cout << "Sensors: check GPU temperature\n"; }
void CheckTempRAM() { cout << "Sensors: check RAM temperature\n"; }
void CheckAllTemps() { cout << "Sensors: check all system temperatures\n"; }
};
class VideoCard
{
public:
void Start() { cout << "Video Card: start\n"; }
void CheckMonitor() { cout << "Video Card: check connection with monitor\n"; }
void ShowRAMInfo() { cout << "Video Card: display RAM info\n"; }
void ShowDriveInfo() { cout << "Video Card: display optical drive info\n"; }
void ShowHDDInfo() { cout << "Video Card: display hard drive info\n"; }
void Goodbye() { cout << "Video Card: display goodbye message\n"; }
};
class RAM
{
public:
void Start() { cout << "RAM: start devices\n"; }
void Analyze() { cout << "RAM: analyze memory\n"; }
void Clear() { cout << "RAM: clear memory\n"; }
};
class HDD
{
public:
void Start() { cout << "Hard Drive: start\n"; }
void CheckBoot() { cout << "Hard Drive: check boot sector\n"; }
void Stop() { cout << "Hard Drive: stop\n"; }
};
class OpticalDrive
{
public:
void Start() { cout << "Optical Drive: start\n"; }
void CheckDisk() { cout << "Optical Drive: check disk presence\n"; }
void Reset() { cout << "Optical Drive: reset position\n"; }
};
class ComputerFacade
{
private:
PowerSupply psu;
Sensors sensors;
VideoCard gpu;
RAM ram;
HDD hdd;
OpticalDrive drive;
public:
void BeginWork()
{
cout << "\n---------- COMPUTER START -------------\n";
psu.PowerOn();
sensors.CheckVoltage();
sensors.CheckTempPSU();
sensors.CheckTempGPU();
psu.SupplyVideo();
gpu.Start();
gpu.CheckMonitor();
sensors.CheckTempRAM();
psu.SupplyRAM();
ram.Start();
ram.Analyze();
gpu.ShowRAMInfo();
psu.SupplyDrive();
drive.Start();
drive.CheckDisk();
gpu.ShowDriveInfo();
psu.SupplyHDD();
hdd.Start();
hdd.CheckBoot();
gpu.ShowHDDInfo();
sensors.CheckAllTemps();
}
void Shutdown()
{
cout << "\n--------- COMPUTER SHUTDOWN --------\n";
hdd.Stop();
ram.Clear();
ram.Analyze();
gpu.Goodbye();
drive.Reset();
psu.StopVideo();
psu.StopRAM();
psu.StopDrive();
psu.StopHDD();
sensors.CheckVoltage();
psu.PowerOff();
}
};
int main()
{
ComputerFacade computer;
computer.BeginWork();
cout << "\n-----------------------------\n";
computer.Shutdown();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment