8.1. Modula-2

In Modula-2, ‘a separate module is split into two parts: a definition part and an implementation part. The definition module gives information as to what services are provided; and the implementation module contains the full code of the module: it specifies how the services are to be provided. These two parts of a separate module are stored in two different files’ ([3]). By using an opaque type, clients can be written that are not dependent on the code of the implementation module.