#include <iostream> using namespace std; class Clock { public: Clock() { cout << "Clock enabled" << endl; } ~Clock() { cout << "Clock disabled" << endl; } }; class Bus { private: Clock& clk; public: Bus(Clock& c):clk(c) { cout << "Bus initialized" << endl; } ~Bus() { cout << "Bus stopped" << endl; } void write(int addr, int val) { cout << "Bus write: " << addr << " " << val << endl; } }; class Driver { private: Bus& bus; public: Driver(Bus& b):bus(b) { cout << "Driver started" << endl; } void operate(int addr, int val) { // perform bus write bus.write(addr,val); } ~Driver() { cout << "Driver stopped" << endl; } }; class SystemController { private: // SystemController must own Clock, Bus, and Driver Clock clk;Bus bus;Driver drvr; // Dependencies must be wired here public: // Constructor should set up dependencies SystemController() : bus(clk),drvr(bus){} void run(int addr, int val) { // trigger driver operation drvr.operate(addr,val); } }; int main() { int addr, val; cin >> addr >> val; { SystemController sys; sys.run(addr, val); } return 0; }
Test Cases
Test Results
Input
5 10
Expected Output
Clock enabled Bus initialized Driver started Bus write: 5 10 Driver stopped Bus stopped Clock disabled