Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не понимаю ООП [2]
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Не понимаю ООП

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

16. energ - 09 Мая, 2011 - 14:12:02 - перейти к сообщению
честь сам как то раньше брался за ооп, хотя его практиковал писал класс для тренировки, чсто для себя по ходу обучения,
шас разрабатываю небольшые онлайн сервисы опп пока что не понадобился пользуюсь только функциями, инклюдами недавно для одного мультигенера понадобилась рекурсия в функцие.
Так что ооп нужно только по ходу усложненеия работ, скриптов, структур, напешите парку простеньких классов, попробыйте поделать производные от них и т.д. я учился чито по этим темам http://www.php.su/learnphp/phpoo/?basic и все на что они ссылаются))

вот небольшой пример класса который писал для тернировки

Выводит инфу об атоме по таблице минделеевеа
PHP:
скопировать код в буфер обмена
  1. class atom{
  2.         var $proton;
  3.         var $neytron;
  4.         var $electron;
  5.  
  6.         var $name;
  7.         var $pryadkoviynomer;
  8.        
  9.         var $gruppa;
  10.         var $period;
  11.  
  12.         function input($name, $pryadkoviynomer) {
  13.                 $this->proton=$pryadkoviynomer;
  14.                 $this->neytron=$pryadkoviynomer;
  15.                 $this->electron=$pryadkoviynomer;
  16.                
  17.                 $this->pergrupp($pryadkoviynomer);
  18.                 $this->name=$name;
  19.                 $this->vivod();
  20.                
  21.  
  22.                
  23.         }
  24.  
  25.         function vivod(){
  26.                 echo $this->name." :<br>Порядковый номер -
  27.                 ".$this->pryadkoviynomer."<br>Группа - ".$this->gruppa."<br>Период -
  28.                 ".$this->period;
  29.                
  30.         }
  31.  
  32.                
  33.                
  34.                 function pergrupp($pryadkoviynomer){
  35.                         $this->pryadkoviynomer=$pryadkoviynomer;
  36.                        
  37.                         if ($pryadkoviynomer==1){                              
  38.                                 $this->gruppa=1;
  39.                                 $this->period=1;
  40.                         }
  41.                         if ($pryadkoviynomer==2){                              
  42.                                 $this->gruppa=8;
  43.                                 $this->period=1;
  44.                         }
  45.                         if ($pryadkoviynomer>=3 and $pryadkoviynomer<=10){                             
  46.                                 $this->gruppa=$pryadkoviynomer-2;
  47.                                 $this->period=2;
  48.                         }
  49.                         if ($pryadkoviynomer>=11 and $pryadkoviynomer<=18){                            
  50.                                 $this->gruppa=$pryadkoviynomer-10;
  51.                                 $this->period=3;
  52.                         }
  53.                         if ($pryadkoviynomer>=19 and $pryadkoviynomer<=28){
  54.                                 if ($pryadkoviynomer>=26 and $pryadkoviynomer<=28)                             
  55.                                         $this->gruppa=8;
  56.                                 else
  57.                                         $this->gruppa=$pryadkoviynomer-18;
  58.        
  59.        
  60.                                 $this->period=4;
  61.                         }
  62.                         if ($pryadkoviynomer>=29 and $pryadkoviynomer<=36){                            
  63.                                 $this->gruppa=$pryadkoviynomer-28;
  64.                                 $this->period=4;
  65.                         }
  66.                 }
  67.        
  68. }
  69.  

(Добавление)
добавлю еще ооп хороша в фраемворках, больших крупных библиотеках функций, где их удобно обьеденять в класс и использовать как часть класс
17. igosja - 13 Марта, 2013 - 16:45:44 - перейти к сообщению
Приветствую форумчан. Я не хотел плодить дурацкие темы на форуме, по сему пишу в хвост старой. У меня примерно та же проблема - не понимаю практической пользы от ООП. Навыки в программировании есть, создаю сайты, на полную маслаю функции, шаблоны и прочие прелести, понимаю принцип работы ООП, но не понимаю практической пользы от использования объектов. Прошу пояснить дураку чем ООП полезно.

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

По большому счету всю страницу можно написать без ООП, функций и циклов используя только конструкции 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) раз(а) по всему документу.

Поясните, пожалуйста, подобным способом, какую выгоду дают объект с классом, ибо я никак не понимаю их практической пользы.
18. DelphinPRO - 13 Марта, 2013 - 16:54:15 - перейти к сообщению
на таких примитивных примерах вы не поймете "практической пользы" объектов
19. esterio - 13 Марта, 2013 - 16:57:45 - перейти к сообщению
igosja
ООП не лекарство от всех бед. Есть отлчные проекты написаны полностю в процедурном стиле. Если не понимаете зачем не беритесь. Делайте и далее в процедурном стиле. И да новую тему все же было луше создать.
20. igosja - 13 Марта, 2013 - 17:24:45 - перейти к сообщению
DelphinPRO пишет:
на таких примитивных примерах вы не поймете "практической пользы" объектов

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

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

Правильно ли я вижу пользу ООП?
21. digi - 13 Марта, 2013 - 17:56:50 - перейти к сообщению

igosja, вы сайтами занимаетесь или чем? ;)
22. igosja - 13 Марта, 2013 - 17:58:59 - перейти к сообщению
digi пишет:
igosja, вы сайтами занимаетесь или чем? ;)

Ими самыми.
23. digi - 13 Марта, 2013 - 18:26:25 - перейти к сообщению
igosja пишет:
Ими самыми.

с какими-нить фреймворками знаком? что такое git и composer известно?
24. igosja - 13 Марта, 2013 - 18:33:23 - перейти к сообщению
digi пишет:
с какими-нить фреймворками знаком? что такое git и composer известно?

Да, извесно. Не могли бы Вы перейти к результирующей части этих распросов.
25. Stierus - 13 Марта, 2013 - 18:54:13 - перейти к сообщению
igosja, посмотрите статейку http://habrahabr[dot]ru/post/147619/ . Возможно, она добавит понимания. На работе брали стажеров - паренек решил структурировать знания для них, а потом и на хабре выложил.
26. caballero - 13 Марта, 2013 - 18:58:06 - перейти к сообщению
Цитата:
На сколько сложной должна быть задача, чтобы понять?

сложность тут ни при чем

Цитата:
Правильно ли я вижу пользу ООП?

неправильно - количество дерганий функций тут ни причем тоже
27. phphtmlcss - 13 Марта, 2013 - 18:58:49 - перейти к сообщению
igosja пишет:
digi пишет:
с какими-нить фреймворками знаком? что такое git и composer известно?

Да, извесно. Не могли бы Вы перейти к результирующей части этих распросов.

Ни жди тут ответов! иди сюда http://myrusakov[dot]ru/ и тебе все объяснят ! Тут ловить нечего!
28. avtor.fox - 13 Марта, 2013 - 19:00:05 - перейти к сообщению
В бааааааааан отправьте phphtmlcss Закатив глазки
29. phphtmlcss - 13 Марта, 2013 - 19:01:50 - перейти к сообщению
avtor.fox пишет:
В бааааааааан отправьте phphtmlcss Закатив глазки

А что в бан та! ты читал что пишут? был задан вопрос а вместо ответа на оборот сто вопросов!
30. Stierus - 13 Марта, 2013 - 19:03:46 - перейти к сообщению
phphtmlcss, ваши ответы мы видели в соседних темах Улыбка

 

Powered by ExBB FM 1.0 RC1