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

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

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

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


  • Позиция: Где находится танк?

  • Направление: В какую сторону “смотрит” танк?

  • Скорость: Насколько быстро танк может передвигаться?

  • Защита: Насколько прочна защита танка?

  • Боеприпасы: Сколько снарядов у танка?


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

  • Движение: Двигаться вперед

  • Поворот: Разворот танка налево или направо

  • Выстрел: Запуск снаряда

  • Попадание: Это действие происходит в случае попадания вражеского снаряда в танк

  • Взрыв: Замена танка на анимацию взрыва

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

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

Комментарии

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

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

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

Comment by helios on Дек 7th, 2009 at 7:25 утра

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

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

Comment by xioneg on Дек 7th, 2009 at 8:43 утра

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

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

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

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

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

Comment by helios on Дек 7th, 2009 at 9:45 утра

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

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

Comment by warpc on Дек 7th, 2009 at 11:29 утра

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.
  • Поисковые системы будут индексировать и переходить по ссылкам на разрешённые домены.

  • You may insert videos with [video:URL]
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <apt>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <pascal>, <php>, <python>, <ruby>, <sql>, <xml>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании