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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не понимаю ООП [2]

 PHP.SU

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


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

> Без описания
energ
Отправлено: 09 Мая, 2011 - 14:12:02
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




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

(Добавление)
добавлю еще ооп хороша в фраемворках, больших крупных библиотеках функций, где их удобно обьеденять в класс и использовать как часть класс
 
 Top
igosja
Отправлено: 13 Марта, 2013 - 16:45:44
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Март 2013  
Откуда: https://vhol.org


Помог: 3 раз(а)




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

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

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

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

(Отредактировано автором: 13 Марта, 2013 - 16:51:34)

 
 Top
DelphinPRO
Отправлено: 13 Марта, 2013 - 16:54:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




на таких примитивных примерах вы не поймете "практической пользы" объектов


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
esterio
Отправлено: 13 Марта, 2013 - 16:57:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




igosja
ООП не лекарство от всех бед. Есть отлчные проекты написаны полностю в процедурном стиле. Если не понимаете зачем не беритесь. Делайте и далее в процедурном стиле. И да новую тему все же было луше создать.
 
 Top
igosja
Отправлено: 13 Марта, 2013 - 17:24:45
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Март 2013  
Откуда: https://vhol.org


Помог: 3 раз(а)




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

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

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

Правильно ли я вижу пользу ООП?
 
 Top
digi
Отправлено: 13 Марта, 2013 - 17:56:50
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)





igosja, вы сайтами занимаетесь или чем? ;)
 
 Top
igosja
Отправлено: 13 Марта, 2013 - 17:58:59
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Март 2013  
Откуда: https://vhol.org


Помог: 3 раз(а)




digi пишет:
igosja, вы сайтами занимаетесь или чем? ;)

Ими самыми.

(Отредактировано автором: 14 Марта, 2013 - 08:42:09)

 
 Top
digi
Отправлено: 13 Марта, 2013 - 18:26:25
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




igosja пишет:
Ими самыми.

с какими-нить фреймворками знаком? что такое git и composer известно?
 
 Top
igosja
Отправлено: 13 Марта, 2013 - 18:33:23
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Март 2013  
Откуда: https://vhol.org


Помог: 3 раз(а)




digi пишет:
с какими-нить фреймворками знаком? что такое git и composer известно?

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

(Отредактировано автором: 13 Марта, 2013 - 18:50:46)

 
 Top
Stierus Супермодератор
Отправлено: 13 Марта, 2013 - 18:54:13
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




igosja, посмотрите статейку http://habrahabr[dot]ru/post/147619/ . Возможно, она добавит понимания. На работе брали стажеров - паренек решил структурировать знания для них, а потом и на хабре выложил.
 
My status
 Top
caballero
Отправлено: 13 Марта, 2013 - 18:58:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
На сколько сложной должна быть задача, чтобы понять?

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

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

неправильно - количество дерганий функций тут ни причем тоже


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
phphtmlcss
Отправлено: 13 Марта, 2013 - 18:58:49
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)

[+][+][+]


igosja пишет:
digi пишет:
с какими-нить фреймворками знаком? что такое git и composer известно?

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

Ни жди тут ответов! иди сюда http://myrusakov[dot]ru/ и тебе все объяснят ! Тут ловить нечего!
 
 Top
avtor.fox
Отправлено: 13 Марта, 2013 - 19:00:05
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




В бааааааааан отправьте phphtmlcss Закатив глазки
 
 Top
phphtmlcss
Отправлено: 13 Марта, 2013 - 19:01:50
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)

[+][+][+]


avtor.fox пишет:
В бааааааааан отправьте phphtmlcss Закатив глазки

А что в бан та! ты читал что пишут? был задан вопрос а вместо ответа на оборот сто вопросов!
 
 Top
Stierus Супермодератор
Отправлено: 13 Марта, 2013 - 19:03:46
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




phphtmlcss, ваши ответы мы видели в соседних темах Улыбка
 
My status
 Top
Страниц (8): « 1 [2] 3 4 5 6 7 8 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB