Separating the Specification and Implementation

Ada requires such a separation. In Ada, the specification information must be placed in the package specification and the implementation details in the package body. Where must the representation details be placed?
Compare Ada with both C and Java in this regard. Take and defend a position as to whether requiring separation of the specification and representation information for a data type is a good language design decision.