[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объясните в чем преимущества ООП?
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
twin
andrey888
Цитата
ведь получается что в действительности ООП своими объектами пытается ЗАМЕНИТЬ хранилище данных , коим во большинстве веб приложений являются и должны являться БАЗЫ ДАННЫХ.  blink.gif


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

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

Попробую доказать наглядно на контрвопросе. Обращаюсь к S.Chushkin и slobotsky.denis. Я написал код в ответ на вопросы. Напишите пожалуйста ваше видение такого задания.

Берем задачу S.Chushkin про зоопарк. И усложняем её. Требуется несколько страниц,
1. на первой перекличка.
2. на второй все животные должны подпрыгнуть.
3. на третьей помахать хвостом.
4. на четвертой пукнуть.

Напишите пожалуйста код, который будет загружен в оперативную память при генерации первой страницы.

Допускаются любые уловки, не выходящие за ООП парадигму и за пределы кода. Всяческие акселераторы и прочая в зачет не идут.

И тогда мы наглядно поймем, сколько лишней работы приходится делать серверу по сравнению с императивным подходом. Сравним. Я лично ничего писать не буду, уже готовый код есть в ответе выше.. Максимум добавить элементов в массив инициализаций.

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

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

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

user posted image
S.Chushkin
Цитата (twin @ 1.11.2014 - 07:04)
S.Chushkin
<?php

/////////////////////////////////////////////////
// Это в хранилище библиотек

class Enimals_Sounds
{
public static function кошка() { return 'мяу'; }
public static function собака() { return 'гав'; }
}
...


Ок. Вопрос тот же: В чём преимущество Вашего кода?

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
twin
Ответь на вопрос выше и увидишь сам.

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

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

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

user posted image
S.Chushkin
Цитата (twin @ 1.11.2014 - 14:10)
ООпэшники считают, что они вершина мира, а такие как я всегда должны оправдываться.

Вообще-то строго наоборот - не мы с Вами спорим, а Вы с нами. smile.gif

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
twin
S.Chushkin
Обычно говрят так, мол ты еще не дорос до ООП, вот когда дорастешь, тогда по другому заговоришь. А я начинаю оправдываться. И никому невдомек, что я уже перерос его. Вернее "переболел на ногах". Изучил в сравнении. И потому не пользуюсь.

Вот и примеры кода вы приводили с таким подтекстом, мол без ООП этого сделать невозможно. Хочется равноправия, парадигмы то равнозначимы. Так что жду ваш код. smile.gif

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

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

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

user posted image
chee
Цитата (S.Chushkin @ 1.11.2014 - 13:55)
Ок. В чём преимущество Вашего кода?

это доказывать twin'у, он же исповедует процедурный стиль. Я просто привел пример под вашу задачу.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
S.Chushkin
Цитата (twin @ 1.11.2014 - 14:10)
Напишите пожалуйста код, который будет загружен в оперативную память при генерации первой страницы.

Лень изобретать, поэтому напишу как у меня работает (не дословно, принцип).

// в роуторе
$page = new Page_1;
$page->Run();
// где-то там...
Page_1 extends Page {
public function Run() {
$zoo = new Zoo;
$zoo->Prepare_Перекличка();
$this->Template->Run('page_1.php', $zoo->data);
}
}


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

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
Цитата (twin @ 1.11.2014 - 14:26)
Вот и примеры кода вы приводили с таким подтекстом, мол без ООП этого сделать невозможно.

Нет, такого контеста у меня не было. Если и был контекст, то про эффективность (о чём выше).

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
twin
S.Chushkin
Нет. Не нужно лукавить. Я просил весь код, загружаемый в память. Где классы Page_1, где Zoo? Роутер опускаем, не важно. Хотя бы эти два. Вообще желательно рабочий код, мой допустим свободно можно запустить. Хотелось бы подобного. А роутеры у всех есть. И темплейты. Не в них суть.

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

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

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

user posted image
Arh
S.Chushkin
Цитата
когда "все делают всё"

я писал про то, когда каждый делает свою часть (модуль)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
S.Chushkin
Цитата
Есть замечание...
Вы во главу ставите эффективность кода по затратам "железа", я во главу ставлю эффективность работы разраба. Похоже, у нас это основное различие в споре.
Нет. Сначала покажите код, я потом расскажу, что и эффекивность разраба тоже под великим вопросом.

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

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

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

user posted image
chee
Цитата (twin @ 1.11.2014 - 14:10)
Берем задачу S.Chushkin про зоопарк. И усложняем её. Требуется несколько страниц,
1. на первой перекличка.
2. на второй все животные должны подпрыгнуть.
3. на третьей помахать хвостом.
4. на четвертой пукнуть.

Напишите пожалуйста код, который будет загружен в оперативную память при генерации первой страницы.


<?php

class
Animal
{

protected $voice;

public function doVoice()
{
return $this->voice;
}

public function doJump()
{

}


public function doMoveTail()
{

}

}


class Cat extends Animal
{

protected $voice = 'мяу';

}

class Dog extends Animal
{

protected $voice = 'гав';

}

class Fish extends Animal
{

protected $voice = 'буль-буль';

}

class Zoo
{

protected $animals = array();

public function addAnimal(\Animal $animal)
{
$this->animals = $animal;
}

public function doIt(\AbstractAction $action)
{
foreach ($this->animals as $animal) {
$action->action($animal);
}
}

}


abstract class AbstractAction
{

abstract public function action(\Animal $animal);

}

class JumpAction extends AbstractAction
{

public function action(\Animal $animal)
{
$animal->doJump();
}

}


class VoiceAction extends AbstractAction
{

public function action(\Animal $animal)
{
$animal->doVoice();
}

}


class MoveTailAction extends AbstractAction
{

public function action(\Animal $animal)
{
$animal->doMoveTail();
}

}



$zoo = new \Zoo;
$zoo->addAnimal(new \Cat);
$zoo->addAnimal(new \Dog);
$zoo->addAnimal(new \Fish);
$action = new \JumpAction;
$zoo->doIt($action);

Естественно это все займет больше места в оперативной памяти, но в итоге мы получим поддерживаемость кода(пояснять это я не буду, надеюсь и так понятно почему)

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

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