Для чего до реализации класса определять интерфейс?
Почему в книжках по многим языкам программирования (C#, Objective-C) сначала определяют интерфейс, а потом реализуют класс? Не проще ли сразу писать класс? Так ведь и кода меньше получается.
Почему интерфейс это не лишняя трата времени и строк кода?
Почему нужно сначала описать интерфейс, а потом реализовать класс?
А подскажите что конкретно почитать?
Просто большинство встреченных книг подробно описывают "как" и "чем" на примере конкретных языков, но практически нигде не написано "зачем", либо написано общими фразами, предполагая что "ну это вы проходили на прошлой неделе".
Как переключить сознание с «процедурно ориентированного» подхода на «объектно ориентированный»?
По поводу дополнения к вопросу:
Ответ на вопрос «зачем?» тривиален: так удобнее.
А вот понять почему можно только на собственном опыте, это как почему сладкое вкусно. Сколько не обьясняй, пока не попробуешь не поймешь.