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

    Закрытыми - это в привате? А какой смысл тогда в их виртуальности, перекрыть же нельзя?
      Цитата D_KEY @
      Я плохо читал вашу ветку обсуждения, может не так понял. Но, например, виртуальные методы я часто делаю не просто защищенными, но и закрытыми, оставляя в public невиртуальный интерфейс. Или вы о чем-то другом?

      не, мы тут немного о другом, а так как ты делаешь, я где-то читал, что так и надо
        Цитата korvin @
        еще map вместо известной функции является ассоциативным массивом, было еще что-то, но сейчас не вспомню

        Ну да, какой-нибудь dict был бы логичнее. С другой стороны, transform более подходит, чем map.
        Но это наименование функции/типа, в принципе, ничего страшного.

        Добавлено
        Цитата Romkin @
        Цитата D_KEY @
        Я плохо читал вашу ветку обсуждения, может не так понял. Но, например, виртуальные методы я часто делаю не просто защищенными, но и закрытыми, оставляя в public невиртуальный интерфейс. Или вы о чем-то другом?

        Закрытыми - это в привате? А какой смысл тогда в их виртуальности, перекрыть же нельзя?

        Не знаю, как в Delphi, в С++/C#/Java можно.
          Цитата Romkin @
          1. Я нигде не говорил, что все методы объекта закрытые

          Т.е. класс реализующий интерфейс, помимо того что реализует интерфейс, еще и предоставляет какието методы? А зачем? Почему их не вынести в интерфейс? Вспомогательные же методы, для реализации интерфейса делать открытыми - зачем?

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

          Как зачем? За тем, чтобы гибко реализовать динамический полиморфизм. Т.е. имея интерфейс, ты можешь в рантайме менять для него реализации.

          Цитата Romkin @
          3. Класс может обладать своим функционалом. А может и не обладать. Речь совершенно не о том.

          А. Тоесть класс, этот не просто реализует интерфейс, он еще и сам предоставляет какой то функционал, который к интерфейсу не относится? И зачем мне такой класс? Типо на все случаи жизни, нет функциональности в интерфейсе - не проблема, ща возьмем класс, реализующий этот интерфейс, и к нему прикрутим/у него возьмем этот функционал. гениально.
            Цитата D_KEY @
            Я плохо читал вашу ветку обсуждения, может не так понял. Но, например, виртуальные методы я часто делаю не просто защищенными, но и закрытыми, оставляя в public невиртуальный интерфейс. Или вы о чем-то другом?

            Ну, как я понимаю, они у тебя изначально приватные/защищённые. Т.е. определяют конкретную реализацию и вызываются из невиртуального метода. Не буду столь категоричен
            Цитата korvin @
            я где-то читал, что так и надо

            но когда выгодно тоже применяю такой подход.
            Romkin же, переводя на твой пример, занимается понижением видимости, т.е. если бы ты виртуальный метод объявил публичным, а вот в потомке - приватным. И поскольку для его вызова надо скастовать к предку, то вышеупомянутый оратор называет это каким-то там разделением и сокрытием.
            Сообщение отредактировано: MyNameIsIgor -
              Цитата MyNameIsIgor @
              Всех типов? А как насчёт динамической регистрации/дерегистрации?

              А зачем она тебе?
                Цитата D_KEY @
                Не знаю, как в Delphi, в С++/C#/Java можно.

                ?! Нифига себе извращения... Чем протектед не по нраву?
                Цитата MyNameIsIgor @
                И поскольку для его вызова надо скастовать к предку, то вышеупомянутый оратор называет это каким-то там разделением и сокрытием.

                Не к предку, а так принцип похож.

                Добавлено
                Цитата scorpion @
                А. Тоесть класс, этот не просто реализует интерфейс, он еще и сам предоставляет какой то функционал, который к интерфейсу не относится? И зачем мне такой класс? Типо на все случаи жизни, нет функциональности в интерфейсе - не проблема, ща возьмем класс, реализующий этот интерфейс, и к нему прикрутим/у него возьмем этот функционал. гениально.

                Читай выше, обычно в интерфейсе реализуют дополнительный функционал. Это может быть все что угодно.
                  Цитата D_KEY @
                  Цитата Romkin @

                  Закрытыми - это в привате? А какой смысл тогда в их виртуальности, перекрыть же нельзя?

                  Не знаю, как в Delphi, в С++/C#/Java можно.

                  эм.. в Java нельзя. можно создать новый метод с такой же сигнатурой, но это и будет именно что новый метод.
                    Цитата MyNameIsIgor @
                    виртуальный метод объявил публичным, а вот в потомке - приватным.

                    Ничего страшного не вижу, но и смысла такого действия не понимаю. Сдается мне, что и is-a тут нет.
                      Цитата Romkin @
                      Читай выше, обычно в интерфейсе реализуют дополнительный функционал. Это может быть все что угодно.

                      не забывай добавлять "в Делфи" к таким высказываниям =)
                        Цитата Romkin @
                        Читай выше, обычно в интерфейсе реализуют дополнительный функционал. Это может быть все что угодно.

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

                          Уверен? Мне казалось, что я так делал. Пойду читать :)
                          Если ты прав, то спасибо за поправку :)

                          Добавлено
                          Цитата Romkin @
                          Чем протектед не по нраву?

                          Тем, что он позволит вызывать метод базового класса из кода производного класса. Если это нужно, то делаем protected.
                            Цитата D_KEY @
                            Цитата MyNameIsIgor @
                            виртуальный метод объявил публичным, а вот в потомке - приватным.

                            Ничего страшного не вижу

                            а как с такой возможностью нормально пользоваться сабтайпингом? если у нас функция ожидает объект класса Parent с методом foo, а туда передают объект класса Child, в котором этот метод переведен в приват? хорошо еще, что компилятор в принципе это может отследить, но весь смысл сабтайпинга на смарку =)

                            Добавлено
                            Цитата D_KEY @
                            Уверен? Мне казалось, что я так делал. Пойду читать :)
                            Если ты прав, то спасибо за поправку :)

                            уверен. проверено в IDEA =)
                              Цитата scorpion @
                              А работают с классами. А интерфейсы, это так - дополнительный функционал. Я правильно понимаю?

                              Когда как. Может быть дополнительным, но можно реализовать и как основной. Если интерфейс основной, то как правило у него идет подсчет ссылок, публичные методы - только вспомогательные, и работа только с интерфейсом.
                                Цитата Romkin @
                                Когда как. Может быть дополнительным, но можно реализовать и как основной.

                                И когда как? Пример можно привести? Зачем тогда нужен интерфейс с дополнительным функционалом?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 319 320 [321] 322 323 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.4371 ]   [ 14 queries used ]   [ Generated: 31.07.26, 19:24 GMT ]