На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 304 305 [306] 307 308 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата Romkin @
    Цитата D_KEY @
    Как-то высосано из пальца, ИМХО.

    Может быть. Но мне кажется что лучше явно видеть интерфейс в заголовке, это элемент самодокументирования. Тем более что причин этого не делать я не вижу.

    В заголовке класса, ты имеешь в виду?
      Цитата D_KEY @
      В заголовке класса, ты имеешь в виду?

      Думаю, что да, он именно это и имеет в виду. Мне тоже этого хочется.
      Другое дело, что такую возможность можно предоставить, соответственно компилятор должен проверить факт реализации интерфейса.
      А вот при запихивании в функцию уже можно и уткой прикинуться.
        Цитата MyNameIsIgor @
        Другое дело, что такую возможность можно предоставить, соответственно компилятор должен проверить факт реализации интерфейса.
        А вот при запихивании в функцию уже можно и уткой прикинуться.

        Ну так если хочешь указывать - указывай на здоровье :)
          Цитата D_KEY @
          В заголовке класса, ты имеешь в виду?

          Да, конечно. Явное указание, что предусмотрен именно этот интерфейс. Да и для поиска зависимостей удобно, посмотрел, где он еще есть - и представление появляется, для чего это нужно.
          Цитата MyNameIsIgor @
          А вот при запихивании в функцию уже можно и уткой прикинуться.

          Так оно так и получается. Есть интерфейс у класса - значит, и в функцию пройдет.
            Цитата Romkin @
            Так оно так и получается. Есть интерфейс у класса - значит, и в функцию пройдет.

            Неееее :) Здесь не это имеется ввиду. На псевдоплюсах, как-то так
            ExpandedWrap disabled
              interface A
              {
                void foo();
              }
               
              interface B
              {
                void foo();
              }
               
              class C : A //компилятор проверяет факт реализации
              {
                void foo() { /* code */ }
              }
               
              void bar(B b) { /* code */}
               
              bar(new C()); //войдёт уткой :)
              Цитата MyNameIsIgor @
              На псевдоплюсах, как-то так

              После этого я требую объяснений, за что в прошлый раз в меня летели камни :lol: ?
                Цитата DesweR @
                Здрасьти, а зачем тебе тогда вообще интерфейсы, как ты с ними собираешься работать?

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

                Цитата D_KEY @
                :wall: Думаю, продолжать бесполезно. Может стоит немного поработать с языками, где интерфейсы есть?

                Для чего? Я не думаю что там где они есть(в том же C#,java), там они концептуально отличаются от абстрактных классов. Иначе в общем случае, это было бы оговорено в документации к ним.

                Вы оперируете только конкретными ньюансами ЯП, а не концепцией интерфейсов. В это ваша ошибка, имхо.
                  Цитата D_KEY @
                  После этого я требую объяснений, за что в прошлый раз в меня летели камни

                  А я требую показать, где я сказал, что это мой идеал? :)
                  Это близко к идеалу, но мне всё равно не нравится, что я реализовал C не зная о B, а его поюзали как B.
                    Цитата MyNameIsIgor @
                    Неееее Здесь не это имеется ввиду. На псевдоплюсах, как-то так

                    Упс. утка в смысле сигнатуры? Неее. Опять запихнут не то. Да и зачем это надо, если у класса указан A, а его вместо B пихают. Во-первых чрезвычайно подозрительно, во-вторых представить себе не могу зачем так может быть.
                      Цитата Romkin @
                      Может быть. Но мне кажется что лучше явно видеть интерфейс в заголовке, это элемент самодокументирования.

                      Лучше пользоваться средствами генерирования документации/писать документацию, когда программистов много. Кроме того, если интерфейс не реализован, то программа просто не скомпилируется.

                      Цитата Romkin @
                      Тем более что причин этого не делать я не вижу.

                      а если интерфейса на момент написания класса не существовало? а у тебя функция, которая работает только с классами, реализующими этот интерфейс, как ты поступишь?
                        Цитата scorpion @
                        Мне не понятна суть вашего вопроса, зачем мне запрашивать интерфейс, неизвестный на этапе компиляции, у объекта, тоже неизвестного на этапе компиляции ?

                        Вот запрашивать известный интерфейс у объекта, неизвестного на этапе компиляции, иногда может быть полезно :)
                        Цитата MyNameIsIgor @
                        Это близко к идеалу, но мне всё равно не нравится, что я реализовал C не зная о B, а его поюзали как B.

                        Во-во. И зачем это понадобилось - тоже вопрос :)
                          Цитата scorpion @
                          Я не думаю что там где они есть(в том же C#,java), там они концептуально отличаются от абстрактных классов. Иначе в общем случае, это было бы оговорено в документации к ним.

                          "interfaces vs abstract class" в google и вперед :)

                          Цитата
                          Вы оперируете только конкретными ньюансами ЯП, а не концепцией интерфейсов.

                          А вы под концепцией интерфейсов понимаете концепцию абстрактных классов.
                            Цитата korvin @
                            а если интерфейса на момент написания класса не существовало? а у тебя функция, которая работает только с классами, реализующими этот интерфейс, как ты поступишь?

                            1. Потомок с объявлением интерфейса
                            2. Обертка, опять же с объявлением интерфейса
                            Просто скорее всего если интерфейса не было когда писали класс, то и что-то не совпадает, или сигнатуры методов, или их имена или чуть отличается реализация от нужной.
                              Цитата Romkin @
                              Один написал объект, а другой, увидя сигнатуру, подал его в свой метод.

                              так что, тот, кто пихает, не видит, что он пихает и куда?

                              Добавлено
                              Цитата MyNameIsIgor @
                              Это близко к идеалу, но мне всё равно не нравится, что я реализовал C не зная о B, а его поюзали как B.

                              как это не знал, если они у тебя в одном исходнике? =)
                              а если в разных, то это и разные foo, в одном случае PackageA.foo, в другом PackageB.foo, поэтому C не влезет там =)
                                Цитата korvin @
                                как это не знал, если они у тебя в одном исходнике? =)

                                А вы всё всегда понимаете буквально?
                                Утиная типизация должна посмотреть только на сигнатуры методов, а не пространства имён. Иначе она вообще на хэ не нужна.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 304 305 [306] 307 308 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.4359 ]   [ 14 queries used ]   [ Generated: 1.08.26, 01:14 GMT ]