2 подписчика
Без чего нельзя себе представить разработку игр? Без Объектно-Ориентированного Программирования (ООП). Я не буду сильно вдаваться в подробности, так как подробного материала в интернете вдоволь, но расскажу нужные нам основы простым языком, чтобы понимать о чем вообще идет речь. Также я сильно упрощу строения мира, для понимаю сути темы.
Как понятно из названия, первое, что надо понять, что такое объект. Объект - это конкретная сущность из множества однотипных, а совокупность особенностей этого множества - класс. Рассмотрим на примере.
Есть ЧЕЛОВЕК по имени Вася. Мы знаем его имя, возраст и любимый жанр музыки. То есть Вася - объект, с конкретными параметрами. Про ЧЕЛОВЕКА как такового, мы не скажем, какую музыку любит, как его зовут и сколько ему лет, но при этом любой ЧЕЛОВЕК слушает музыку, ходит, думает (в частности Вася), это называется методами. В этом и заключается класс, совокупность параметров, по которым мы можем охарактеризовать любого ЧЕЛОВЕКА, и действия которые он может совершать (методы) как ЧЕЛОВЕК.
Но как мы знаем ЧЕЛОВЕК - ПРИМАТ. И как ПРИМАТ он обладает возрастом, умеет ходить и думать. Остальные особенности свойственны только ЧЕЛОВЕКУ. ШИМПАНЗЕ также ПРИМАТ: имеет возраст, ходит и думает. А как ШИМПАНЗЕ может залезть на дерево и обладает иерархическим статусом. Но при этом одинаково происходит механизм мышления.
Это называется "Наследование". Есть класс ПРИМАТ и наследуемые классы ШИМПАНЗЕ и ЧЕЛОВЕК. Оба наследуемых класса обладают параметрами и методами ПРИМАТА, но и имеют особенности своего класса.
Следующее понятие - полиморфизм. Как видим, все ПРИМАТЫ умеют ходить, но делают это по-разному: ЛЮДИ на двух ногах, ШИМПАНЗЕ с упором на руки. Это и есть полиморфизм, действие одно, но выполняется по-разному, в зависимости от наследуемого класса.
Так же есть еще Инкапсуляция. То есть каждый объект - это черный ящик для других объектов, и никто не может узнать или изменить его параметр напрямую. Это может сделать только сам объект и предоставить тебе информацию, как посчитает нужным.
Например, мы не можем узнать возраст Васи просто увидев его, но можем спросить. Он услышит вопрос, и решит, что сказать. А нам остается обрабатывать только ту информацию, которую он дал. Также мы не можем заставить его идти куда-то, просто напрягая его мышцы, но мы можем его попросить сходить куда-то. Но пойдет или нет - решает он.
Последнее понятие - Абстракция. Суть в том, что мы можем представить себе какого-либо ЧЕЛОВЕКА или ШИМПАНЗЕ, а ПРИМАТА просто так не сможем, так как должен быть либо ЧЕЛОВЕКОМ, либо ШИМПАНЗЕ. В то же время ЧЕЛОВЕК может быть еще и СТРОИТЕЛЕМ, ОХОТНИКОМ и т.д. Для этого будут созданы классы-наследники с дополнительными особенностями (Есть еще понятие интерфейсов, но это уже отдельная тема). Но при этом просто ЧЕЛОВЕКА вы все равно можете представить. В данном пример ПРИМАТ, как раз абстрактный класс.
Само собой у всех постулатов еще разные свои тонкости, но в общих чертах это так.
_____________________________________
Спасибо за внимание, надеюсь было интересно и понятно.
Теперь можно приступать к разработке.
Все ссылки можно посмотреть здесь
2 минуты
27 января 2024