interface vs implementation
RU: интерфейс и реализация
The two sides of an abstraction. The interface is the visible surface a user depends on — for a function, its name, its inputs, and its return value; it acts as a contract. The implementation is the hidden machinery that fulfils that contract — the function body and the instructions it runs. The implementation can be rewritten freely as long as the interface keeps its promise, so users never have to change.