За последние 24 часа нас посетили 15855 программистов и 1665 роботов. Сейчас ищут 934 программиста ...

Интерфейсы объектов для блондинок

Тема в разделе "Вопросы от блондинок", создана пользователем artuska, 24 дек 2009.

  1. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    а для чего еще интерфейсы то использовать?:)
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    DarkElf
    Я автор интерфейсов или как?
    Жгешь. Однако.

    Из всего топика, в котором я практически не отметился, ты выцепил меня :)

    Черт возьми, что ты от меня ожидаешь? :) Какому интерфейсу я должен соответствовать? :)

    Соответствие объекта интерфейсу "сиськи" означает для меня, что я, если захочу, могу трогать сиськи.
    Но никто не даст гарантий, что в трусах объекта я не найду мужской член, поскольку интерфейс "женские трусы" хоть и есть, но метод возвращает мне несколько не то, что я жду :)
    Более того, объекты реализующие интерфейс "девушка" могут вести себя крайне разнообразно и быть даже не девушками :)

    Поэтому интерфейс - это не более чем декларация, о том, что объект позволяет с собой так поступать.
    Ты можешь объекту дарить цветы, можешь водить в ресторан, в кино.
    Получишь ли ты ожидаемый результат - это вопрос :)

    Поскольку мы предполагаем адекватность, то, подарив цветы, я расчитываю, как минимум, на ответную улыбку, а не на хук с левой :) но, как я уже сказал трижды, гарантий нет :)
     
  3. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    классное, "интерфейсное" слово, да? ))
     
  4. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Simpliest
    Однако интересный пример :)
     
  5. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    Elkaz
    ага, не то, что я замудрил, хотя то же самое.
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Но в php интерфесы используются как раз для проверки на наличии методов. IteratorAggregate например, или ArrayAccess. А не для защиты от кривых рук программиста, который, когда будет писать плагин к системе, деклалрирует неправильные методы с правильными именами.
     
  7. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    но, в этом случае плагин, хотя бы, не упадет с fatal error'ом..)
     
  8. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    [vs]
    А методы проверять зачем? Как раз для защиты от рук программиста :)
     
  9. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    [vs]
    Метод есть, а вот что конкретно он делает... =))
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Это не важно. Объекты находятся на уровне програмного кода, внесение изменений в программный код само по себе подразумевает, что программист будет делать все правильно. Что толку, если fatal не вылетит при неправильном методе, но вылетит при синтаксической ошибке? =)
     
  11. thunderpick

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

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    так...можете считать меня блондинкой, но я ничего не понял...экзампл в студию!
     
  12. это только твои проблемы.
     
  13. thunderpick

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

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    а рассказать то все таки что такое интерефейсы и для чего они на примере предоставляется возможным?
     
  14. прочти тему.
     
  15. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    сейчас обвинят в неумении абстрактно объяснять :)

    очень упрощённо — считай, что интерфейс — некий пользовательский тип данных для объекта. Стандартизация функционала без его конкретной реализации. Способ абстрагироваться от этой самой реализации на момент планирования. Абстракция такая, ага. Способ, гарантирующий, что описанные тобой методы будут присутствовать в реализаии объекта и , одновременно, позволяющий чётко контролировать избыточность и повторяемость кода в этих самых реализациях.

    А, может, пока не засоряй голову?
     
  16. thunderpick

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

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    из этого можно сделать предположение что в интерфейсе указываются только методы и их свойства которые будут содержать пользовательские классы, так? под пользовательскими я подразумеваю те классы, которые будут написаны либо, допустим мной, либо кем то ещё...короче такой некий шаблон для написания получился...или я снова тупить начал? =)
     
  17. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ну, открой мануал и посмотри
    http://www.php.net/manual/en/language.o ... rfaces.php
    в первом же абзаце
    Вот, только, использование интерфейсов — это скорее технология, а не конкретая реализация, что и влечёт за собой скудность нормальных описаний.
     
  18. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    свойства не определяются в интерфейсе
     
  19. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    я щас одну такую умную (а может кому-то покажется, что глупую) вещь скажу, тогда может станет ясно.
    впервые столкнулся с интерфейсами, когда стал использовать COM/OLE. было это в дэлфи. так вот, интерфейс - это по сути способ множественного наследования, коего, к примеру в ОО модели дэлфи не было.
     
  20. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    на самом деле некое подобие свойтв в интерфейсе в том же COM есть. их можно реализовать через функции)
     
  21. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    это так называемые геттеры/сеттеры - а по сути несусветная глупость.

    Если вся его логика заключается в присвоении/чтении закрытого свойства - он нахрен не нужен.
    А ноги растут из "традиционных" ООП языков типа Java, где не было возможностей динамических языков зато было старание формализовать все и вся в рамках своей парадигмы.

    Между тем, к примеру, в C# уже пришли к неявным get/set для свойств. В PHP мы можем это реализовать при помощи __get/__set

    PHP:
    1. <?php
    2. public function __get($name) {
    3.     $getter = 'get' . ucfirst($name);
    4.     if (method_exists($this, $getter) {
    5.         return $this->$getter();
    6.     } elseif (array_key_exists($name, $this->props)) {
    7.         return $this->props[$name];
    8.     } else {
    9.         throw new Exception('property not found');
    10.     }
    11. }
    12.  
    Буде мне где-то потребуется геттер, мне достаточно будет его определить и он автоматически начнет использоваться.
     
  22. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    мне тоже это всегда диким казалось. но вроде как это являлось хорошим тоном еще в классическом ооп. хотя если спуститься на уровень ниже, то вызов метода (функции), передача параметра более дорогостоящая операция, чем изменение значения ячейки памяти.
     
  23. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Если я правильно помню, то причина как раз в этом: