Aside from providing support for structured and object-oriented design, information hiding has unique heuristic power, a unique ability to inspire effective design solutions. I'll just use int s. A useful design alternative, that of simply hiding the ID's data type, was not even considered. The difference between object design and information hiding in this example is more subtle than a clash of explicit rules and regulations. Object design would approve of this design decision as much as information hiding would.
Information hiding can also be useful in designing a class's public interface.
The gap between theory and practice in class design is wide, and among many class designers the decision about what to put into a class's public interface amounts to deciding what interface would be the easiest to write code to, which usually results in exposing as much of the class as possible. From what I've seen, most programmers would rather expose all of a class's private data than write 10 extra lines of code to keep the class's secrets intact. If you can put a function or data into the class's public interface without compromising its secrets, do. Asking about what needs to be hidden supports good design decisions at all levels. It promotes the use of named constants instead of literals at the implementation level.