This set of code is derived from the work performed building the Direct2Learning Java Avionics training platform (now defunct).
It uses multiple inheritance, however base classes are pure virtual effectively to provide interfaces.
The code sample is missing the complicated ExecScheduler which is where the scheduling of modules is performed. Writing the ExecScheduler is reasonably complex - it needs to work with threads and provide timing. I've got a Java version of this which is at the end for illustration.
Developing from ground up a new IOS using WPF & C#
Previously for the event driven inter object communications in the Java MFD training I’d used a derived version of ARINC429. This worked well although it was clumsy in use.
Basic structure was to have a Message, within which there were multiple MessageDataItems.
The standard way of receiving a message is to implement the interface and then decode each specific message type, and then iterate through the contained messages.