* abstract class Connection would have maybe 3 or 4 methods;
* DataConnection would extend Connection and add a couple more methods that were specific to some proprietary protocol.
* POSDataConnection would extend DataConnection and wrap this proprietary protocol for POS machines
* ControllerDataConnection would extend POSDataConnection because a Point of Sale controller is technically a POS machine with a bit more functionality (Really just a couple flags turned on).
* There was plenty more in between; it's been so long now that I've forgotten it all.
It's just like we all learned in college! Object Oriented programming is supposed to model real-life! Except no, it's not. That's stupid and complicated.
Now the part of the OS that was C/C++ was absolutely beautiful. It took the UNIX style of programming / applications seriously; every little piece was its own program, and it worked flawlessly. Anyone could jump in and get to work immediately because it was so well written. You could follow any program top to bottom and it just... made sense!