Какие проблемы в программировании решает ООП?
Главная проблема, которую решает ООП - управление сложностью. Отсюда проистекает и главный недостаток ООП - если управлять сложностью не надо, то оно избыточно. Новичков отпугивает, если для написания хелло-ворлд требуется десяток строк кода.
ООП позволяет программистам писать не программу целиком, а отдельные объекты.
Если вы наймете 1000 программистов чтобы написать одну программу в процедурном стиле, у вас огромное количество человекочасов уйдет просто на решение конфликтов и ожидание друг друга.
Но в ООП можно сраза архитектурно разделить написание программы на независимые объекты, и программисты смогут работать практически не мешая друг другу.
Для маленьких программ ООП не обязателен, но если ты уже опытный программист, тебе будет просто пользоваться ООП для всего подряд.