PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (6): « 1 2 3 4 5 [6]

> Найдено сообщений: 77
igosja Отправлено: 13 Марта, 2013 - 17:24:45 • Тема: Не понимаю ООП • Форум: Объектно-ориентированное программирование

Ответов: 112
Просмотров: 35327
DelphinPRO пишет:
на таких примитивных примерах вы не поймете "практической пользы" объектов

На сколько сложной должна быть задача, чтобы понять?
Я понимаю такие вещи как инкапсуляция, полиморфизм и наследование.
Есть класс собака, в котором есть свойства и методы с количеством ног, наличием хвоста, шерсти, продолжительностью жизни, умением лаить, лежать, сидеть...
Класс котов лаить не умеет, форма морды у этого класса другая и хвостами они по другому виляют.
Есть дочерний (производный) класс конкретной породы собак с теми же свойствами и методами + что-то, что свойственно только этой породе.

Мое смутное понимание таково, что если мы заганяем в онлайн игру "Стая" целую собачую семью одной породы, у которых разные только пол и возраст, то легче пол и возраст передать в класс, чем дергать на каждую собаку 3 десятка функций по умению лаить, сидеть, лежать, отсчету возраста по сравнению с людьми из поселка за рекой... Таким образом решаются те же задачи - во-первых, это позволяет не умереть со скуки при многократном повторении одного и того же кода, во-вторых, облегчает редактирование, ведь в случае чего менять код нужно только один раз в теле класса, а не 2 (3,5,10,100) раз(а) по функциям.

Правильно ли я вижу пользу ООП?
igosja Отправлено: 13 Марта, 2013 - 16:45:44 • Тема: Не понимаю ООП • Форум: Объектно-ориентированное программирование

Ответов: 112
Просмотров: 35327
Приветствую форумчан. Я не хотел плодить дурацкие темы на форуме, по сему пишу в хвост старой. У меня примерно та же проблема - не понимаю практической пользы от ООП. Навыки в программировании есть, создаю сайты, на полную маслаю функции, шаблоны и прочие прелести, понимаю принцип работы ООП, но не понимаю практической пользы от использования объектов. Прошу пояснить дураку чем ООП полезно.

Более детально о том, что именно мне не доходит.

По большому счету всю страницу можно написать без ООП, функций и циклов используя только конструкции if-else.
Пример. Нам нужно распечатать на странице все цифры от 1 до той, которую введет юзер в input на сайте. Это можно сделать так:
PHP:
скопировать код в буфер обмена
  1. $number = $_POST['number'];
  2. if ($number == 1)
  3. {
  4.    print $number.'<br>';
  5. }
  6. elseif ($number == 2)
  7. {
  8.    print $number.'<br>';
  9.    $number++;
  10.    print $number.'<br>';
  11. }//И так пока не надоест

Чтобы такого не делать придумали циклы:
PHP:
скопировать код в буфер обмена
  1. $number = $_POST['number'];
  2. for ($i=1; $i<=$number; $i++)
  3. {
  4.    print $i.'<br>';
  5. }


Идем дальше. Если у нас в теле кода много раз повторяются одни и те же действия, мы их выносим в функцию.
Пример. Нам нужно распечатать на странице все цифры от 1 до той, которую введет юзер в input на сайте 2 раза, а между этими разами сделать еще что-то. Это можно сделать так:
PHP:
скопировать код в буфер обмена
  1. $number = $_POST['number'];
  2. for ($i=1; $i<=$number; $i++)
  3. {
  4.    print $i.'<br>';
  5. }
  6. /*тут делаем что-то очень сложное и большое, что в цикл пихать никак не стоит, а потом выводим еще раз то же самое*/
  7. for ($i=1; $i<=$number; $i++)
  8. {
  9.    print $i.'<br>';
  10. }

Чтобы такого не делать пишем код c функцией:
PHP:
скопировать код в буфер обмена
  1. function printnumber($x)
  2. {
  3.    for ($i=1; $i<=$x; $i++)
  4.      {
  5.         print $i.'<br>';
  6.      }
  7. }
  8. $number = $_POST['number'];
  9. printnumber($number);
  10. //тут делаем что-то очень сложное и большое
  11. printnumber($number);

Во-первых, это позволяет не умереть со скуки при многократном повторении одного и того же кода, во-вторых, облегчает редактирование, ведь, в случае чего, менять код нужно только один раз в теле функции/цикла, а не 2 (3,5,10,100) раз(а) по всему документу.

Поясните, пожалуйста, подобным способом, какую выгоду дают объект с классом, ибо я никак не понимаю их практической пользы.

Страниц (6): « 1 2 3 4 5 [6]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB