[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объясните в чем преимущества ООП?
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
inpost
slobotsky.denis
class Action {
public function man() {}
public function girl() {}
public function actions($sex) {
// тут мы проверяем, что унитаз не сломан
$this->$sex();
// а тут у нас включается автоматический смыв
}
}

$array = array('man','girl');
$do = new Action;
foreach($array as $v) {
$do->actions($v);
}

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

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
andrey888
twin дело сказал , а никто не заметил...
ООП (читай фреймворк) - очень хорош, когда нужно побыстрее сделать проект и понапихать кучу опций внутрь... НО действительно качественные и конкретные продукты ОБЫЧНО наоборот уходят от ООП - Банки, некоторые социалки и т.д.

+ в ООП имхо только 1 - работа над проектом в команде когда есть четкий дедлайн по выходу...

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

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Игорь_Vasinsky
Arh
Цитата
Кстати зачем нужны абстрактные классы и интерфейсы на практике?


это только с первого взгляда.

на сам деле - это шаблоны для своих наследников - нечего более и нечего менее.



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
chee
Цитата (twin @ 31.10.2014 - 01:01)
Вот первый признак того, что человек не понимает сути ООП. Когда он оперирует словами "процедурный стиль". Нет такого стиля.

я с вами не спорил, и не хочу этого делать. Просто покажите код, который я попросил, это же так просто smile.gif

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Игорь_Vasinsky
chee
Цитата
Цитата (twin @ 31.10.2014 - 01:01)
Вот первый признак того, что человек не понимает сути ООП. Когда он оперирует словами "процедурный стиль". Нет такого стиля.


http://goo.gl/3ZuTcX

не слушай его - у него свой справочник терминов с жёсткой терминалогией.
может стиль это и не стиль вовсе - но в контексте - программисты понимают о чём говорят.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
twin
Цитата (Dezigo @ 30.10.2014 - 23:16)
twin
http://habrahabr.ru/post/23619/

Главная мысль:
Сейчас работа человека дороже оборудования и часто выгоднее пожертвовать скоростью работы приложения ради скорости разработки и удобства поддержки.

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

1. Объектная
2. Императивная
3. Декларативная
4. Функциональная
5. Концептуальная

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

Что касается стоимости разработки, то как сказал в свое время Ротшильд:
Цитата
Я не настолько богат, чтобы покупать дешевые вещи


Вот slobotsky.denis правильно сказал:
Цитата
Если мы (гиботетическая команда разработчиков) не умеем/не можем делать подругому

Если есть криворукая команда со злобным PM во главе, который стоит над душей с большой плеткой, то тогда да. Фреймворк вам в руки и какую-нибудь SMARTY на шею. И плевать, что при мало-мальски значимой нагрузке начнут падать сервера.

Я делал рефаторинг одной системы, которая была построена по всем "канонам". Ну задолбался хозяин платить за железо. И не спать по ночам в ожидании грядущего ребута. Так вот, после рефакторинга (естественно были выкинуты на помойку SMARTY, фреймворк и прочие "помошники"), нагрузка упала до 5%. Не на 5, обратите внимание, а до 5. И он на том железе, которое валилось от одного сайта, смог разместить 20. А все почему? Потому что он попытался в свое время сэкономить на разработке.

Цитата
До ООП надо дорасти! (И там новые этапы роста: после освоения классов и объектов, приходит понимание интерфейсов, а после паттерны).
Дело в том, что эту сакраментальную мысль почему то никто не продолжает. Примерно так:
Цитата
А потом перерасти его и двигаться дальше.
Иначе можно в такие дебри зарыться...
Вот чувак с юморком написал. Обожаю такие ассоциации. smile.gif

Ведь ООП парадигма просто обязывает писать подобие фреймворков. Так как на ООП невозможно сделать приложение модульным. Только единым и цельным. Соответственно универсальным. А универсальность обратно пропорциональна оптимальности.

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

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

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

user posted image
chee
twin, вы покажите свой код или нет?


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

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Winston
Цитата (chee @ 31.10.2014 - 09:24)
twin, вы покажите свой код или нет?

biggrin.gif
user posted image
twin
А пожалуйста
<?php

///////////////////////////////////////////////////////////////
// Библиотеки
///////////////////////////////////////////////////////////////
class Bathroom_Action
{

protected $sex = array('boy' => 'standing',
'girl' => 'sitting',
'dog' => 'liftingFoot',
);



public function __call($name, $arguments)
{
$name = strtolower($name);
$methods = !empty($this->sex[$name]) ? $this->sex[$name] : 'inPants';
$methods .= 'Pee';
return $this->$methods();
}

public function standingPee()
{
return 'делаем это стоя';
}

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

public function liftingFootPee()
{
return 'подняв ногу';
}

public function inPantsPee()
{
return 'в штаны';
}
}


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


echo $pee;
echo '<br>';
echo 'Пшшшш-шш-буль-буль';
}
}


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



class Boy
{
public function pee($method)
{
return $method;
}
}



class Girl
{
public function pee($method)
{
return $method;
}
}


////////////////////////////////

$room = new Bathroom();
$act = new Bathroom_Action();

$children = array(
'Boy',
'Girl',
);


foreach($children as $child) {
$obj = new $child();
$method = $act->$child();
$room->allPee($method);
echo '<br>';
}


Тут нет абстракций, нет наследований,нет привязок, нет связанностей.

Вот скажите мне, поборники ООП. Сможете ли вы скриптом slobotsky.denis заставить девочку пописить стоя? Или подняв ногу? :D

А сможете ли заставить её не пописить, а покакать? Для этого вам придется заставить какать и мальчика и собачку.

А сможет ли вообще пописить Винни Пух? Если он не класс, а функция?
А сможете ли заставить писить кого-то в другом городе приложении?

А я вот смогу. Ибо это библиотека. Она производит действие (писить), а не заставляет производить действие объект (собачку). Поэтому я могу подключить другую либу, и все обкакаются. А могу эту либу взять и утащить куда угодно, где кому то невтерпеж.

Это гибкость. Это слабая связанность, это KISS, это императив.

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

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

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

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

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