[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Императив VS ООП
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
chee
twin, все таки хочется что бы вы не оперировали сущностями в коде, не важно что это действия. Вам можно использовать классы, я этого не запрещаю, да и стандартные функции, которые выдают объекты вам тоже можно использовать, так же не запрещаю русурсы использовать. Но если вы будете использовать объекты в коде, смысл вообще теряется.
Цитата (twin @ 3.11.2014 - 05:30)
class auth
{
    function enter(){}
}

Это все тот же объект, но сущность у него контейнер, назначения контейнера авторизация. В вашей концепции допустимо такое

class Auth
{
static protected $someVar;
static public function enter()
{
return self::$someVar;
}
}



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

А также может заведем для проектов публичные репозитории? Я предпочитаю mercurial, потому бы выбрал bitbucket.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
Цитата
все таки хочется что бы вы не оперировали сущностями в коде, не важно что это действия. Вам можно использовать классы, я этого не запрещаю, да и стандартные функции, которые выдают объекты вам тоже можно использовать, так же не запрещаю русурсы использовать. Но если вы будете использовать объекты в коде, смысл вообще теряется.

вот именно. Если будет юзаться какой-нибудь PDO, то люди еще поймут, но не более.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

sergeiss
Цитата (Invis1ble @ 3.11.2014 - 16:40)
Кстати, википедия говорит, что...

Да ладно, не придирайся smile.gif Дай парням помериться хоть чем-нибудь wink.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
twin
Не, ребят. Так не пойдет. Это кто сказал, что в императивном программировании нельзя пользоваться экземплярами классов? Да даже и объектами?

Это у вас рамки. Объектное программирование ориентировано на объекты. Вот и будьте добры. А я буду пользоваться всеми доступными в PHP инструментами. Императив рамок не накладывает. Если для обработки инструкции мне потребуется объект, будьте уверены, я его создам. К примеру было бы глупо писать почтовик, если есть PhpMailer. У меня шаблонизатор сделан с $this->, мне выкинуть его? Новый писать?

Я могу торжественно обещать, что всё, что можно сделать статикой, я сделаю. Даже если это не совсем удобно. И ни разу не воспользуюсь вашими плюшками типа абстракций и интерфейсов. Но полностью отказываться от конструкции new, это поддаться на ваши "слабо".

Вы мне еще паттерны запретите. Что хочу, что мне удобнее, то и буду юзать. Императивом это не запрещено. smile.gif

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

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

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

user posted image
twin
Цитата (chee @ 3.11.2014 - 13:34)
Ох, еще на счет сроков, хотелось бы знать временные рамки.

А также может заведем для проектов публичные репозитории? Я предпочитаю mercurial, потому бы выбрал bitbucket.

На счет сроков, как говорил товарищ Астахов, торопися не надо...

Есть же основная работа, не бросить же.
И насчет репозитория, я против. По той же причине. Мне некогда этим то заниматься, куда еще репозиторий.

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

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

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

user posted image
twin
Invis1ble
Цитата
ОО парадигма является подвидом императивной парадигмы
Ну дык и вот. Не противопоставляются они. Императивная просто шире, раз ОО её подвид. smile.gif

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

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

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

user posted image
twin
Сходил в википедию. Вот про ООП
Цитата
В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения и которая может на них реагировать, используя свои данные.

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


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

В императиве используется повелительное наклонение. Я должен приказать программе аутентифицировать юзера. Которого как сущности нет. Есть только его данные - логин и пароль, а сам он вообще по ту сторону браузера)).

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

А с помощью чего я буду формировать инструкцию - мое дело. Так что всё в порядке, не расстраивайте меня. biggrin.gif




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

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

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

user posted image
Invis1ble
эээ, стопэ! так о чем спор тогда? раз ОО является подмножеством, значит это тоже императив
сравниваем императив с императивом? очень интересно

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Invis1ble
Цитата (sergeiss @ 3.11.2014 - 18:06)
Цитата (Invis1ble @ 3.11.2014 - 16:40)
Кстати, википедия говорит, что...

Да ладно, не придирайся smile.gif Дай парням помериться хоть чем-нибудь wink.gif

мне, как зрителю, интересен предметный спор, а не надуманный smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

twin
Invis1ble
Разница в том, что ООП накладывает рамки. Вот когда сделаем - сравним.

Я не знаю, какая будет у chee архитектура, но один из вариантов, если свято придерживаться парадигмы, должны быть класс "user", "category", "pages" и "comments". Ну как то так. Это сущности, и они должны между собой взаимодействовать через контекст (общую часть программы). Там не знаю как, это уже не важно. К примеру контроллер (или лучше модель) должны создать объект, который заточен на решение своих узких задач, а он уже должен сам как то отреагировать. Передать/запросить данные у другой сущности, либо вернуть в контекст результат. Впрочем это зависит от архитектуры.

У меня будет примерно так. Классы "select", "add", "auth". Причем по заявкам телезрителей сделаю их статическими. Между собой они взаимодействовать никак не будут. Если мне нужен список категорий, я в классе "select" сделаю запрос на выборку нужной таблицы и в контексте обработаю результат. Ну во вьюшке в моем случае. Если понадобится узнать роль конкретного юзера, я дам команду классу "auth" её узнать. Не в сущности "юзер", а там, где хранятся эти роли. На основании данных, которые я в эту инструкцию передам.

Вот в чем сакраментальная разница.

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

Кроме того, к вопросу о наследовании. Тоже философия. В ООП объект наследуется для того, чтобы научить потомка тому, что не умел родитель.

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

К примеру тот же шаблонизатор. Можно конечно просто обратиться к классу и обработать результат в контексте. Но интереснее его расширить. И работать в этом локальном участке. Это больше похоже на обычный include

Впрочем давайте не торопить события. Сравним и увидим разницу.




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

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

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

user posted image
SoMeOnE
Да, спор каким то неинтересным получается)
Все сведется к тому, что один напишет

class User {
public function auth() {

}
}


А другой, что-то наподоби

class Auth {
public function registration(user) {

}
}


Вроде не про это спор был. Просто разные подходы к построению самой архитектуры , рассходу памяти и тд.
SoMeOnE
Цитата (twin @ 3.11.2014 - 15:55)
В императиве используется повелительное наклонение. Я должен приказать программе аутентифицировать юзера.

Ну так это также один из основных принципов или правильней сказать рекомендаций от ООП апологетов: Tell don't ask
http://habrahabr.ru/post/192706/

http://martinfowler.com/bliki/TellDontAsk.html
Arh
SoMeOnE
Все сведется к тому, что один напишет 


Один сделает классы, другой сделает такие же классы, только наследованные от интерфейса :D

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Invis1ble
Цитата (SoMeOnE @ 3.11.2014 - 19:56)
Да, спор каким то неинтересным получается)
Все сведется к тому, что один напишет

class User {
    public function auth() {

  }
}


А другой, что-то наподоби

class Auth {
    public function registration(user) {

  }
}


Вроде не про это спор был. Просто разные подходы к построению самой  архитектуры , рассходу памяти и тд.

отож
хотя не, у twin'а будет public static function registration(user) { :lol:

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

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