Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> объектное vs процедурное, программирование в PHP 
:(
    Опции темы
baldina
Дата 1.4.2013, 14:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



а можно узнать
Цитата(Deja_Vu @  1.4.2013,  10:26 Найти цитируемый пост)
Как связаны abstract методы класса и protected?

и как это проявляется
Цитата(Deja_Vu @  1.4.2013,  14:25 Найти цитируемый пост)
в процессе работы с людьми над большими проектами

?

и еще. если Вам удалось раз и навсегда решить
Цитата(Deja_Vu @  1.4.2013,  10:26 Найти цитируемый пост)
Должен ли один public метод класса вызывать public метода этого же класса?

с удовольствием послушаю решение
PM MAIL   Вверх
Gold Dragon
Дата 1.4.2013, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Цитата(Deja_Vu @  1.4.2013,  15:34 Найти цитируемый пост)
Не совсем понял иронии.

да вообще иронии нет.. Вот только как знание ответа на вопросы поможет в написании кода... Возьми с десяток проектов с абстрактными классами, всё реализовано но у всех по разному..

Цитата(baldina @  1.4.2013,  15:35 Найти цитируемый пост)
с удовольствием послушаю решение 

а мне больше всего хочется послушать вот по этому, особенно по второй части
Цитата(Deja_Vu @  1.4.2013,  11:26 Найти цитируемый пост)
В каких случаях можно использовать static методы? Нужны ли они вообще?




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Fortop
Дата 1.4.2013, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(Deja_Vu @  1.4.2013,  10:26 Найти цитируемый пост)
 Как связаны abstract методы класса и protected?

Ну и как они связаны?  smile

Добавлено через 49 секунд
Цитата(Deja_Vu @  1.4.2013,  10:26 Найти цитируемый пост)
 В каких случаях можно использовать static методы? Нужны ли они вообще?

Почему по-умолчанию считается, что их использовать нельзя?  smile 


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
krundetz
Дата 2.4.2013, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



Цитата(Deja_Vu @  1.4.2013,  14:25 Найти цитируемый пост)
Если же человек понимает, тогда "объектное vs процедурное" вообще не стоит, ибо первое создано что бы снизить сложность понимания исходного кода продукта.

а как вообще можно сравнивать эти этапы эволюции программирования? Процедурный подход, предшествовал структурному, а он в свою очередь предшествовал ООП. И все эволюционные этапы направлены именно на облегчение понимание большого объема исходного кода, а следовательно на облегчение его поддержки.
Цитата(Deja_Vu @  1.4.2013,  10:26 Найти цитируемый пост)
Должен ли один public метод класса вызывать public метода этого же класса?

может использовать вместо должен слово может? если вопрос верен, и именно в этом слове подвох то, не должен.
Цитата(Deja_Vu @  1.4.2013,  14:34 Найти цитируемый пост)
Иначе мне такие программисты напоминают алхимиков, которые пробовали ингредиенты на вкус для определения, чем они являются. 

все гораздо хуже, так как у алхимиков были не совершенные методы исследования. Но они были, а у этих и методов исследования нет никаких. Сегодня один такой деятель, пытался решить проблему ограничения времени выполнения скрипта на хостинге в 30 секунд при помощи введения вызова функции sleep(30). Я бы назвал таких людей не желающими смотреть куда тыкают своим пальцем, пусть это будет фекалии или высоковольтные провода.
Цитата(Fortop @  1.4.2013,  16:15 Найти цитируемый пост)
Почему по-умолчанию считается, что их использовать нельзя?

а почему можно?

Это сообщение отредактировал(а) krundetz - 2.4.2013, 15:51


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
baldina
Дата 2.4.2013, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата(krundetz @  2.4.2013,  15:50 Найти цитируемый пост)
Цитата(Fortop @  1.4.2013,  16:15 )
Почему по-умолчанию считается, что их использовать нельзя?

а почему можно?

опрос затеять штоли))))
PM MAIL   Вверх
Fortop
Дата 2.4.2013, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(krundetz @  2.4.2013,  15:50 Найти цитируемый пост)
а почему можно?

Можно - потому что есть возможность smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
krundetz
Дата 3.4.2013, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



Цитата(Fortop @  2.4.2013,  22:03 Найти цитируемый пост)
Можно - потому что есть возможность

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

вообще на мой взгляд вопросы не совсем корректны в формулировках?

Цитата(baldina @  2.4.2013,  16:34 Найти цитируемый пост)
опрос затеять штоли)))) 

зачем?


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
baldina
Дата 3.4.2013, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата(krundetz @  3.4.2013,  11:40 Найти цитируемый пост)
зачем? 

