[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объясните в чем преимущества ООП?
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
Arh
slobotsky.denis
хотя я кажется начинаю понимать, именно в этом случае человек может быть мужчина и женщина, тогда нужно проверить что они унаследованы от human
но не уверен что
function wc (human $obj) {

}

не будет ругарться на это

class Man extends Human {

}


$man = new man;
wc ($man)


там же экземпляр класса man а не human, или норм?)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
S.Chushkin
Цитата (Arh @ 31.10.2014 - 20:33)
Разве функция wc не...

Вот за такую помесь ежа с ужом надо бить большой толстой метровой линейкой по рукам. wink.gif

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
Цитата (Arh @ 31.10.2014 - 20:39)
но не уверен что ... не будет ругарться ...

Не будет. sad.gif
Во за это разрабам ПХП надо тоже линейкой по рукам.

Выше правильно сказали, что ООП в ПХП специфическое. Специфику надо учитывать, но не надо возводить в абсолют.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
slobotsky.denis
Цитата (Arh @ 31.10.2014 - 20:39)
именно в этом случае человек может быть мужчина и женщина, тогда нужно проверить что они унаследованы от human

Да.

Цитата (Arh @ 31.10.2014 - 20:39)
не будет ругарться на это

Да.

Цитата (Arh @ 31.10.2014 - 20:39)

там же экземпляр класса man а не human, или норм?)

Норм, потому что Man extends Human

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
Arh
S.Chushkin
Я пытаюсь разобраться) если всегда бить и ничего не объяснять, то программистов вообще не останется, всё будут с переломанными руками =)

Всё равно не вижу практического применения на сайтах)


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
slobotsky.denis
Цитата (S.Chushkin @ 31.10.2014 - 20:44)
Во за это разрабам ПХП надо тоже линейкой по рукам.

За что? Ведь
Цитата (slobotsky.denis @ 31.10.2014 - 20:45)
Man extends Human



_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
Arh
Цитата (slobotsky.denis @ 31.10.2014 - 20:46)
За что? Ведь
Цитата (slobotsky.denis @ 31.10.2014 - 20:45)
Man extends Human

А если проверить

function wc_woman (woman $obj) {

}


тоже будет нормально?
ведь $obj это экземпляр класса woman но и наследован от human

то есть и так не будет ошибки и так?
function wc_woman (human $obj) {

}


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
S.Chushkin
Цитата (Arh @ 31.10.2014 - 20:45)
Всё равно не вижу практического применения на сайтах)

Удобство, скорость, надёжность на средних и больших проектах, также на многочисленных.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
slobotsky.denis
Цитата (Arh @ 31.10.2014 - 20:49)

тоже будет нормально?
ведь $obj это экземпляр класса woman но и наследован от human

Всё правильно.

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
Arh
S.Chushkin
Удобство, скорость, надёжность на средних и больших проектах, также на многочисленных.


Да это понятно, это пишут в любой статье про ООП, но на практике что можно наследовать в той же гостевой книге кроме сторонних библиотек типа отправки почты или PDO, конечно если постараться, придумать наверно можно, но смысл?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
S.Chushkin
Цитата (slobotsky.denis @ 31.10.2014 - 20:46)
За что? Ведь
Цитата (slobotsky.denis @ 31.10.2014 - 20:45)
Man extends Human

Я не совсем точно выразился. Бить надо за то, что при
f(Human $o)
для
f($Man)
имеется доступ ко всей структуре Man, а не структуре Human. По сути фундаментальная ошибка разрабов, которая опустила interface до бесполезности.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
Цитата (Arh @ 31.10.2014 - 20:56)
Да это понятно, это пишут в любой статье про ООП, но на практике что можно наследовать в той же гостевой книге кроме сторонних библиотек типа отправки почты или PDO, конечно если постараться, придумать наверно можно, но смысл?

Гостевая это мелкий проект.
Вот когда будет проект хотя бы тысяч на 20 строк и двух десятков модулей (типа гостевой), вот тогда и наступит прозрение wink.gif

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
slobotsky.denis
S.Chushkin
Ааа, понял.

Цитата (S.Chushkin @ 31.10.2014 - 21:04)
которая опустила interface до бесполезности

