Пропустить навигацию.
Главная

Введение в ООП

Аватар пользователя xioneg

Решил дублировать на блог рунту уроки по программированию игр на языке Python. В данном уроке я кратко расскажу, что такое объекто-ориентированное программирование.

Вы скорее всего уже сталкивались с термином Объектно-Ориентированное Программирование (ООП). Если вы в первый раз слышите об ООП, не волнуйтесь, все достаточно просто.

Что такое ООП? Это абсолютно все. В играх объектом может быть горящая поверхность, вызванная взрывом, или танк,который вызвал этот взрыв. По факту, весь игровой мир может быть объектом. Цель объекта — хранить информацию и предоставить программисту возможность работать с этой информацией. При создании объекта лучше всего начинать с написания информации и возможностей, которые будет данный объект содержать. Рассмотрим на примере танка, который здесь выступает в роли объекта, какие возможности он должен содержать:

  • Позиция: Где находится танк?
  • Направление: В какую сторону “смотрит” танк?
  • Скорость: Насколько быстро танк может передвигаться?
  • Защита: Насколько прочна защита танка?
  • Боеприпасы: Сколько снарядов у танка?

Как только у нас появилась информация о танке, мы должны дать возможность танку передвигаться в игре и выполнять игровые действия. Эти действия называются методами или функциями класса. Напишем методы для нашего танка:

  • Движение: Двигаться вперед
  • Поворот: Разворот танка налево или направо
  • Выстрел: Запуск снаряда
  • Попадание: Это действие происходит в случае попадания вражеского снаряда в танк
  • Взрыв: Замена танка на анимацию взрыва

Мы видим, что методы, как правило, изменяют возможности объекта. Когда мы используем метод Движение, он обновит Позицию танка. Подобным образом, когда используется метод Выстрел количество Боеприпасов будет обновлено (обратим внимание, что при израсходовании всех Боеприпасов, метод Выстрел ничего не будет делать).

P.S. Если Вам интересны самые азы языка Python, просьба указать это в комментариях. В таком случае я подготовлю цикл статей, которые Вам помогут в изучение языка.
P.S.S. Сайт с уроками по pygame

Re: Введение в ООП

Хм... а мне то как дураку объясняли, что ООП это инкапсуляция, наследование и полиморфизм (мб ещё что-то забыл), а оказывается вот оно как :) Думаю, надо всё же давать более фундаментальные знания, а то на одних примерах далеко не уедешь.

А вообще тема интересна (как раз собрался перебраться с perl на python)

Re: Введение в ООП

Стоит заглянуть на википедию, п.4.2.
Какие именно фундаментальные знания нужны? :)

Re: Введение в ООП

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

"""Были у нас параметры танка (рост, вес, цвет глаз...) разрознены. И каждый из них мы держали в голове(в качестве модели программы)... И каждый съедал у нас часть памяти. В результате, мы могли удерживать в памяти около 10 типов сущностей (+\-2)...

Теперь возьмём коробочку и сложим в неё все... И из 10+ сущностей мы получаем одну, включающую их все. И теперь у нас в памяти (имеется ввиду мозг, а не компьютер) может разместиться не только танк(с описывающими его 10+ сущностями), но и земля и снаряды и ещё много всего... В этом и есть смысл инкапсуляции"""

Чёт я думаю стоит написать пару статей про ООП тоже :) типа "моё видение ООП"...

Re: Введение в ООП

Будет отлично, учитывая, что ООП - тема нетривиальная, которую можно рассматривать под разными углами.