darksmoke
07-06-2008, 18:50
Подскажите пожалуйста.
Не как не могу разобраться с чем едят эти КЛАСЫ. Не могу найти им пременение. Зачем они нужны?
Для начала почитайте это: http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование
А потом можно пройти тест из этой темы (http://forum.oszone.net/thread-108023.html).
И вообще, есть правило - "Не знаешь, зачем что-либо нужно - не используй".
darksmoke
07-06-2008, 20:13
ну как это не используй... . Я знаю другое правило, не знаешь что либо, спроси и научись. И пользуйся в свое удовольствие!
В общем, раз есть тяга к знаниям :) попробую вкратце пояснить.
Пока программки маленькие - классы лучше не использовать. Мороки больше. А потом уже начинают помогать. Например, пишешь игру... ммм... какую бы придумать-то... да пофиг, пусть будет 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/
http://phpclub.ru/detail/article/oop-vs-proc
http://phpclub.ru/detail/article/intro_php5
http://vingrad.ru/PHP-ART-002848
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.