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

    Ну какие все, млин? Вот я чуть выше написал примитивный класс "вектор". Мне что, отдельно длину, отдельно значения элементов в объекты разносить?
      Цитата DesweR @
      Простой пример: пишем свой компонент TMyStatusBar, наследуется от TCustomPanel и переносим из протектед в публишед все свойства окромя Aligh, Height, Weigth.

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

      Добавлено
      Цитата Romkin @
      Ну вот, сам не собираешься, а других подталкиваешь. Нехорошо!

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

        Общий наследник. У него свои задачи. А вот какую панельку ты на основе него будешь делать, конкретизируется в потомках.
        Точно такой же пример: есть TCustomLabel, у него Caption протектирована. У TLabel оно в паблик идет, а у TDBLabel - нет, ибо берется из поля таблицы. Но все это - TCustomLabel, выглядит одинаково. По-твоему надо было селать два разных класса?
          Цитата Romkin @
          Ну какие все, млин? Вот я чуть выше написал примитивный класс "вектор". Мне что, отдельно длину, отдельно значения элементов в объекты разносить?

          а зачем у тебя длина в protected? у тебя что, у твоего примитивного вектора нельзя взять длину? как ты его итерировать собрался?
          и мне интересно, как это у тебя в интерфейсе методы публичные, а в объекте, реализующем этот интерфейс -- защищенные?

          Добавлено
          Цитата Romkin @
          Общий наследник. У него свои задачи. А вот какую панельку ты на основе него будешь делать, конкретизируется в потомках.
          Точно такой же пример: есть TCustomLabel, у него Caption протектирована. У TLabel оно в паблик идет, а у TDBLabel - нет, ибо берется из поля таблицы. Но все это - TCustomLabel, выглядит одинаково. По-твоему надо было селать два разных класса?

          по-моему нужно было в TCustomLabel (это же у нас абстрактный класс, да?) сделать Caption абстрактным методом/свойством без реализации. а так у вас TDBLabel получается захламлен лишними методами/свойствами/полями из предка.
            Цитата korvin @
            по-моему нужно было в TCustomLabel (это же у нас абстрактный класс, да?) сделать Caption абстрактным методом/свойством без реализации. а так у вас TDBLabel получается захламлен лишними методами/свойствами/полями из предка.

            Почему захламлен? Снаружи у него ничего лишнего нет. Изнутри - реализаторы TDBLabel должны же были менять текст на нем, логично это делать через caption, как обычно.
              Цитата korvin @
              по-моему нужно было в TCustomLabel (это же у нас абстрактный класс, да?) сделать Caption абстрактным методом/свойством без реализации. а так у вас TDBLabel получается захламлен лишними методами/свойствами/полями из предка.

              Неа. Caption используется TDBLabel, по назначению. Просто не экспонируется.
              Цитата korvin @
              а зачем у тебя длина в protected? у тебя что, у твоего примитивного вектора нельзя взять длину? как ты его итерировать собрался?
              и мне интересно, как это у тебя в интерфейсе методы публичные, а в объекте, реализующем этот интерфейс -- защищенные?

              Чтобы пользовались интерфейсом, а не его реализацией, дизайн такой. И если ты посмотришь на код, то увидишь, что все в порядке.
                Цитата OpenGL @
                Почему захламлен? Снаружи у него ничего лишнего нет. Изнутри - реализаторы TDBLabel должны же были менять текст на нем, логично это делать через caption, как обычно.

                зато внутри полный абзац, все правильно, так и надо, да.
                  Цитата korvin @
                  зато внутри полный абзац, все правильно, так и надо, да.

                  Никакого абзаца там нет. Это просто визуализация строки, не более. Абзац в тех отрывках кода что ты тут писал. Куча объектов для подключения - это не фонтан.
                    Цитата Romkin @
                    А как насчет default? Обрати внимание на Vector[0] := 1;

                    default - он бывает разный. Тут default чего имеется в виду?
                      Цитата Flex Ferrum @
                      default - он бывает разный. Тут default чего имеется в виду?

                      Свойство по умолчанию. То есть, поскольку Elem дефолтное, то вместо Vector.Elem[i] можно писать просто Vector[i], ну или dict['MyKey'] := Value; - лишь бы хотя бы один индекс был.
                        Цитата Romkin @
                        Свойство по умолчанию. То есть, поскольку Elem дефолтное, то вместо Vector.Elem[i] можно писать просто Vector[i], ну или dict['MyKey'] := Value; - лишь бы хотя бы один индекс был.

                        А, это в С++ реализуется обычным оператором индексирования. Т. е. тут ничего изобретать не надо.
                        Сообщение отредактировано: Flex Ferrum -
                          Цитата Flex Ferrum @
                          А, это в С++ реализуется обычным оператором индексирования. Т. е. тут ничего изобретать не надо.

                          А, понятно :)
                            Кстати, надо бы отрефачить реализацию свойств под новый стандарт.
                              Цитата Flex Ferrum @
                              Кстати, надо бы отрефачить реализацию свойств под новый стандарт.

                              Напомни, как твои свойства получают this своего объекта-владельца?
                                Цитата D_KEY @
                                Напомни, как твои свойства получают this своего объекта-владельца?

                                ExpandedWrap disabled
                                  class Unit
                                  {
                                  public:
                                      Unit() : properties__(this) {/* ... */;}
                                  };
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 298 299 [300] 301 302 ...  494 495


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