Skip to content

Instantly share code, notes, and snippets.

@m1irka
Created May 5, 2026 07:19
Show Gist options
  • Select an option

  • Save m1irka/7f72a91898b4daaae1596c4a98e4c31f to your computer and use it in GitHub Desktop.

Select an option

Save m1irka/7f72a91898b4daaae1596c4a98e4c31f to your computer and use it in GitHub Desktop.
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <thread>
#include <windows.h>
using namespace std;
bool randomCheck(const string& action)
{
bool ok = rand() % 2;
cout << action << (ok ? " : WORK\n" : " : ERROR\n");
return ok;
}
class PowerSupply {
public:
void PoverOn() { randomCheck("Power On"); }
void Poveroff() { randomCheck("Power Off"); }
void SupplyToGPU() { randomCheck("Power to GPU"); }
void SupplyToRAM() { randomCheck("Power to RAM"); }
void SupplyToDiskDrive() { randomCheck("Power to Disk Driver"); }
void SupplyToHDD() { randomCheck("Power to HDD"); }
void StopGPU() { randomCheck("Stoped power to GPU"); }
void StopRAM() { randomCheck("Stoped power to RAM"); }
void StopDiskDrive() { randomCheck("Stoped power to Disk Drive"); }
void StopHDD() { randomCheck("Stoped power to HDD"); }
};
class Sensors
{
public:
void CheckVoltage() { randomCheck("Sensors: Check Voltage "); }
void CheckTempPSU() { randomCheck("Sensors: Check Temperature PSU"); }
void CheckTempGPU() { randomCheck("Sensors: Check Temperature GPU"); }
void CheckTempRAM() { randomCheck("Sensors: Check Temperature RAM"); }
void CheckAllSystems() { randomCheck("Sensors: All system"); }
};
class GPU
{
public:
void Start() { randomCheck("GPU STARTED"); }
void CheckMonitor() { randomCheck("GPU: Checked Monitor"); }
void ShowRAMInfo() { randomCheck("GPU: Show RAM info"); }
void ShowDiskDriverInfo() { randomCheck("GPU: Show Disk Driver Info"); }
void ShowHDDInfo() { randomCheck("GPU: Show HDD Info"); }
void ByeMessage() { randomCheck("Goodbye Message on monitor"); }
};
class RAM
{
public:
void Start() { randomCheck("RAM STARTED"); }
void Analyze() { randomCheck("RAM: Analyze"); }
void Clean() { randomCheck("RAM: Clean"); }
};
class DiskDriver
{
public:
void Start() { randomCheck("DISK DRIVER STARTED"); }
void CheckDisk() { randomCheck("Disk Driver: Check"); }
void Reset() { randomCheck("Disk Driver: Reset"); }
};
class HDD
{
public:
void Start() { randomCheck("HDD STARTED"); }
void CheckBootSector() { randomCheck("HDD: Checked Boot Sector"); }
void Stop() { randomCheck("HDD: Stop"); }
};
class ComputerFacade
{
PowerSupply psu;
Sensors sensors;
GPU gpu;
RAM ram;
DiskDriver diskdriver;
HDD hdd;
public:
void BeginWork()
{
cout << "......-----TURN ON COMPUTER ------..." << endl;
psu.PowerOn();
sensors.CheckVoltage();
sensors.CheckTempPSU();
sensors.CheckTempGPU();
psu.SupplyToGPU();
gpu.Start();
gpu.CheckMonitor();
sensors.CheckTempRAM();
psu.SupplyToRAM();
ram.Start();
ram.Analyze();
gpu.ShowRAMInfo();
psu.SupplyToDiskDrive();
diskdriver.Start();
diskdriver.CheckDisk();
gpu.ShowDiskDriverInfo();
psu.SupplyToHDD();
hdd.Start();
hdd.CheckBootSector();
gpu.ShowHDDInfo();
sensors.CheckAllSystems();
}
void Shutdown()
{
cout << "......-----TURN OFF COMPUTER----......" << endl;
hdd.Stop();
ram.Clean();
ram.Analyze();
gpu.ByeMessage();
diskdriver.Reset();
psu.StopGPU();
psu.StopRAM();
psu.StopDiskDrive();
psu.StopHDD();
sensors.CheckVoltage();
psu.PowerOff();
}
};
int main()
{
srand(time(0));
ComputerFacade computer;
computer.BeginWork();
computer.Shutdown();
system("pause");
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment