@zanyashlin хороший вопрос. ООП лучше использовать при острой необходимости. Мне тяжело представить учебную задачу, которая воспитает навык определения уместности. У меня обычно на работе она всплывает, когда хочется провести чёткую границу между общим и частным в коде для однотипного взаимодействия моего сервиса и чужих. При этом я тоже самоучка и паттерны не задрачивал. Читал, но не запоминал :)