что бы устроить холивар остроконечников и тупоконечников
PM MAIL   Вверх
Fortop
Дата 3.4.2013, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(krundetz @  3.4.2013,  11:40 Найти цитируемый пост)
можно много чего, например из ружья выстрелить себе в ногу, но ведь никто в здравом уме так не делает

Перечитай свой вопрос. Ты спрашивал "а почему можно"

А нужно ли - это совсем другой вопрос  smile 


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
krundetz
Дата 4.4.2013, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



Цитата(Fortop @  3.4.2013,  13:06 Найти цитируемый пост)
Ты спрашивал "а почему можно"

спалил
Цитата(Fortop @  3.4.2013,  13:06 Найти цитируемый пост)
А нужно ли - это совсем другой вопрос

Ну вот я и говорю, что вопросы не совсем корректны
Цитата(baldina @  3.4.2013,  11:47 Найти цитируемый пост)
что бы устроить холивар остроконечников и тупоконечников 

который ни к чему не приведет, так как у всех разный опыт, кто то программирует простые проекты но считает их мега сложными, кто наоборот и т.д. и т.п. В общем выборка будет не презентована.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Deja_Vu
Дата 9.4.2013, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 15.6.2007
Где: Казань

Репутация: нет
Всего: 2



Такс, извиняюсь, что пропал. Времени не было.

Цитата(baldina @  1.4.2013,  14:35 Найти цитируемый пост)
Цитата(Deja_Vu @  1.4.2013,  10:26 )Как связаны abstract методы класса и protected?

и как это проявляется

Protected методы уровня абстракции класса подразумеваются, что используются в absctract методах. 
Например, если у вас в уровне абстракции есть public метод и в нём используется protected метода, а так же есть abstract метод - то это ошибка проектирования. Это следует из принципа единой ответственности. Класс, который показывает, каким способом расширяется приложение, должен быть ответственен за один из способов расширения.

Цитата(baldina @  1.4.2013,  14:35 Найти цитируемый пост)
Цитата(Deja_Vu @  1.4.2013,  10:26 )Должен ли один public метод класса вызывать public метода этого же класса?

с удовольствием послушаю решение

Нет, не должен. Опять же следует из принципа единой ответственности. 
Чаще всего этот вопрос возникает, когда нужно использовать в методах класса getter/setter. Если ваш класс ответственнен за предоставление данных, то он не должен их же использовать. 
Если нужно выполнять какую то не тривиальную операцию в классе, нужно либо выделить дочернюю абстракцию с решением данной задачи, либо создать отдельный класс, для её решения.

Цитата(krundetz @  2.4.2013,  15:50 Найти цитируемый пост)
может использовать вместо должен слово может? если вопрос верен, и именно в этом слове подвох то, не должен.

Да, вы правы, я не верно задал вопрос.

Цитата(krundetz @  2.4.2013,  15:50 Найти цитируемый пост)
а как вообще можно сравнивать эти этапы эволюции программирования

Вы более элегантно изложили то что у меня вертелось в голове, спасибо.

Добавлено @ 16:52
Цитата(Gold Dragon @  1.4.2013,  14:46 Найти цитируемый пост)
а мне больше всего хочется послушать вот по этому, особенно по второй части

Цитата(Deja_Vu @  1.4.2013,  11:26 )В каких случаях можно использовать static методы? Нужны ли они вообще?

Это самый замечательный функционал, который ввели не до конца продумав.
На мой взгляд static методы нужны и оправданы лишь для порождения экземпляра текущего класса (или дочерних) и получение информации о не расширяемых свойствах класса. 



Это сообщение отредактировал(а) Deja_Vu - 9.4.2013, 16:54
PM Skype   Вверх
baldina
Дата 9.4.2013, 16:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата(Deja_Vu @  9.4.2013,  16:42 Найти цитируемый пост)
Protected методы уровня абстракции класса подразумеваются, что используются в absctract методах. Например, если у вас в уровне абстракции есть public метод и в нём используется protected метода, а так же есть abstract метод - то это ошибка 

имхо чушь
например, что тут не так?
Код

class Shape {
  protected:
     virtual void draw_impl () = 0;
  public:
     void draw () {
         prepare ();
         draw_impl ();
     }
};



Цитата(Deja_Vu @  9.4.2013,  16:42 Найти цитируемый пост)
Если ваш класс ответственнен за предоставление данных, то он не должен их же использовать. 

с чего бы это?
Код

class Detail {
  public:
    virtual double get_volume () = 0;
    double get_mass () {
       return get_volume() * get_density ();
    }
};

