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

    к типу - нет, к реализации значений типа - да.

    Поясни, не понял. Если мне память не изменяет и в TAPL под типом понималось множество значений и операции.

    В общем, у нас тут уже жуткая путаница в терминах.
      Цитата D_KEY @
      ExpandedWrap disabled
        void f(A &a)
        {
            a.f();
        }

      Принимаем по ссылке объект, одним из типов которых является A и вызываем соответствующий метод.

      угу, и что? =)
      Конкретный тип объекта не А, абстрактные классы и интерфейсы лишь средства реализации специального полиморфизма и повторного использования кода. Собственных типов они не имеют
        Цитата korvin @
        Цитата D_KEY @
        ExpandedWrap disabled
          void f(A &a)
          {
              a.f();
          }

        Принимаем по ссылке объект, одним из типов которых является A и вызываем соответствующий метод.

        угу, и что? =)
        Конкретный тип объекта не А, абстрактные классы и интерфейсы лишь средства реализации специального полиморфизма и повторного использования кода. Собственных типов они не имеют

        В некоторой литературе они называются типами. В том числе и в GoF. Понимаешь, тут весь вопрос, что понимать под типом :)

        Добавлено
        Повстанець уже как-то цитировал.
        Цитата
        Тип — это имя, используемое для обозначения конкретного интерфейса. Гово-
        рят, что объект имеет тип Window, если он готов принимать запросы на выполне-
        ние любых операций, определенных в интерфейсе с именем Window. У одного
        объекта может быть много типов. Напротив, сильно отличающиеся объекты мо-
        гут разделять общий тип. Часть интерфейса объекта может быть охарактеризова-
        на одним типом, а часть - другим. Два объекта одного и того же типа должны раз-
        делять только часть своих интерфейсов. Интерфейсы могут содержать другие
        интерфейсы в качестве подмножеств. Мы говорим, что один тип является подти-
        пом другого, если интерфейс первого содержит интерфейс второго. В этом случае
        второй тип называется супертипом для первого. Часто говорят также, что подтип
        наследует интерфейс своего супертипа.
          Киллер, ты когда-нибудь пробовал страницы просматривать полностью или у тебя прокрутки в системе в принципе нет? =) подсказка: в англовике классификацию типов посмотри

          Д_Кей а как же быть с записями и алгебраическими типами данных? Как быть, когда за одинаковыми интерфейсами скрывается совершенно разное поведение?
            Цитата korvin @
            Д_Кей а как же быть с записями и алгебраическими типами данных?

            А что с ними не так?

            Цитата
            Как быть, когда за одинаковыми интерфейсами скрывается совершенно разное поведение?

            Это нормальная ситуация.
              Цитата korvin @
              Киллер, ты когда-нибудь пробовал страницы просматривать полностью или у тебя прокрутки в системе в принципе нет? =) подсказка: в англовике классификацию типов посмотри

              Я не нашел противоречий с русской вики, хотя да, описаное действительно отличается... Но никаких противоречий нема :-?
              Просто если рассматривать тип, как характеристику "данного"(не данных), что именно и рассматриваешь ты, то да, потому как характеристика должна что то характеризовать... Но на таком уровне я и не собирался рассматривать типы данных, конечно же понятно, что код функции, класса, структуры, тайпдефа или еще чего то, никуда не девается, а лишь трансформируется в машинный код. Но, ты этими данными управлять не может, т.е. ты не можешь просто вот так сделать этот код полиморфным, мы ведь говорим о прикладном программировании, с этой точки зрения и рассматривай Типы и Типы данных. На этом уровне как раз таки, Типы данных отличаются от Типов, потому как класс, может попросту не содержать данных, которыми можно оперировать и над которыми можно производить операции, но при этом это будет тип!

              Добавлено
              Ну и как пример, вот:
              ExpandedWrap disabled
                class A
                {};

              Вполне законная конструкция, скомпилица на ура... Но данных не содержит, может ли это называтся типом данных, если эта структура их попросу не содержит??
              Сообщение отредактировано: KILLER -
                почему не могу? Могу создавать значения, объявлять переменные, присваивать им значения, передавать как параметры другим процедурам. Всё как с другими данными встроенных типов
                  Цитата korvin @
                  почему не могу? Могу создавать значения, объявлять переменные, присваивать им значения, передавать как параметры другим процедурам. Всё как с другими данными встроенных типов

                  В том то и дело, что ты сможешь только объявить переменную и передать объект этого типа в функцию/метод, и все... Какое значение ты собрался присваивать типу "данных" выше? И с чем оперировать?

                  Добавлено
                  Кстати можно еще над последним примером поиздеваца вот так:
                  ExpandedWrap disabled
                    class A
                    {
                    private:
                    A();
                    };

                  и тогда вообще будет жесть, ты даже не сможешь создать переменной этого типа "данных"
                  Сообщение отредактировано: KILLER -
                    Цитата KILLER @
                    Ну и как пример, вот:
                    ExpandedWrap disabled
                      class A
                      {};

                    Вполне законная конструкция, скомпилица на ура... Но данных не содержит, может ли это называтся типом данных, если эта структура их попросу не содержит??

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

                      Последний вариант посмотри, вот этот:
                      ExpandedWrap disabled
                        class A
                        {
                        private:
                        A();
                        };

                      Экземпляр этого класса уже не создашь, потому как его конструктор находится в закрытой сецкии класса, а закрытые члены/методы можно вызывать только в пределах области видимости этого класса, и все...
                        Цитата KILLER @
                        В том то и дело, что ты сможешь только объявить переменную и передать объект этого типа в функцию/метод, и все... Какое значение ты собрался присваивать типу "данных" выше? И с чем оперировать?

                        ExpandedWrap disabled
                          type
                            Foo = function (x :Integer) :Integer;
                           
                          var
                            y : Foo;
                           
                          function f (x :Integer) :Integer;
                          begin
                            Result := x + 1;
                          end;
                           
                          // ...
                          y := f;
                          WriteLn( y(0) );
                          // ...


                        Добавлено
                        Цитата KILLER @
                        Последний вариант посмотри, вот этот:
                        ExpandedWrap disabled
                          class A
                          {
                          private:
                          A();
                          };

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

                        дык я же писал -- нет значений => нет типа
                        Сообщение отредактировано: korvin -
                          Цитата korvin @
                          дык я же писал -- нет значений => нет типа

                          А чтоже это по твоему? :unsure:
                          Там ведь голубым и черным по белому написано
                          Цитата
                          тип А
                            Цитата KILLER @
                            А чтоже это по твоему? :unsure:
                            Там ведь голубым и черным по белому написано
                            Цитата
                            тип А

                            там написано "class A". очевидно, что это класс.
                              Цитата korvin @
                              Цитата KILLER @
                              А чтоже это по твоему? :unsure:
                              Там ведь голубым и черным по белому написано
                              Цитата
                              тип А

                              там написано "class A". очевидно, что это класс.

                              А классы, в общем случае, описывают абстрактные типы данных. Нет?
                                D_KEY, вернемся к нашим баранам.... Про класс дл работы с GDI+... Опиши еще раз, подробнее, что этот класс у тебя будет делать. Интерфейс его приведи, если так угодно
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 131 132 [133] 134 135 ...  494 495


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