За последние 24 часа нас посетили 61997 программистов и 1594 робота. Сейчас ищут 958 программистов ...

Парадигма ООП

Тема в разделе "PHP для новичков", создана пользователем machetero, 16 окт 2015.

  1. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Мне давно не даёт покоя следующий вопрос.
    Чем объектно-ориентированный проект отличается от процедурного?
    Дьявол, как мы все знаем, кроется в деталях.
    Понятно, что ООП - это не просто использование классов и объектов в своём коде.
    Читая четвёртое издание Зандстры, этот вопрос всплыл для меня на поверхность.
    Вот что пишет Мэтт:
    Буду благодарен любому кто сможет на пальцах и с простым примером объяснить сабж.

    Добавлено спустя 6 минут 54 секунды:
    Про этот момент поподробнее.
    По сути объекты - это ведь сгруппированные функции и ассоциированные с ними переменные.
    Почему нельзя минимизировать зависимости в процедурном коде путём передачи ответственности за управление задачами функциям ?
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Вот бы кто-нибудь сделал простой наглядный пример, как выглядит ООП в коде, а то миллион умных слов, а понимание то все дальше и дальше.
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Объектный подход - эта работа с абстракциями. Самое важное в ООП - это полиморфизм объектов, когда вы можете написать метод c(), который ожидает объекты класса A, а передать в него объект класса B, унаследованного от A - и всё будет работать. Т.е. методу c() всё равно, что вы в него засунете, лишь бы в интерфейсной части содержала то, что содержится в A - таким образом и минимизируется зависимость. На этом и основаны методы минимизации связей
     
  4. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    mkramer, спасибо за ваш ответ
     
  5. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    machetero, если у тебя есть много времени и желания, попробуй сам сделать CRUID форму на ООП, и просто на функциях (;
    половина вопросов сами отпадут (:)
     
  6. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    p@R@dox 55RU, ушёл в поисках того что значит CRUID. Время благо пока есть. Буду пробовать.

    Добавлено спустя 6 минут 5 секунд:
    p@R@dox 55RU, не CRUID я уже делал, вопросы не отпали. Вообщем я понял что надо копать в сторону связности и зависимости функций/методов. Я про это уже слышал в книге "Совершенный код". Но у меня ещё не тот уровень чтоб это понять.
     
  7. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    а конкретно тогда в чем затык, раз с CRUID знаком?
     
  8. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Я же писал, вопрос в том был чем ООП отличается от процедурного подхода концептуально. Концептуально Карл !
     
  9. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    само название говорит о концепции (;
    хороший пример на сегодня, это когда в твоем проекте есть, например, папка( модуль), пусть назовем его USER. Название класса будет таким же уникальным, как и название самой папки, соответственно class USER.
    При процедурном подходе, ты можешь создать названия функций, которые уже раннее были определены, и тут начинается геморрой, при работе приложения ((:)
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ооп это инкапсуляция. Т.е. два экземпляра класса хранят каждый свои данные и могут иметь отличающиеся, хотя и называющиеся одинаково методы. Т.е. они сами как бы контролируют правильность применяемых алгоритмов.
     
  11. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
  12. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    да это инфы по интернету как окурков в курилке, а вот хотя бы один конкретный пример, приложение в качестве примера.
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    VLK конкретный пример, смотри абстрактные классы, интерфейсы которые так же рассматриваются в книге того же автора который приведен выше.
     
  14. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    http://framework.zend.com/manual/current/en/user-guide/overview.html
    там и ООП и MVC, плюс еще куча интересных полезностей ((:)