Имя пользователя:
Пароль:
 

Название темы: класы в ПХП
Показать сообщение отдельно

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


В общем, раз есть тяга к знаниям попробую вкратце пояснить.

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

Примерчик на псевдокоде (этот псевдокод ближе к JavaScript'у, т.ч. не надо вдаваться в детали):

Код: Выделить весь код
класс Зверушка (тип, цвет, размер, скорость) {
// сначала инициализация
this.тип = тип;
this.цвет = цвет;
this.размер = размер;
this.скорость = скорость;
this.положение_х = 0;
this.положение_y = 0;

// метод "Движение" будет описывать способ движения зверушки. В данном случае - по достижению конца строки переходит на новую строку, но придумывать можно что угодно, конечно
this.движение = функция() {
  this.положение_х += this.скорость;
  если (this.положение_х > 10)
     {
     this.положение_y++;
     this.положение_x = 0;
     }
}

this.отрисовка = функция() {
  разные_функции_отрисовки(); // в зависимости от указанного типа, цвета и размера
  this.движение(); // после отрисовки кадра нужно передвигаться дальше
}
} // конец описания класса


функция инициализации() {
  a = new Зверушка("хрен", "зелёный", "10см", "1 клетка за кадр");
  b = new Зверушка("слон", "розовый", "8 см", "0,5 клетки за кадр");
  c = new Зверушка("кот", "чёрный", "13 см", "2 клетки за кадр");

  window.setInterval("draw()", 40); // ну это чисто из JavaScript'а - каждые 40 мс вызывать функцию draw();
}


функция draw() {
  a.отрисовка();  // вызываем функцию отрисовки для первого объекта
  b.отрисовка();
  c.отрисовка();
 // вообще, я бы поместил однотипные объекты в массив, но не суть.
}
В общем, вот. Один раз описываешь класс со всеми его свойствами и методами, а потом просто создаёшь объекты и вызовом простых методов управляешь ими.
Можно, конечно, обойтись и обычным подходом - насоздавать функций, отвечающих за движение, за отрисовку, кучу переменных-массивов, но в них легко запутаться. ООП всё это упорядочивает.

Псц, объяснил...

Вот ещё можно почитать теории объектно-ориентированного программирования:
http://www.intuit.ru/department/se/tppobj/
http://www.intuit.ru/department/se/oopbases/
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:04, 07-06-2008 | #4

Название темы: класы в ПХП