Я столкнулся с такой же проблемой при изучении ООП (который в данный момент всё ещё изучаю). Пока читал книгу, мало представлял, как применять эти знания на практике. Но ответ нашёлся.
В начале изучения PHP, для практики я начал делать собственный проект, который мне был интересен, но как оказалось в будущем, он не такой простой, как ожидалось. Начал естественно в процедурном стиле, не знал ничего о разделении логики и вывода, всё было написано вперемешку. Потом узнал про разделение кода и разделил его. Но не просто разделил, а перед этим столкнулся с проблемами, вызванными неразделённым кодом.
Так вот проект растёт, и набралась уже куча проблем на архитектурном уровне, которые я не могу решить процедурным стилем. Начал видеть некоторые проблемы и понимать их суть. И вот когда понял суть проблемы, начали вспоминаться шаблоны и приёмы, о которых я читал в книге по ООП. Начал сталкиваться с повторением кода, тесными связями (там, где их видел), и в этих местах применял знания из книги, для устранения выявленных проблем.
Мой совет: делайте свой сложный проект, как умеете, и по мере роста проекта, неизбежно начнут возникать проблемы, требующие ООП подхода. Вот тогда информация из книг станет применима к практике. Вы будете решать реальные проблемы в своём проекте при помощи знаний полученных из книги. Причём это будет интересно и доставит удовольствие.
ЗЫЖ: Так же многие советуют использовать фреймворки. Пока я решил этого не делать именно для того чтобы понять - как и для чего применять ООП. Я считаю, что фреймворки это уже следующий шаг, во всяком случае, для такого самоучки как я. Возможно для человека с соответствующей базой это именно то, что нужно.
ЗЗЫЖ: Книгу по ООП читал ту же что и вы.