Вы не можете заняться разработкой программного обеспечения, не познакомившись с объектно-ориентированным программированием. Для этого есть веская причина. ООП делает ваш код более управляемым и тестируемым. В этом посте я рассмотрю пример, чтобы описать некоторые преимущества ООП.

Делегирование обязанностей

Прежде чем писать хоть одну строчку кода, вам лучше понять проблему, которую вы пытаетесь решить. Работайте над определением различных функциональных групп и поведения проблемы, которую вы пытаетесь решить. Каждая группа, скорее всего, станет отдельным классом. Поведение каждой группы будет определять способ настройки наследования.

Давайте рассмотрим пример написания кода CLI-игры в крестики-нолики. Какова структура нашего игрового примера? У нас есть сама доска, игроки, фигуры, способ отображения данных и сама игра. Все они получат свои собственные классы.

Каково поведение разных классов? Сама плата будет содержать данные платы, и для этого ей потребуется функциональность для обновления набора данных платы. Игрок может быть либо человеком, либо ИИ. Мы продолжим и разделим оба типа игроков на отдельные классы. Части действительно должны предоставить воспроизводимый объект либо для части X, либо для части O. Класс отображения обеспечит визуальное отображение всех сообщений и данных доски. Класс игры должен содержать все особенности самой игры. Например, чья сейчас очередь, игра окончена и тому подобное. Кажется достаточно простым.

Определите любое общее поведение

Игрокам-людям и ИИ будет предложено сделать ход, выбрать имя и/или фигуру (X/O). Любая функциональность или состояние, совместно используемое человеческим классом и классом ИИ, может быть передано в родительский класс, называемый игроком. И человеческий класс, и класс ИИ могут наследовать это общее поведение от родительского класса. Мы назовем его классом игрока. Это поможет сохранить ваш код СУХИМ. Любое уникальное поведение дочерних классов может быть записано в самом дочернем классе.

Чем более конкретными вы сможете сделать свои классы и методы, тем легче будет их тестировать. Цель - единая ответственность для каждого класса. Это имеет большое значение для ремонтопригодности и счастья программиста!