Company ASEM (Advanced Software for Equipment Management) is designing software to monitor and control a custom-build system
Question:
Company ASEM (Advanced Software for Equipment Management) is designing software to monitor and control a custom-build system consisting of multiple hardware components (e.g., Equipment1, Equipment 2, and Equipment3).
Each equipment component provides unique status, accepts unique commands, and implements a specific interface for communicating, such as USB, Serial, and TCP/IP.
Regardless of the communication type, each class representing an equipment must provide functionality to get specific status (e.g., getEquipment1_Status1, getEquipment2_Status1) and send specific commands to the device (e.g., sendEquipment1_Cmd1, sendEquipment2_Cmd1). The software to be developed by ASEM will contain a GUI that polls each hardware component for its status data and also provides means for sending commands to the components.
Since hardware development is expected to take longer than the expected development of the GUI, management has decided to simulate the components. That is, there are two streams of equipment: real equipment, composed of Equipment1, Equipment2, and Equipment3; and simulated equipment, composed of SimEquipment1, SimEquipment2, and SimEquipment3.
Develop a design for the software so that the GUI can work the same way using real or simulated components, regardless of the type of component. Your design should be based on an appropriate object-oriented design pattern. Write a program in Java or Python to demonstrate the implementation of your design.