Да не. Моя IDE, к примеру, для автодополения покажет только методы Human. Удобно)

А кто обращется с Human'ом как с Man'ом, сам себе злобный буратино. На самом деле, в той же яве можно явным образом кастануть Human'а как с Man'у. Иногда это выгоднее, чем что-то рефакторить. Главное TODO на рефакторинг не забыть написать)

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
Arh
S.Chushkin
Цитата
Вот когда будет проект хотя бы тысяч на 20 строк и двух десятков модулей (типа гостевой), вот тогда и наступит прозрение


В том то и дело что есть такой проект.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
slobotsky.denis
Цитата
А если не понадобится?) Странно, обычно в "а что если" винят как-раз таки приверженцев ООП. Типа сидят они дни на пролёт и строят никому не нужные супер универсальные абстракции.
Тогда мне не понятно, для чего такой "веселый" изначальный код задачи. Полиморфизм подразумевает много сущностей. Поли - много, морфа - форма. Если задача стояла просто не пустить девочку в мужской туалет, вообще достаточно if...else. Если там
Цитата
Собака тоже умеет pee()
, то пример inpost провалился. По причинам, что я описал выше. Это не полиморфизм, а некое подобие фабрики. Некое. Оно не то, чтобы плохо, но это не решает задачу, как таковую. Незачем тогда было кидаться модными словечками)))

Все дело в том, что у ООПэшников настолько засело под коркой, что первичен объект, что вы даже представить не можете другую парадигму. Где первично действие. Где объектам вообще места нет. И где инструкция new создает не объект, а всего лишь экземпляр класса.

Если конкретнее, я бы решал эту задачу так, вообще без классов boy и girl, тем более child:
///////////////////////////////////////////////////////////////
// Библиотеки
///////////////////////////////////////////////////////////////
class Bathroom_Pee
{
public function __call($name, $arg)
{
return $this->inPants($arg[0]);
}

public function standing($subj)
{
return $subj .': делает это стоя';
}

public function sitting($subj)
{
return $subj .': леди не культурно об этом говорить';
}

public function inPants($subj)
{
return $subj .' в штаны';
}
}


class Bathroom
{
public function allPee($pee)
{
// тут мы проверяем, что унитаз не сломан
//...

echo $pee .'<br>';
}
}


///////////////////////////////////////////////////////////////
// Контекст
///////////////////////////////////////////////////////////////

$throng = array('boy' => 'standing',
'girl' => 'sitting',
);


$room = new Bathroom();
$pee = new Bathroom_Pee();


foreach($throng as $child => $method)
{
$as = $pee->$method($child);
$room->allPee($as);
}

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

В императиве кто, это просто данные. А вот что с ними делать - вопрос другой. Чем лично мне это больше нравится. Свободой. Я могу заставить программу делать все что угодно.

Я могу заставить кота писить в унитаз одним движением. Очень полезная функция))) А тебе для этого нужно сначала эту кошку сделать, обучить её, как Куклачев. Мало того, в твоей реализации это вообще невозможно, так как кошка, это не child и не может в её реализации быть метода "говорить". Как и в абстрактном классе не может быть метода "шевелить хвостом".

Цитата
В промышленном коде (который про enterprise и деньги, а не амбиции и личные предпочтения) данная тема вообще бессмыслена, ибо давно уже сформировались определённые стандарты, проверенные временем и чьи-ми то кошельками.
Это не стандарты))) Это стереотипы, которые нужно разрушать. Иначе скучно жить, если всю жизнь заглядывать всем в рот. А про кошельки - вопрос спорный. И по времени разработки и уж тем более по последующему обслуживанию.

Цитата
И я бы здесь не отписывался, если бы не некоторые проекты, с которыми иногда сталкиваюсь, и при взгляде на код которых хочется сначала оторвать руки такому вот порицателю ООП, писавшему сей код, а потом выколоть глаза себе и уйти на больничный. Навсегда. Прошу прощения за эмоции.
А представляешь каково мне? Сколько бы я оторвал рук? И ведь я не изобретал велосипед, императив вполне себе живая парадигма. Ан нет, всем требуются программисты со знанием ООП. Ну что сказать, вольному воля. Вернее невольному - неволя))) Если про вас говорить.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.