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