Do the "Dependency Inversion Principle" (DIP) and "Design to Interfaces Principle" express the same principle? If not, what would be the difference?
EDIT
To clarify and narrow down the context a bit: by interface I mean a programmatic interface, like a Java interface
or a pure abstract base class in C++. No other 'contracts' are involved.