Recall
the picture that I showed you earlier:
It
illustrates an important, general idea: the idea of layered software.
In this picture there are two layers: the application layer and the
implementation layer. The critical point - the property that makes these truly
separate layers - is that the functionality of the upper layer, and the code
that implements that functionality, are completely independent of the code of
the lower layer. Furthermore the functionality of the lower layer is completely
described in the specification.
We have already
discussed how this arrangement permits very rapid, bug-free changes to the code
implementing an abstract data type. But this is not the only advantage.
Reusability