или я должен отдельный класс создать для вычисления массы?

 smile 
Цитата(krundetz @  4.4.2013,  09:54 Найти цитируемый пост)
выборка будет не презентована. 

 smile  нерепрезентативна

Добавлено @ 16:58
гы. на С++ написал. ну, думаю меня поймут

Это сообщение отредактировал(а) baldina - 9.4.2013, 17:00
PM MAIL   Вверх
Fortop
Дата 9.4.2013, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(Deja_Vu @  9.4.2013,  16:42 Найти цитируемый пост)
Protected методы уровня абстракции класса подразумеваются, что используются в absctract методах. 

Чего?
Кем подразумеваются?

Цитата(Deja_Vu @  9.4.2013,  16:42 Найти цитируемый пост)
. Если ваш класс ответственнен за предоставление данных, то он не должен их же использовать. 
Если нужно выполнять какую то не тривиальную операцию в классе, нужно либо выделить дочернюю абстракцию с решением данной задачи, либо создать отдельный класс, для её решения.

Не понял.

Т.е. если у меня в сеттере происходит фильтрация каких-то raw значений.
То, если я буду устанавливать свойства скопом (например, инициализации массивом при создании объекта класса), я должен буду этот же функционал фильтрации реализовывать еще раз?
Или создавать специально для этого случая приватные/протектед методы для каждого из свойств и вызывать их в сеттерах и конструкторе соответственно?

А нафига?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
baldina
Дата 9.4.2013, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата(Deja_Vu @  9.4.2013,  16:42 Найти цитируемый пост)
Чаще всего этот вопрос возникает, когда нужно использовать в методах класса getter/setter

Цитата(Deja_Vu @  9.4.2013,  16:42 Найти цитируемый пост)
Если нужно выполнять какую то не тривиальную операцию в классе, нужно либо выделить дочернюю абстракцию с решением данной задачи

для чего по вашему нужны getter/setter? особенно, если операция тривиальная.
что бы при изменении операции (не наследовании, а именно изменении в процессе разработки) не нужно было переписывать доступ к элементам класса.
других резонов нет.
если другие функции этого класса (неважно с каким модификатором доступа) должны получать доступ к этому элементу, логично этот доступ реализовать через getter/setter именно для упрощения обеспечения целостности класса в при его изменениях.

а плодить абстракции вообще надо с осторожностью
PM MAIL   Вверх
Deja_Vu
Дата 10.4.2013, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 15.6.2007
Где: Казань

Репутация: нет
Всего: 2



Цитата
 гы. на С++ написал. ну, думаю меня поймут 

не поймут.

Цитата(baldina @  9.4.2013,  16:58 Найти цитируемый пост)
например, что тут не так?

То что это вообще не подходит под тот случай, который я описыва. Где здесь абстрактный метод?

Цитата
с чего бы это?

Если я правильно понял это C++ творчество, то тут вычисление массы является getter-ом некого виртуального свойства.
Код

class Detail 
{
  private $volume = 0;
  private $density = 0;

  public function getVolume()
  {
     return $this->volume;
  }
  public getMass() 
  {
      return $this->volume * $this->density;
   }
}

Расхождения со своими словами я тут не вижу

Добавлено через 11 минут и 36 секунд
Цитата(Fortop @  9.4.2013,  20:11 Найти цитируемый пост)
Чего?Кем подразумеваются?

Я же написал, что это следствие из SOLID. 
Если вы считаете его не верным, то и следствие для вас будет не верно.

Цитата(Fortop @  9.4.2013,  20:11 Найти цитируемый пост)
Т.е. если у меня в сеттере происходит фильтрация каких-то raw значений.То, если я буду устанавливать свойства скопом (например, инициализации массивом при создании объекта класса), я должен буду этот же функционал фильтрации реализовывать еще раз?Или создавать специально для этого случая приватные/протектед методы для каждого из свойств и вызывать их в сеттерах и конструкторе соответственно?А нафига?

Изходя из SOLID конструктор не попадает под это правило. Извиняюсь, что этого не указал ранее, из головы вылетело.

А вообще, на всякое "А нафига?" можно сказать - да пожалуйста. Только потом сами для себя объясните, по каким правилам вы классы создаёте. Я устал уже от "выковыривания" их из головы.
Как только нарушается одно из правил, создается новый уровень абстракции или выделяется класс для реализации функционала. Такой код на много(на порядок) проще поддерживать. А если суть ООП в снижении сложности поддержки и понимания кода - значит это верный путь, выделять абстракции.
PM Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Избранное | Следующая тема »


 




[ Время генерации скрипта: 0.1780 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.