Почитал ответы.
Могу только посоветовать еще развивать объектное мышление. Да, книги - хорошо. В них вы начнете понимать как использовать инструменты ООП и для чего они нужны. Но проектировать ваши типы вы научитесь только после того, когда четко начнете использовать объектное мышление. Пробуйте идя по улице смотреть на то, что вас окружает. И думайте о том, как любой окружающий объект переложить на код. Как сделать потом так, что бы эти объекты было проще создавать с минимальным количеством кода (научитесь использовать наследовани и полиморфизм). Почему что то из реализации нужно скрывать от пользователя (инкапсуляция). Начните думать какую можно создать иерархию классов для нематериальных вещей (процессы, связи, чувства). Когда вы смотря на задачу (подчеркну, что задача любая), будете видеть какие объекты вам нужны и как они взаимодействуют, то значит вы научились ООП.
ООП - лишь еще один инструмент, не думайте что это золотая пуля. Состояние, в целом - зло.