почитайте книгу Бертрана Мейера "Объектно-ориентированное конструирование программных систем" - это пожалуй на сегодняшний день одна из самых содержательных книг по ООП
P.S. книги рекомендую читать на английском т.к. русские переводы на мой взгляд желают лучшего. С докой не так критично, но лучше тоже читайте на английском. Привыкайте так сказать