David Parnas described two principles for the proper use of modules:
One must provide the intended user of a module with all the information
needed to use the module correctly, and with nothing more.
- One must provide the implementor of a module with all the information
needed to complete the module, and nothing more.
Intro OOP, Chapter 2, Slide 26