interfaces:
An interface refers to the point of interaction between components. Interfaces are applicable at both the hardware and software level. In general, an interface exposes a contract without exposing the underlying implementation details. In Object Oriented Programming, interfaces define abstract types that expose behavior, but contain no logic. Implementation is defined by the class or type that implements the interface.