И вот сижу я, казалось бы, самое сложное позади. Код написан, сижу довольный радуюсь, работает! Вдруг, мне в голову приходит один вопрос, зачем я все это делал? Я в тупике, как пользоваться ООП я теперь знаю и умею а вот где его применять и зачем, как-то не прет. Я сделал типо товар в интернет-магазине. При добавлении товара, создается объект который имеет свойства товара: цена, название, описание и т.д. Ну так вот, через форму заполняю свойства, потом эти свойства присваиваю объекту а потом эти свойства заношу в таблицу в БД в строчку с товаром, вопрос: Зачем создавать объект, если можно напрямую в таблицу грузить его параметры? Объясните, либо я не там применяю ООП либо я чего-то недопонял.
Спустя 11 минут, 10 секунд (23.05.2011 - 16:49) twin написал(а):
Спустя 25 минут, 55 секунд (23.05.2011 - 17:15) denis79513 написал(а):
Мда, все я не дочитал, уж слишком там много всего, но основную мысль понял: Кто-то за кто-то против. Теперь мне надо определиться за что буду я =)
Главное ООП знаю, значит крут=) Хотелось бы услышать пару внятных слов по поводу ООП от тех людей, которые его поддерживают. Кроме "У ООП очень много преимуществ" я ничего не нашел. И конкретно поясните мне тупому, вот в каких случаях его нужно использовать, на примерах. Только не нужно таких примеров: Его нужно использовать в больших проектах с большим кол-вом данных...
Главное ООП знаю, значит крут=) Хотелось бы услышать пару внятных слов по поводу ООП от тех людей, которые его поддерживают. Кроме "У ООП очень много преимуществ" я ничего не нашел. И конкретно поясните мне тупому, вот в каких случаях его нужно использовать, на примерах. Только не нужно таких примеров: Его нужно использовать в больших проектах с большим кол-вом данных...
Спустя 8 минут, 39 секунд (23.05.2011 - 17:23) Krevedko написал(а):
ООП-это круто )
Спустя 12 минут, 42 секунды (23.05.2011 - 17:36) denis79513 написал(а):
А если серьезно?
Спустя 4 минуты, 16 секунд (23.05.2011 - 17:40) neadekvat написал(а):
denis79513, я так понимаю, единственная цель этой темы - устроить очередной холивар.
Тебе дали ссылки, на этом форуме как минимум несколько больших обсуждений.
Не начинать же новое каждый раз, когда кому-то вломы прочитать уже написанное.
Тебе дали ссылки, на этом форуме как минимум несколько больших обсуждений.
Не начинать же новое каждый раз, когда кому-то вломы прочитать уже написанное.
Спустя 2 минуты (23.05.2011 - 17:42) alex12060 написал(а):
neadekvat
Ну почему сразу так то?
Форум он на то и форум, чтобы устраивать холивар, а потом пускать людей подобных ТС читать это и делать выводы. А выводы делаются не всегда правильные. Они обсуждаются потом на форумах и людям объясняют..
Так что, не надо сразу бросаться на ТС, может у него после прочтения возникнут вопросы по поводу прочитанного и он что-то новое уяснит..
Ну почему сразу так то?
Форум он на то и форум, чтобы устраивать холивар, а потом пускать людей подобных ТС читать это и делать выводы. А выводы делаются не всегда правильные. Они обсуждаются потом на форумах и людям объясняют..
Так что, не надо сразу бросаться на ТС, может у него после прочтения возникнут вопросы по поводу прочитанного и он что-то новое уяснит..
Спустя 6 минут, 38 секунд (23.05.2011 - 17:49) denis79513 написал(а):
Да мне не нужно очередное обсуждение ООП я его и там начитался вдоволь, вы просто мне покажите пару примеров кода или просто объясните на словах на примерах где его нужно использовать. Или объясните что я не так сделал в своем примере.
Спустя 2 минуты, 44 секунды (23.05.2011 - 17:52) Krevedko написал(а):
а где пример ?
Спустя 1 минута, 37 секунд (23.05.2011 - 17:53) denis79513 написал(а):
Цитата |
Я сделал типо товар в интернет-магазине. При добавлении товара, создается объект который имеет свойства товара: цена, название, описание и т.д. Ну так вот, через форму заполняю свойства, потом эти свойства присваиваю объекту а потом эти свойства заношу в таблицу в БД в строчку с товаром, вопрос: Зачем создавать объект, если можно напрямую в таблицу грузить его параметры? |
Спустя 1 минута, 35 секунд (23.05.2011 - 17:55) Krevedko написал(а):
теперь можно создать товар, который имеет свойства этого товара + какие-то еще через наследование )
Спустя 2 минуты, 2 секунды (23.05.2011 - 17:57) denis79513 написал(а):
Цитата (Krevedko @ 23.05.2011 - 14:55) |
теперь можно создать товар, который имеет свойства этого товара + какие-то еще через наследование ) |
Ну а толку что еще какой-то товар будет иметь эти же свойства все равно мне придется эти свойства сохранять в таблице в БД?
Спустя 17 минут, 41 секунда (23.05.2011 - 18:15) Krevedko написал(а):
эти же свойства + какие-то еще
Спустя 5 минут, 48 секунд (23.05.2011 - 18:20) denis79513 написал(а):
Цитата (Krevedko @ 23.05.2011 - 15:15) |
эти же свойства + какие-то еще |
Понятно что свойства, а для чего, для чего вообще эти свойства делать, ведь все равно потом эти данные когда понадобятся вытаскивать из таблицы нужно?
Спустя 7 минут, 31 секунда (23.05.2011 - 18:28) Krevedko написал(а):
что ты привязался к таблице. есть товар-лодка.
ты из нее сделал лодку на веслах и лодку моторную.
ты из нее сделал лодку на веслах и лодку моторную.
Спустя 1 минута, 46 секунд (23.05.2011 - 18:30) inpost написал(а):
denis79513
На нашем форуме ты не получишь точный ответ, так же как и везде. Можно сайты и так и так писать. Кому как больше нравится, выбирай для себя нужную позицию, та будет тебе легче.
На нашем форуме ты не получишь точный ответ, так же как и везде. Можно сайты и так и так писать. Кому как больше нравится, выбирай для себя нужную позицию, та будет тебе легче.
Спустя 14 минут, 25 секунд (23.05.2011 - 18:44) denis79513 написал(а):
А толку создавать объект присваивать ему свойства если при переходе на другую страницу эти свойства сбросятся.
Спустя 7 минут, 27 секунд (23.05.2011 - 18:51) Greg1978 написал(а):
Цитата (denis79513 @ 23.05.2011 - 15:44) |
А толку создавать объект присваивать ему свойства если при переходе на другую страницу эти свойства сбросятся. |
При проектировании, только методы класса "знают" об этих свойствах.
Простота независимого тестирования класса, инкапсуляция сложности отладки, то есть если значение изменилось и это стало критичным для системы, нам не придётся искать по всей системе а только в рамках этого класса и кто именно её "затронул", что соответственно очень легко выявляется модульным тестом и в разы уменьшает отладку системы в целом.
Спустя 5 минут, 23 секунды (23.05.2011 - 18:57) inpost написал(а):
Greg1978
Отладку меньше, проектирование - больше Так что палка в 2 конца, свои плюсы и свои минусы.
Отладку меньше, проектирование - больше Так что палка в 2 конца, свои плюсы и свои минусы.
Спустя 3 минуты, 43 секунды (23.05.2011 - 19:01) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 13:49) |
Ты не первый задаешься таким вопросом))) [URL=http://phpforum.ru/index.php?showtopic=27332&'>Вот, изучай.</a> <a href='http://www.blogerator.ru/page/oop_why-objects-have-failed]А вот статья[/URL] просто супер на эту тему. |
Мне хотелось бы по Вашему посту, по каждому пункту аргументированные и обоснованные ответы а не "голословные" высказывания "как бы не так любой может расширить функцию", я если честно даже представить себе не могу как можно расширить процедуру.
Ваш пост просто, с моей точки зрения крик "религиозного спича" не более
Да кстати основная парадигма проектирования в ОО инкапсуляция сложностей, изменений и соответственно реакция на изменяемость требований в процессе работы с проектом.
Спустя 3 минуты, 20 секунд (23.05.2011 - 19:04) Greg1978 написал(а):
Цитата (inpost @ 23.05.2011 - 15:57) |
Greg1978 Отладку меньше, проектирование - больше Так что палка в 2 конца, свои плюсы и свои минусы. |
Не будьте как twin
Для искушённого архитектора в ОО проектировании, не программировании, создать связку отладка - объект понадобиться не более чем спроектировать алгоритм тех же функций в процедурной парадигме, да ещё с такими уже приспособленными IDE. В конце концов этот класс можно использовать хоть всю жизнь
Спустя 4 минуты, 19 секунд (23.05.2011 - 19:08) inpost написал(а):
Greg1978
А кто говорит, что я против классов? Я говорю, что типичный процедурный на классах имеет свои плюсы и минусы.
А кто говорит, что я против классов? Я говорю, что типичный процедурный на классах имеет свои плюсы и минусы.
Спустя 38 секунд (23.05.2011 - 19:09) Greg1978 написал(а):
Цитата (inpost @ 23.05.2011 - 16:08) |
Greg1978 А кто говорит, что я против классов? Я говорю, что типичный процедурный на классах имеет свои плюсы и минусы. |
Не без этого
Спустя 2 минуты, 13 секунд (23.05.2011 - 19:11) twin написал(а):
Цитата |
Не будьте как twin |
Это почему?
Цитата |
Мне хотелось бы по Вашему посту, по каждому пункту аргументированные и обоснованные ответы |
Там 52 страницы обоснований. Читать лень или уверенность, что обоснований нет?
Попробую еще раз в двух словах описать свое видение.
ООП-парадигма, это такой образ мышления. Когда приложение проектируется не линейно, а объектами.
Принято считать (все учебники друг у друга это копипастят), что код гораздо проще представлять объектами. Мол мир объектен, а значит это идеологически верно.
Пытаются привести в пример собаку, свойства которой - шерсть хвост и четыре лапы, методы - лает и кусает, наследник - щенок, который еще и писается.
На самом деле это все не так, они кривят душой. Дело в том, что приводится в пример готовая собака, как будто класс уже нами написан.
Но прежде чем он начнет лаять, его придется еще изготовить. И вот тут любой самый прожженый ООПист один фиг спускается с небес до процедурного кода, который потом заботливо упковывает в методы класса.
Не бывает наоборот, ибо все равно нужно написать и отладить сначала мелкие участки, потом уже собирать из них более крупные. Классы, интефейсы, путать это все наследованиями в тайной надежде, что это что-то упрощает.
На самом деле ООП парадигма выгодна только там, где код повторяется. В фреймворках к примеру либо в объектно-ориентированных языках. Таких как JAVA например. Там давным давно написана куча классов, и мы можем пожинать плоды. В PHP такого почти нет.
Вернее тут тоже есть встроенные классы. К примеру библиотека mysqli или тот же Exception. Однако это мизер, и поборникам ООП в PHP приходится самим изобретать велосипеды, гордо называемые фреймворками.
Их есть несколько продвинутых или у каждого свой. Но факт остается фактом. PHP не объектный язык. И всяческие попытки сделать его таковым рождают монструозные надстройки с суррогатным синтаксисом, либо всяческие ущербные библиотеки, которые сильно снижают возможности языка.
Вобщем то в PHP нет таких задач, которые нельзя решить процедурно.
Более того, в PHP нет таких задач, которые нельзя решить процедурно более эфективно, чем объектным программированием. Если конечно это задачи не ради самого ООП.
Попробую еще раз в двух словах описать свое видение.
ООП-парадигма, это такой образ мышления. Когда приложение проектируется не линейно, а объектами.
Принято считать (все учебники друг у друга это копипастят), что код гораздо проще представлять объектами. Мол мир объектен, а значит это идеологически верно.
Пытаются привести в пример собаку, свойства которой - шерсть хвост и четыре лапы, методы - лает и кусает, наследник - щенок, который еще и писается.
На самом деле это все не так, они кривят душой. Дело в том, что приводится в пример готовая собака, как будто класс уже нами написан.
Но прежде чем он начнет лаять, его придется еще изготовить. И вот тут любой самый прожженый ООПист один фиг спускается с небес до процедурного кода, который потом заботливо упковывает в методы класса.
Не бывает наоборот, ибо все равно нужно написать и отладить сначала мелкие участки, потом уже собирать из них более крупные. Классы, интефейсы, путать это все наследованиями в тайной надежде, что это что-то упрощает.
На самом деле ООП парадигма выгодна только там, где код повторяется. В фреймворках к примеру либо в объектно-ориентированных языках. Таких как JAVA например. Там давным давно написана куча классов, и мы можем пожинать плоды. В PHP такого почти нет.
Вернее тут тоже есть встроенные классы. К примеру библиотека mysqli или тот же Exception. Однако это мизер, и поборникам ООП в PHP приходится самим изобретать велосипеды, гордо называемые фреймворками.
Их есть несколько продвинутых или у каждого свой. Но факт остается фактом. PHP не объектный язык. И всяческие попытки сделать его таковым рождают монструозные надстройки с суррогатным синтаксисом, либо всяческие ущербные библиотеки, которые сильно снижают возможности языка.
Вобщем то в PHP нет таких задач, которые нельзя решить процедурно.
Более того, в PHP нет таких задач, которые нельзя решить процедурно более эфективно, чем объектным программированием. Если конечно это задачи не ради самого ООП.
Спустя 11 минут, 30 секунд (23.05.2011 - 19:23) Greg1978 написал(а):
Цитата |
Пытаются привести в пример собаку, свойства которой - шерсть хвост и четыре лапы, методы - лает и кусает, наследник - щенок, который еще и писается. На самом деле это все не так, они кривят душой. Дело в том, что приыводится в пример готовая собака, как будто класс уже нами написан. Но прежде чем он начнет лаять, его придется еще изготовить. И вот тут любой самый прожженый ООПист один фиг спускается с небес до процедурного кода, который потом заботливо упковывает в методы класса. |
Я Вас, наконец то понял, я действительно сожалею что Вы смотрите на эту парадигму именно с точки зрения этой цитаты, она присуща новичку не более, так как эти метафоры предлагают именно самыми азами.
(Кстати почитайте Макконнелла, про метафоры, которые могут дать понимание а могут сильно навредить, наверное как в Вашем случае).
На самом деле ООП парадигма направлена совершенно на другие основные цели это управляемость проектом для любого слоя команды, будь он менеджер, архитектор, разработчик.
Как я уже выше говорил
Цитата |
основная парадигма проектирования в ОО инкапсуляция сложностей, изменений и соответственно реакция на изменяемость требований в процессе работы с проектом. |
предоставляет всем слоям проекта более гибкую управляемость вплоть до разделения труда (я думаю аргументировать здесь не стоит), а как известно разделение труда это большой шаг к производительности процесса.
Спустя 5 минут, 47 секунд (23.05.2011 - 19:28) inpost написал(а):
Greg1978
А разве распределением труда не MVC всякие должны заниматься?
А разве распределением труда не MVC всякие должны заниматься?
Спустя 5 минут, 27 секунд (23.05.2011 - 19:34) Greg1978 написал(а):
Цитата (inpost @ 23.05.2011 - 16:28) |
Greg1978 А разве распределением труда не MVC всякие должны заниматься? |
Это только паттерн, который просто как наработка показывает как более эффективней разделить логики и взаимосвязи между ними. Ясное дело чем меньше взаимосвязей тем система обладает большей пере используемостью, портируемостью и т.д.
Распределение труда в моём контексте это использование разных уровней разработчиков (например), если в методологии RUP то эти уровни можно варьировать в определённый момент по разному при этом экономить соответствующие ресурсы.
Этим занимаются менеджеры и архитектора.
Спустя 17 минут, 4 секунды (23.05.2011 - 19:51) twin написал(а):
Цитата |
Как я уже выше говорил основная парадигма проектирования в ОО инкапсуляция сложностей, изменений и соответственно реакция на изменяемость требований в процессе работы с проектом. предоставляет всем слоям проекта более гибкую управляемость вплоть до разделения труда (я думаю аргументировать здесь не стоит), а как известно разделение труда это большой шаг к производительности процесса. |
Опять 25. Да я не против парадигмы, как таковой. Я просто не вижу выгоды от неё именно в PHP.
Вот возьмем к примеру тот же Ruby. Там огромная куча встроенных классов, на все случаи жизни. И писать на нем необъектно не выйдет. Вернее это возможно, но будет выглядеть так же смешно, как и ООП в PHP
Тот же самый ZEND фреймворк. Много он упростил? Наинкапсулировал сложностей и тут же нарожал кучу гораздо более других. Какая нафиг управляемость, какая производительность, если вместо одного мануала приходится курить два?
Цитата |
я действительно сожалею что Вы смотрите на эту парадигму именно с точки зрения этой цитаты, она присуща новичку не более, так как эти метафоры предлагают именно самыми азами. |
Это очень громкое заявление. Так говорят люди, совершенно незнающие предмета. Вернее знающие его однобоко. Раз Макконнелл сказал так, значит все остальные - дилетанты.
А вот допустим совсем не дилетант думает совершенно иначе. И таких очень много.
Снимите розовые очки наконец то и спуститесь на землю. Не Бога вы за бороду поймали с этим ООП а просто схватились за модную струю. Куда ведет - не важно, главное в этом направлении плывет большинство. А спроси у любого - почему? Штампованные ответы наподобие тех, которые сейчас высказывались в качестве аргумента за.
Если проектировать каждое приложение отдельно, то эти аргументы не только беспочвенны, но и вредят. А попытаться собрать всеобъемлющий фреймворк (а именно это подразумевается, когда заходит речь о повторном использовании), это написать объектный язык на интерпретируемом языке. Нонсенс же, разве не понятно. Есть для этих целей готовые и очень неплохие инструменты.
А иначе никакая
А вот допустим совсем не дилетант думает совершенно иначе. И таких очень много.
Снимите розовые очки наконец то и спуститесь на землю. Не Бога вы за бороду поймали с этим ООП а просто схватились за модную струю. Куда ведет - не важно, главное в этом направлении плывет большинство. А спроси у любого - почему? Штампованные ответы наподобие тех, которые сейчас высказывались в качестве аргумента за.
Если проектировать каждое приложение отдельно, то эти аргументы не только беспочвенны, но и вредят. А попытаться собрать всеобъемлющий фреймворк (а именно это подразумевается, когда заходит речь о повторном использовании), это написать объектный язык на интерпретируемом языке. Нонсенс же, разве не понятно. Есть для этих целей готовые и очень неплохие инструменты.
А иначе никакая
Цитата |
управляемость проектом для любого слоя команды, будь он менеджер, архитектор, разработчик. |
не получится. Придется раз за разом начинать все снуля, обучая всю цепочку персонала новым правилам.
Удел приверженцев один - выбрать (или написать) фреймворк (читай - злокачественную ООПухоль) и изучать его законы.
Я же хочу остаться свободомыслящим программистом, не связнным этими рамками.
А организовать разделение труда вполне возможно и без этих безобразий. Тому есть масса подтверждений. Тот же softtime к прмеру взять. Там ООП не очень то в чести, а организация - позавидовать.
Удел приверженцев один - выбрать (или написать) фреймворк (читай - злокачественную ООПухоль) и изучать его законы.
Я же хочу остаться свободомыслящим программистом, не связнным этими рамками.
А организовать разделение труда вполне возможно и без этих безобразий. Тому есть масса подтверждений. Тот же softtime к прмеру взять. Там ООП не очень то в чести, а организация - позавидовать.
Спустя 14 минут, 4 секунды (23.05.2011 - 20:05) Greg1978 написал(а):
Цитата |
Более того, в PHP нет таких задач, которые нельзя решить процедурно более эфективно, чем объектным программированием. Если конечно это задачи не ради самого ООП. |
Есть, опять же тестирование на уровне объектных модулей куда гибче процедурных. Аргументирую
Начну с того что есть в методологии RUP такой термин и задача как "идеи тестирования", если исходить из этой цели можно написать картину для обоих парадигм:
Процедурная, тестирование модуля. В чём заключается модуль, не важно какого уровня: во входных данных и возвращаемом результате или результатах в зависимости от алгоритма работы, на этом идеи тестового модуля завершаются. И при включении регрессионного тестирования эффект будет не большим.
ООП, тестирование модуля. Сейчас не будем говорить об автоматизированных системах которые позволяют с помощью регрессионного тестирования за считанные минуты находить дефекты в программе и исправлять их. С точки зрения "идей тестов" объект может быть протестирован на состояние, то есть, все свойства класса могут быть раскрыты и тестироваться в определённых условиях. Возможны тестирования самих методов несвязанно от состояния. В результате "упакованный" алгоритм или функционал проверяется намного с больших сторон чем функционал упакованный в одну функцию, за счёт доступа к промежуточным данным - свойствам (состояние объекта). Согласитесь чем разносторонней тест тем он более эффективен в отладке и "поимке" дефектов.
С ув. Greg1978
Спустя 4 минуты, 15 секунд (23.05.2011 - 20:09) Greg1978 написал(а):
Цитата |
Тот же самый ZEND фреймворк. Много он упростил? Наинкапсулировал сложностей и тут же нарожал кучу гораздо более других. Какая нафиг управляемость, какая производительность, если вместо одного мануала приходится курить два? |
Кстати о фреймворках, я не знал JS и не знаю его досконально до сих пор, но jQuery даёт мне в руки мощный инструмент не зная на чём он построен. Что это даёт?
Я не зная языка программирования (это уже снижает мою квалификацию), но фреймворк я в принципе изучил дней эдак за 3 - 4, его так сказать мануал покурил, и я могу свободно использовать его в своих проектах. Так что же нам дал фреймворк, моё изучение JS до кваифицированного состояния минимум пол года или ммаксимум недели вкуривания мануала?
Ясное дело что функционализм ведёт к упрощению, ну и минус к гибкости.
Спустя 3 минуты, 52 секунды (23.05.2011 - 20:13) Greg1978 написал(а):
Цитата |
А иначе никакая Цитата управляемость проектом для любого слоя команды, будь он менеджер, архитектор, разработчик. не получится. Придется раз за разом начинать все снуля, обучая всю цепочку персонала новым правилам. |
Как говорил один из персонажей кинофильма "гастите"
Если Вы в каждом проекте используете разные методологии управления проектами ну тогда дело Ваше.
Не надо обучать так как язык программирования здесь полностью абстрагирован, а PHP писать в процедурном стиле исключительно из за того что он это позволяет, ещё раз "гастите"
ООП парадигма, ещё раз, нацелена на эффективное командное разделение с экономией ресурсов и времени.
Спустя 11 секунд (23.05.2011 - 20:13) inpost написал(а):
Greg1978
Ограниченные лишь возможности. - это насчет jQuery.
Ограниченные лишь возможности. - это насчет jQuery.
Спустя 3 минуты, 40 секунд (23.05.2011 - 20:17) twin написал(а):
Цитата |
В результате "упакованный" алгоритм или функционал проверяется намного с больших сторон чем функционал упакованный в одну функцию, за счёт доступа к промежуточным данным - свойствам (состояние объекта). Согласитесь чем разносторонней тест тем он более эффективен в отладке и "поимке" дефектов. |
Не вижу препятствий сделать такой тест для процедурки.
И я нигде не написал, что нужно использовать одну функцию. Да и классы тоже весьма успешно используются при процедурном программировании.
ООП парадигма, это не классы. Это способ проектирования приложения, где все завязано на связях. И организовывать эти связи приходится каждый раз при изготовлении нового продукта.
Тоесть идет прямая потеря времени на проектирование того, что повторно использовать практически невозможно.
Либо это будет фреймворк. А фреймворк хорош только в прикладных языках (да и то спорно). В веб-программировании это зло. Аргументов тут на форуме полно. Повторяться лень.
PS javascript - прикладной язык. Пример с jQuery некорректен.
Спустя 7 минут, 20 секунд (23.05.2011 - 20:24) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 17:17) | ||
Не вижу препятствий сделать такой тест для процедурки. ООП парадигма, это не классы. Это способ проектирования приложения, где все завязано на связях. И организовывать эти связи приходится каждый раз при изготовлении нового продукта. |
Дайте хотя бы один многосторонний тест модуля.
На счёт связей, странно как то а что в процедурном языке не вызываются функции нижнего уровня высшим уровнем. Это и есть, если по секрету , жёсткие связи, понятное дело что они облегчаются Dependency Inversion (инверсией зависимостей), так такие же связи и в ООП (это не оспоримо).
Если продолжить далее по теме взаимосвязей в ООП намного это более стандартизировано (а это так же уменьшает квалификацию разработчика), как, да обычными паттернами, что не скажешь в процедурном языке, стандартов де факто в них нет . Кстати и та и другая парадигма стремится к наименьшим коэффициентам как входных так и выходных связей на уровне модуля.
Спустя 4 минуты, 42 секунды (23.05.2011 - 20:29) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 17:17) |
PS javascript - прикладной язык. Пример с jQuery некорректен. |
Ок не буду спорить и всё же это никак не касается свойств языка.
Кстати приставка Script говорит о языке что он скриптовый, как и PHP.
Привожу пример другого фреймворка YII.
Не разбираясь в ОО - проектировании, именно проектировании а не прграмировании, люди его мануал "укуривают" максимум за неделю, если конечно человек желает его использовать. Не ужели не верится что функционализм ведёт к упрощению, но понятное дело не к гибкости. В плане последнего многим это никак не нужно потому что они не проектируют в ООП они на нём пишут с помощью того же фреймворка. Используя специфицированные скафолдеры пишется на нём ещё быстрее.
Цитата |
А фреймворк хорош только в прикладных языках (да и то спорно) |
Камень в огород Ruby и Python
Спустя 12 минут (23.05.2011 - 20:41) twin написал(а):
Цитата |
Дайте хотя бы один многосторонний тест модуля. |
Дайте модуль, дам тест. Я могу с той же просьбой обратиться.
Цитата |
Если продолжить далее по теме взаимосвязей в ООП намного это более стандартизировано, как, да обычными паттернами, что не скажешь в процедурном языке, стандартов де факто в них нет. |
Вот это больше всего и радует. Что нет "стандартов", которые в ООП у каждого свои. А если стандартов более чем один, это не стандарт уже, а кистень (с)
Цитата |
Не ужели не верится что функционализм ведёт к упрощению, но понятное дело не к гибкости. В плане последнего многим это никак не нужно потому что они не проектируют в ООП они на нём пишут с помощью того же фреймворка. |
Вот именно. Пишут. Пишут люди, которые двух слов не могут связать без доброго дяди, который этот фреймворк написал. Кому интересна такая участь - не стану задерживать внимание. Только тут форум программистов, а не "писателей".
Я не буду сползать с темы ООП на тему фреймворков. Это другая тема. Такая же спорная. Одно скажу - ООП без фреймворка в PHP никакого прироста ни производительности труда, ни производительности приложения не несет.
А вопрос был именно о ООП. Так что называйте вещи своими именами.
Либо мы негры, штампующие валовый продукт, "укурив" мануал фреймворка за неделю, либо программисты, имеющие возможность самим проектировать, разрабатывать и упрвалять своими кодами.
Спустя 4 минуты, 42 секунды (23.05.2011 - 20:46) Krevedko написал(а):
эх...мне понравился игнайтер. понял за 1 день, потом сидишь и только к методам обращаешься. данные передал, в ответ все, что нужно получил. инкапсуляция епт )
куча уже готовых классов. тут тебе и пагинатор, тут тебе и аплоадер, ресайзер фоток, валидатор формы, работа с базой...
знать надо только название метода, какие параметры надо передавать и что получаешь в ответ. все остальное фреймворк сделает за тебя. такая лень наступила скажу я вам
ЗЫ А вообще я пью пиво )
куча уже готовых классов. тут тебе и пагинатор, тут тебе и аплоадер, ресайзер фоток, валидатор формы, работа с базой...
знать надо только название метода, какие параметры надо передавать и что получаешь в ответ. все остальное фреймворк сделает за тебя. такая лень наступила скажу я вам
ЗЫ А вообще я пью пиво )
Спустя 22 секунды (23.05.2011 - 20:46) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 17:41) |
Одно скажу - ООП без фреймворка в PHP никакого прироста ни производительности труда, ни производительности приложения не несет. |
Опять Вы навязываете неопределённое мнение утверждением (новичок прочитав скажет "а да да, правду говорит"). Просто если Вы создаёте утверждение Вы его должны аргументировать, а это как я и писал всё слова.
Цитата |
Дайте модуль, дам тест. Я могу с той же просьбой обратиться. |
По меньшей мере странно, не я ж сторонник процедурного подхода.
А если Вам нужен тест для класса так это пожалуйста
Спустя 2 минуты, 37 секунд (23.05.2011 - 20:49) Greg1978 написал(а):
Цитата (Krevedko @ 23.05.2011 - 17:46) |
эх...мне понравился игнайтер. понял за 1 день, потом сидишь и только к методам обращаешься. данные передал, в ответ все, что нужно получил. инкапсуляция епт ) куча уже готовых классов. тут тебе и пагинатор, тут тебе и аплоадер, ресайзер фоток, валидатор формы, работа с базой... знать надо только название метода, какие параметры надо передавать и что получаешь в ответ. все остальное фреймворк сделает за тебя. такая лень наступила скажу я вам ЗЫ А вообще я пью пиво ) |
Не надо а то причислят к
Цитата |
Вот именно. Пишут. Пишут люди, которые двух слов не могут связать без доброго дяди, который этот фреймворк написал. |
Кстати, недавно один человек мне сказал, "А программист и должен быть ленивым, не в плане работы а что бы создавать себе простые инструменты" а "не косить сено в противогазе ..."
Спустя 7 минут, 2 секунды (23.05.2011 - 20:56) twin написал(а):
Цитата |
Просто если Вы создаёте утверждение Вы его должны аргументировать, а это как я и писал всё слова. |
Читаем в аттаче. Там достаточно аргументов и методологий. И написано это людьми, имеющими мировые имена.
Цитата |
А программист и должен быть ленивым, не в плане работы а что бы создавать себе простые инструменты |
Ключевое слово - создавать)))
А кстати ООП по словам Стерлинга Хьюза
А кстати ООП по словам Стерлинга Хьюза
Цитата |
состоит из превращения уже имеющихся задач в новые. И уже только потом дело доходит до их решения. |
Так что тут фиг знает, кто больше потеет.)
Спустя 15 минут, 49 секунд (23.05.2011 - 21:11) Greg1978 написал(а):
<?php
/**
* Generated by PHPUnit on 2011-05-19 at 17:58:27.
*/
class TestTest extends PHPUnit_Framework_TestCase
{
/**
* Модуль нижнего уровня
* @var object
*/
protected $object;
/**
* Используемая стратегия
* @var
*/
protected $strategy;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp()
{
// Возможность создания фикстур
// Эмуляция передаваемых параметров
$this->params = null;
$this->object = new Object($this->X, $this->Y, $this->D);
// Дополнительные настройки для определённого теста
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown()
{
// Возращение фикстур в первоначальное состояние и после тестовых функций
}
private function getParamsX()
{
return $this->object->X;
}
private function getParamsY()
{
return $this->object->Y;
}
private function getParamsD()
{
return $this->object->D;
}
protected function testAlgoritm1()
{
// Создание условий теста
$obj = $this->algoritm1();
$this->assertEquals(null, $this->getParamsX());
$this->assertNotEquals('test', $this->getParamsY());
$this->assertEquals($this->getParamsD(), true);
$starategy = new TestClassStrategy();
$strategyDetect = $strategy->algoritm2();
if($starategy instanceof Strategy)
{
$this->assertTestAlgoritm($strategyDetect);
}
}
// И так далее по документу "Idea Tests"
}
?>
и это только малая толика того что можно проверить в разный момент времени.
Кстати, по поводу взаимосвязей, эта задача настолько тяжела что как процедурная парадигма так и ООП не могут её решить в полной мере так как они (взаимосвязи) очень не статичны и изменяемы как в функцианальном плане так и в плане объектных моделей. Поэтому и происходят большие разногласия, поэтому и эту задачу отнесли к разряду академических.
Спустя 3 минуты, 19 секунд (23.05.2011 - 21:15) Greg1978 написал(а):
Я ещё не скачивая файл уже написал что это и есть академическая задача как в плане взаимосвязей так и в плане плюсов и минусов парадигм.
Просто я больше обращаю на проектирование не со стороны "науки" а со стороны как качественно (и в плане разработки ПО) и эффективно зарабатывать деньги. Одними решениями задач сыт не будешь
Просто я больше обращаю на проектирование не со стороны "науки" а со стороны как качественно (и в плане разработки ПО) и эффективно зарабатывать деньги. Одними решениями задач сыт не будешь
Спустя 11 минут, 17 секунд (23.05.2011 - 21:26) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 17:56) | ||||||
Читаем в аттаче. Там достаточно аргументов и методологий. И написано это людьми, имеющими мировые имена.
Ключевое слово - создавать))) А кстати ООП по словам Стерлинга Хьюза
Так что тут фиг знает, кто больше потеет.) |
Кстати об аттаче, не ужели до сих пор используется "водопадный процесс", кстати на нём статья и основывается. Однако мы уже далеко за рубежом 2000 года, уже давно рулят другие методологии более эффективные. Вы смотрели год литературы сией статьи?
Спустя 10 минут, 55 секунд (23.05.2011 - 21:37) twin написал(а):
Цитата |
Просто я больше обращаю на проектирование не со стороны "науки" а со стороны как качественно (и в плане разработки ПО) и эффективно зарабатывать деньги. Одними решениями задач сыт не будешь |
Так вот и нужно поостеречься в другой раз от безапелляционных заявлений плана
Цитата |
Не будьте как twin |
не разобравшись толком в вопросе.
Кто-то приоритетным считает заработать сиюсекундную копейку или устроиться на работу клепать визитки на фреймворке, а кто-то хочет стать Разработчиком. И ему как минимум нужно понять, какие плюсы и какие минусы у разных подходов, чтобы выбрать для себя нужный путь.
Именно такой вопрос задал топикстартер
Кто-то приоритетным считает заработать сиюсекундную копейку или устроиться на работу клепать визитки на фреймворке, а кто-то хочет стать Разработчиком. И ему как минимум нужно понять, какие плюсы и какие минусы у разных подходов, чтобы выбрать для себя нужный путь.
Именно такой вопрос задал топикстартер
Цитата |
Зачем создавать объект, если можно напрямую в таблицу грузить его параметры? Объясните, либо я не там применяю ООП либо я чего-то недопонял. |
и именно этот вопрос мы пытались разрешить в той теме, на которую я дал ссылку. А не "как быстрее зашибить деньгу", "укурив" "стандарты" за неделю.
Спустя 5 минут, 34 секунды (23.05.2011 - 21:43) twin написал(а):
Цитата |
Однако мы уже далеко за рубежом 2000 года, уже давно рулят другие методологии более эффективные. |
Теперь моя очередь - это голословно. Хотелось бы ознакомиться хоть с одной в противовес.
Спустя 13 минут, 23 секунды (23.05.2011 - 21:56) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 18:43) | ||
Теперь моя очередь - это голословно. Хотелось бы ознакомиться хоть с одной в противовес. |
Ок, может я и отошёл от темы и зацепил Вас чем то извините. И тем не менее Вы не пресекли дискуссию
К цитате, как Вы не знаете инкрементных, не инкрементных, гибких методологий?
Я уже приводил одну из них, базирующейся на более "старой" UP - это RUP.
Далее - XP и другие agile методики, OpenUP, Scrum, MSF (microsoft foundation) и это только одни из известных, но "водопадный процесс" уже почти потерял силу, он остаётся только в корпоративных "монстрах" и то уже теряет и там силу. Извините опять за оффтоп.
Если Вы используете "водопадный процесс" тогда становится ясно почему Вам импонирует процедурный стиль проектирования.
Спустя 2 минуты, 27 секунд (23.05.2011 - 21:58) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 18:37) | ||||
Так вот и нужно поостеречься в другой раз от безапелляционных заявлений плана
не разобравшись толком в вопросе. |
Меня наверное не слышно
Цитата |
а со стороны как качественно (и в плане разработки ПО) |
Кстати Вы так и не ответили на мой вопрос по поводу тестирования и наследования процедур.
Спустя 8 минут, 31 секунда (23.05.2011 - 22:07) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 18:37) | ||
Именно такой вопрос задал топикстартер
и именно этот вопрос мы пытались разрешить в той теме, на которую я дал ссылку. А не "как быстрее зашибить деньгу", "укурив" "стандарты" за неделю. |
Возможно
Но это Ваше понимание сути этой дискуссии не навязывайте её другим.
Контекст мануалов и их изучения немного отошёл от темы но не совсем.
Спустя 34 секунды (23.05.2011 - 22:07) T1grOK написал(а):
Сколько уже можно плодить эти темы?! Одно и то же, что лучше черное или белое!!!
Спустя 14 минут, 16 секунд (23.05.2011 - 22:22) sergeiss написал(а):
Цитата (denis79513 @ 23.05.2011 - 19:44) |
А толку создавать объект присваивать ему свойства если при переходе на другую страницу эти свойства сбросятся. |
Можно, почему же нельзя Есть такая штука, как сериализация (функции serialize и unserialize). И еще читай про "магические" методы классов __sleep и __wakeup - как раз они отвечают за сериализацию и восстановление данных.
--------------------
twin - а не провести ли конкурс на тему: решение задачи 2-мя методами: процедурно и на ООП. Задача одна и та же, но 2 решения обязательны. Оцениваться должны оба решения. Только сама задача должна быть несложная, иначе участников конкурса не найдется ни одного.
------------------
А что касается сравнения "использования фреймворков" VS "своя разработка"... Я чуть-чуть по-другому поясню мысль Твина. Здесь разница как между подготовкой водителей в обычной автошколе и подготовкой гонщика-раллиста. На первое требуется меньшее время, в результате получаем достаточно быстро. Водитель умеет привести машину (напичканную электроникой, которая ему помогает на каждом шагу) из п.А в п.Б, избегая аварий и не создавая аварий.
На второе, т.е. на подготовку раллиста, требуется больше времени и ресурсов. Но в результате получается водитель, который реально "чувствует" машину и может ею управлять в различных ситуациях. В том числе на грани срыва в неуправляемое движение, но не переходя эту грань. В то время как обычного водилу страхует электроника и просто не дает ему добраться до критического режима.
Вот в терминах программирования фреймворки - это обычный водитель на современной, нашпигованной электроникой машине, а разработчик (или лучше Разработчик) - это супер-профи водитель, которому электроника только мешает, он знает и чувствует машину очень хорошо.
Спустя 6 минут, 34 секунды (23.05.2011 - 22:28) Greg1978 написал(а):
Цитата (sergeiss @ 23.05.2011 - 19:22) |
Вот в терминах программирования фреймворки - это обычный водитель на современной, нашпигованной электроникой машине, а разработчик (или лучше Разработчик) - это супер-профи водитель, которому электроника только мешает, он знает и чувствует машину очень хорошо. |
Не видел не профессионального гонщика сразу севшего в машину без электроники.
Или есть другой какой то метод сразу стать профессионалом. Всегда будут разные уровни квалификации и сказать словами стиха "
Спустя 2 минуты, 56 секунд (23.05.2011 - 22:31) twin написал(а):
Цитата |
К цитате, как Вы не знаете инкрементных, не инкрементных, гибких методологий? |
Скузми, тут уже я не так выразился. Я имел ввиду методологию сравнения, а не разработки. Иначе получается, что на мои аргументы (пусть даже кажущиеся устаревшими, хотя ооп оопешнее шибко то не стало), ничего не приводится в противовес, а о моей голословности было заявлено.
Я сказал, что ооп без фреймворка не дает прироста в производительности. Это моя точка зрения. Потребовались аргументы - я предоставил. Не в защиту, а именно как аргумент. Ибо не вижу никаких поводов мне защищаться. Есть повод сравнивать.
Если нет аргумента в противовес, значит противоположная точка зрения признается недоказанной и ошибочной.
Я сказал, что ооп без фреймворка не дает прироста в производительности. Это моя точка зрения. Потребовались аргументы - я предоставил. Не в защиту, а именно как аргумент. Ибо не вижу никаких поводов мне защищаться. Есть повод сравнивать.
Если нет аргумента в противовес, значит противоположная точка зрения признается недоказанной и ошибочной.
Цитата |
Кстати Вы так и не ответили на мой вопрос по поводу тестирования и наследования процедур. |
А что я должен ответить? Что я при процедурном подходе не смогу унследовать класс для проведения тестов? Там совсем другие способы тестирования. С теми же результатами.
Кстати говоря, как сей класс использовать в отрыве от PHPUnit_Framework?
И еще, для таких тестов не нужны велосипеды, есть Reflection
И если у меня сложный функционал оформлен классом, то легко и просто можно пользоваться им. А если нет, то иными методами трассировки.
Только причем тут ООП парадигма вообще?
Спустя 7 минут, 18 секунд (23.05.2011 - 22:39) sergeiss написал(а):
Цитата (Greg1978 @ 23.05.2011 - 23:28) |
Не видел не профессионального гонщика сразу севшего в машину без электроники. |
Не понял фразу....
Спустя 2 минуты, 54 секунды (23.05.2011 - 22:41) twin написал(а):
Цитата |
Но это Ваше понимание сути этой дискуссии не навязывайте её другим. |
Я не навязываю. Я сам все время пытаюсь разобраться. И привожу массу аргументов. В ответ обычно слышу - ты отстал от жизни, ты дилетант, на больших проектах без ооп никак и иже с ними. В основном без конкретики.
Ради Бога - аргументируйте. А сказать, что
Цитата |
Вы смотрите на эту парадигму именно с точки зрения этой цитаты, она присуща новичку не более, |
- это тоже самое, что сказать - подрастешь, узнаешь. Подрос я давно)
Спустя 3 минуты, 27 секунд (23.05.2011 - 22:45) Greg1978 написал(а):
Ладно это уже как Вы сами сказали темы не касается.
Просто в статье указывают своё мнение а не утверждение, может почувствуете разницу, читают её не только люди с опытом.
К слову я Вам столько аргументов привёл, хм странно, а Вы до сих пор говорите
Просто в статье указывают своё мнение а не утверждение, может почувствуете разницу, читают её не только люди с опытом.
К слову я Вам столько аргументов привёл, хм странно, а Вы до сих пор говорите
Цитата |
Там совсем другие способы тестирования. С теми же результатами. |
А примеров нет, что бы с теми же результатами.
С phpunit привёл пример так как он один из известных причём уже ставший стандартом.
Цитата |
И если у меня сложный функционал оформлен классом, то легко и просто можно пользоваться им. А если нет, то иными методами трассировки. Только причем тут ООП парадигма вообще? |
Вот это в точку. Процедурный с ООП.
Ок, ещё раз извините спокойной ночи!
Спустя 18 минут, 39 секунд (23.05.2011 - 23:04) twin написал(а):
Цитата |
А примеров нет, что бы с теми же результатами. |
Так и тут нет примеров. Есть выдернутый из контекста фреймворка класс тестирования, который совершенно излишен и никак не стандартизирован.
Цитата |
С phpunit привёл пример так как он один из известных причём уже ставший стандартом. |
Первый раз о таком слышу, каким еще стандартом? Для кого?
Для того, чтобы показать, как тестируются процедурный модуль, нужно этот модуль иметь. Конечно для процедурки написать отвлеченный абстрактный тестировщик сложнее. Однако он и для ООП не нужен вовсе, все давно придумано. А конкретный код протестировать - не вижу проблем.
Так что это никакой не плюс.
Что касается всего остального, там в той теме очень много разных мнений. Потому и дал ссылку, посмотреть на разные точки зрения и выбрать себе.
И по второй ссылке не все так просто.
А меня осадили однозначно. Не будьте таким как twin... Да почему это?
Мне моя позиция и положение нравятся, почему не быть таким...
Для того, чтобы показать, как тестируются процедурный модуль, нужно этот модуль иметь. Конечно для процедурки написать отвлеченный абстрактный тестировщик сложнее. Однако он и для ООП не нужен вовсе, все давно придумано. А конкретный код протестировать - не вижу проблем.
Так что это никакой не плюс.
Что касается всего остального, там в той теме очень много разных мнений. Потому и дал ссылку, посмотреть на разные точки зрения и выбрать себе.
И по второй ссылке не все так просто.
А меня осадили однозначно. Не будьте таким как twin... Да почему это?
Мне моя позиция и положение нравятся, почему не быть таким...
Цитата |
Вот это в точку. Процедурный с ООП. |
ООП - объектно ориентированное программирование. Нельзя быть немного беременным. Я пользуюсь всеми инструментами, какие возможны, не делая никаких предпочтений.И называю это процедурным программированием.
Я не признаю проектирование приложения объектно. С кучей связей, наследований и прочей путаницы. Да, мой метод немного сложнее в разработке на первый взгляд. Но на второй - совсем нет. А уж как это проще в обслуживании...
PS И Вам добрых снов.
Спустя 2 часа, 33 минуты, 30 секунд (24.05.2011 - 01:37) Админ написал(а):
Я любитель и больше эникейщик нежели программист. Был случай - я делал простенький сайт и решил, в качестве эксперимента, прикрутить ООП к этому делу, потом плюнул и переписал всё это хозяйство на процедрку. PHP тем и ценен, что ООП там по большему счёту не нужно.
Спустя 7 часов, 1 минута, 6 секунд (24.05.2011 - 08:38) linker написал(а):
twin
По поводу мизерного количества классов, почитай про SPL.
По поводу мизерного количества классов, почитай про SPL.