Как уже многие ответили, ООП - это просто способ управлять сложностью. Не самый идеальный, но самый популярный и рабочий вариант.
Проблема "в учебнике все понятно, а в реальном коде непонятно" мне знакома, тоже с таким сталкивался в самом начале. Загвоздка тут в том, что надо перестать сопоставлять объекты в ООП с реальными объектами материального мира. Это абстракции, а примеры с кошечками и собачками дают для того, чтобы было проще читателю все это представить. На самом деле объект - это что угодно, что можно выделить в предметной области в виде чего-то самостоятельного и обособленного.
Лучший совет, помимо литературы будет наверное такой - читайте и изучайте код проектов с ООП. Начните с небольших, с таких, предметная область которых вам понятна. Посмотрите, какие абстракции в них есть, что выделили в отдельные классы, как это все взаимодействует друг с другом.