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


    Где-то 100-200 страниц назад эта разница упоминалась, так что удачных поисков :)
      Цитата IL_Agent @
      в чем разница-то ?:-)

      В абстракции данных! :D

      Добавлено
      Цитата --Ins-- @
      Где-то 100-200 страниц назад эта разница упоминалась, так что удачных поисков :)

      --Ins--, можешь привести пример, чем принципиально отличаются свойства от методов Get/Set ? Я может просто не понимаю слов, хочу хлеба и зрелищ примера :D
      Сообщение отредактировано: scorpion -
        Цитата MyNameIsIgor @
        Я не поленился перейти по "рейтинговой" ссылке D_KEY'я и вот что обнаружил! А чуть ранее мы читаем заботливо сохранённые для потомков тегом quote заветные слова
        Цитата
        Очередной бред дедушки. Ни одно его высказывание не сбывалось, да и ничего правильного тоже не говорил.

        Ну, и наконец, заветный порезанный пост.

        Ну слава Б-гу, не называл я Вирта старым маразматиком... Правда высказывание все-таки некрасивое, тем не менее, мне стало спокойнее :)

        Цитата
        и вы узнаете больше о несдержанном поведении мистера Стальные Нервы!

        :lol:

        Добавлено
        Цитата --Ins-- @
        О, нашлася пропажа!

        Цитата MyNameIsIgor @
        будет ли --Ins-- последовательным в своём крестовом походе и порежет ли свои слова "необучаемый дебил" в адрес


        Буду, если вы меня убедите в сравнимости оскорбительного подтекста в фразах "очередной бред дедушки" и "Этот человек уж очень любит ковыряться внутри и втолковать ему пользу инкапсуляции бесполезно и незачем"

        Тем не менее, я не вижу ничего оскорбительного в слове "дедушка", а "бред" - некрасивая формулирока моего отношения к тому, что было им сказано, а не к нему самому. Так что "маразматик" и т.п. - исключительно твои фантазии. Ты же указал на то, что человек не обладает способностью к восприятию, а это уже оскорбление.
          Я вот допустим могу тоже заявить, что операция присваивания в С++ лучше/гибче чем в делфи, потому как она может работать с абстрактными данными. Допустим я запросто могу налабать оператор присваивания для кого нибудь инта.
          И своему абстрактному классу запросто присвоить число типа integer. В делфи ЕМНИП отсуствует такая возможность перегрузки оператора присваивания.
          Что то типо этого и свойства собой представляют?
          Сообщение отредактировано: scorpion -
            Но я себя не защищаю - был не прав.

            Добавлено
            Цитата korvin @
            вобщем, Абельсон и Сассман негодуют =)

            Пользуясь случаем, рекомендую SICP :)

            Добавлено
            Цитата --Ins-- @
            Цитата korvin @
            методы могут быть данными, а данные могут быть методами


            Могут. Но это называется "дырявая абстракция"

            Нет.
            А если мы представим, что сами методы могут являться объектами ;) ?
            Сообщение отредактировано: D_KEY -
              Ох, как же вы задол надое ...наскучили :angry: Когда вы перестанете смотреть в определение инкапсуляции, а вернётесь в обоснованию её наличия. Цель инкапсуляции - связать все детали реализиции с логической единицей с легко контролируемыми рамками, например, границами области видимости класса. А также сделать невозможным неконтролируемый доступ к деталям. Именно поэтому поля скрываются от публичного взора, а методы - не всегда. Потому что поля всегда доступны без контроля всякоразных инвариантов, а методы обеспечивают требуемый контроль. Точнее могут обспечить, ибо любители возвращать ссылки на поля не переведутся никогда, и толку от такой инкапсуляции выцензурено. А, korvin, я прав? Или такая инкапсуляция имеет право существовать согласно её определению? Или это не инкапсуляция, несмотря на её определение?
              Свойства обеспечивают не менее строгий контроль. Точнее могут обеспечить. Торчащая наружу сущность, выглядящая как поле, нарушает инкапсуляцию? Каким образом? Мне что, аттрибут цвета у машины из её ТТХ получать? Или всё-таки можно просто посмотреть? А чтобы перекрасить, достаточно будет пальцем дотронуться?

              Похоже пора опять из темы сваливать...
                Цитата --Ins-- @
                Где-то 100-200 страниц назад эта разница упоминалась, так что удачных поисков

                ЕМНИП касалось это индексации свойств :)

                Цитата scorpion @
                можешь привести пример, чем принципиально отличаются свойства от методов Get/Set ?

                Удобней будет, если дверной замок открывать одним ключом, а закрывать другим?

                Скрытый текст
                Цитата korvin @
                Цитата scorpion @
                Интересно, как подлежащим можно выразить абстракцию для конкретного объекта? Ты не ответил на мой вопрос, чем свойства отличаются от методов Get/Set . Я могу с увереностью утверждать что глаголы абстрактнее существительных, потому как глаголы - выражают действие, а существительные - это просто предмет.

                причем в РЯ как подлежащим, так и сказуемым может выступать как глагол, так и существительное

                следовательно, лисп блииже к РЯ, чем к АЯ =)

                Цитата Фонвизин
                Правдин: Дверь, например, какое имя: существительное или прилагательное?
                Митрофан: Дверь? Котора дверь?
                Правдин: Котора дверь! Вот эта.
                Митрофан: Эта? Прилагательна.
                Правдин: Почему ж?
                Митрофан: Потому что она приложена к своему месту. Вон у чулана шеста неделя дверь стоит еще не навешена: так та покамест существительна.

                :lool:


                Добавлено
                Цитата korvin @
                особенно когда нужно передать более одного значения... и ладно бы в делфи были кортежи, так ведь нету...

                Хмм, а у меня они есть :D (библиотекой ;) )

                Добавлено
                Цитата scorpion @
                И своему абстрактному классу запросто присвоить число типа integer. В делфи ЕМНИП отсуствует такая возможность перегрузки оператора присваивания.

                Перегружать можно только рекорды, классы нет... но всегда можно найти выход, сделав рекорд полем (свойством :D) класса.

                Добавлено
                Цитата
                Где-то 100-200 страниц назад эта разница упоминалась, так что удачных поисков

                Нашёл кстати Delphi vs C++ vs C# (сообщение #2813237)
                Сообщение отредактировано: DesweR -
                  Цитата Qraizer @
                  Ох, как же вы задол надое ...наскучили :angry: Когда вы перестанете смотреть в определение инкапсуляции, а вернётесь в обоснованию её наличия. Цель инкапсуляции - связать все детали реализиции с логической единицей с легко контролируемыми рамками, например, границами области видимости класса. А также сделать невозможным неконтролируемый доступ к деталям. Именно поэтому поля скрываются от публичного взора, а методы - не всегда. Потому что поля всегда доступны без контроля всякоразных инвариантов, а методы обеспечивают требуемый контроль. Точнее могут обспечить, ибо любители возвращать ссылки на поля не переведутся никогда, и толку от такой инкапсуляции выцензурено. А, korvin, я прав? Или такая инкапсуляция имеет право существовать согласно её определению? Или это не инкапсуляция, несмотря на её определение?

                  вообще-то не только и не столько для этого, а для возможности менять реализацию, без влияния на клиентский код. был например у нас класс
                  ExpandedWrap disabled
                    class A
                      field1
                      field2
                      field3
                     
                      method1 { uses field1 and field2 }
                      method2 { uses field2 and field3 }
                    end

                  мы пересмотрели реализацию метода 1 например, написали новую реализацию, оказалось она не требует поля 1, убрали поле 1.

                  ты в своих суждениях отталкиваешься от реализации, а нужно отталкиваться от интерфейсов.

                  Добавлено
                  Цитата DesweR @
                  :lool:

                  что смешного? то, что ты РЯ в школе не учил?

                  Цитата DesweR @
                  Хмм, а у меня они есть :D (библиотекой ;) )

                  небось тормозные и нетипобезопасные =) покажешь реализацию?
                    Цитата korvin @
                    что смешного? то, что ты РЯ в школе не учил?

                    РЯ тут не причём :D

                    Цитата korvin @
                    небось тормозные и нетипобезопасные =) покажешь реализацию?

                    Особенного там ничего нет (дженерики и местами rtti), вот отрывок. До финальной версии ещё далеко.
                    ExpandedWrap disabled
                        TTuple<T1> = class(TBaseTuple)
                        strict protected
                          FItem1: T1;
                          FIsEmpty: Boolean;
                          function    GetCount: Integer; override;
                          function    GetNestedCount: Integer; virtual;
                          function    GetItem(const AIndex: Integer): TValue; override;
                          function    GetNestedItem(const AIndex: Integer; out AItem: TValue): Boolean; virtual;
                        public
                          constructor Create; overload;
                          constructor Create(const AItem1: T1); overload;
                          procedure   ReCreate; overload; virtual;
                          procedure   ReCreate(const AItem1: T1); overload; inline;
                          property    Item1: T1 read FItem1;
                        end;
                       
                       
                        TTuple<T1, T2> = class(TTuple<T1>)
                        strict protected
                          FItem2: T2;
                          function    GetNestedCount: Integer; override;
                          function    GetNestedItem(const AIndex: Integer; out AItem: TValue): Boolean; override;
                        public
                          constructor Create; overload;
                          constructor Create(const AItem1: T1; const AItem2: T2); overload;
                          procedure   ReCreate; overload; override;
                          procedure   ReCreate(const AItem1: T1; const AItem2: T2); overload; inline;
                          property    Item2: T2 read FItem2;
                        end;
                       
                        и т.п...

                    ExpandedWrap disabled
                      var
                        Tuple: TTuple<Integer, Char>;
                      begin
                        Tuple := TTuple<Integer, Char>.Create(123, 'A');
                       
                        ... := Tuple.Item1;
                        ... := Tuple.Item2;
                      end;
                      Цитата DesweR @
                      Удобней будет, если дверной замок открывать одним ключом, а закрывать другим?

                      Нет конечно. Но в моем примере ключ один и замок один. Ты просто немножко путаешь. Ключ - это объект, а вот Открыть/Закрыть - это его методы Get/Set.
                        Цитата DesweR @
                        Особенного там ничего нет (дженерики и местами rtti), вот отрывок. До финальной версии ещё далеко.

                        Есть мнение, что даже в boost'е на C++03 они красивее сделаны...
                          Цитата korvin @
                          ты в своих суждениях отталкиваешься от реализации, а нужно отталкиваться от интерфейсов.

                          А если объекты нашего класса должны владеть объектами некоторых других классов, причем согласно предметной области, а не реализации? Тут Flex приводит пример.

                          Добавлено
                          Цитата DesweR @
                          Особенного там ничего нет (дженерики и местами rtti), вот отрывок.

                          Ужас. Неужели нельзя сделать хотя бы списки типов(по типу лисповских обычных типов, но во время компиляции для дженериков), чтобы не копипастить?
                            Цитата scorpion @
                            Ключ - это объект, а вот Открыть/Закрыть - это его методы Get/Set.

                            Да нет. Объект - это замок, а Get/Set - открыть ключом, либо закрыть ключом замок (получить методом данные, либо записать методом данные).

                            Цитата D_KEY @
                            Ужас. Неужели нельзя сделать хотя бы списки типов

                            Во первых, как ты представляешь доступ к элементам кортежа? Мне хотелось бы что-нибудь более-менее читабельное, типа Item1, Item2..ItemN, ну и конечно типобезопасное.
                            Собственно исходя из этого кортежи "расширял" производными классами.
                            Во вторых и на кой ляд они тогда нужны?
                            ExpandedWrap disabled
                                TTuple<T1> = class(TBaseTuple)
                                strict protected
                                  FItem1: T1;
                                  ...
                                public
                                  ...
                                  property Item1: T1 read FItem1;
                                end;
                               
                                TTuple<T1, T2> = class(TTuple<T1>)
                                strict protected
                                  F : T2;
                                  ...
                                public
                                  ...
                                  property Item2: T2 read FItem2;
                                end;
                               
                               
                                ... := Tuple.Item1;
                                ... := Tuple.Item2;


                            Цитата MyNameIsIgor @
                            Есть мнение, что даже в boost'е на C++03 они красивее сделаны...

                            :bad:

                            Добавлено
                            Цитата D_KEY @
                            чтобы не копипастить?

                            И да, "копипаст" там до восьми элементов ;)
                            Сообщение отредактировано: DesweR -
                              Цитата DesweR @
                              как ты представляешь доступ к элементам кортежа? Мне хотелось бы что-нибудь более-менее читабельное, типа Item1, Item2..ItemN, ну и конечно типобезопасное.

                              Именно так.

                              Цитата
                              Во вторых и на кой ляд они тогда нужны?

                              Кто "они"?
                              Списки типов позволят тебе избавится от копипасты "логики" релизации кортежа, останется лишь копипаста для перечисления типов элементов.
                              Под списками типов понимается нечто в таком духе:
                              ExpandedWrap disabled
                                template<typename H, typename T>
                                struct TypeList
                                {
                                    typedef H Head;
                                    typedef T Tail;
                                };
                                 
                                struct NullType {};


                              Цитата
                              Цитата MyNameIsIgor @
                              Есть мнение, что даже в boost'е на C++03 они красивее сделаны...

                              :bad:
                              Что тебе там не понравилось?
                              С использованием нового стандарта кортежи делаются красиво и просто.
                                Цитата D_KEY @
                                Именно так.

                                Ну покажи (и хочется чтобы ещё Code Completion их отображал во всплывающем окошке, чтоб не держать в голове все типы элементов).

                                Добавлено
                                Цитата D_KEY @
                                Под списками типов понимается нечто в таком духе:

                                Я знаю ;)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 326 327 [328] 329 330 ...  494 495


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