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


    Не знаю, если ты напишешь что тут зашифровано - тогда и скажу

    Добавлено
    Цитата KILLER @
    и когда класс АбстрактнаяФигура у тебя рисовал по умолчанию круг


    Тебе что-то приснилась? Не пугай меня своими фантазиями, я не из пугливых. И когда у меня базовый класс фигур рисовал круг, увы, не припомню. Может ссылчку приведешь? Подожду прежде чем влепить тебе минус <_<
      Цитата --Ins-- @
      Не знаю, если ты напишешь что тут зашифровано - тогда и скажу

      В конструкторе класса, параметр m_modify выставляется в ложь, затем просто создается пустая страница, все pContext - это как бы класс - который создает страницу и отображает ее тебе...
        Цитата --Ins-- @
        А я думал что это понятно даже киллерам. Создай документ Word. Он после создания не помечен как изменненный. Поменяй параметры страницы на альбомную - он пометится как измененный. В то же время если ты бы с самого начала создал альбомный документ - он бы измененным не был. Я хочу в программе то же самое. Что бы я не задал в конструкторе, изменения параметров не должно менять статус документа.
        Что то я не понял, как тут может помочь афтерконструктион. Ты ведь не будешь на каждый по особенному настроенный документ отдельный класс писать? Это решается передачей стартового окружения в конструктор. Если ты имеешь ввиду систему документ/вид, то документ в конструкторе и не должен никому ничего сообщать об изменениях. Собственно на этапе конструирования и сообщать то некому. Допустим:
        ExpandedWrap disabled
          word::word_doc doc(word::album); //и кому сообщать?
          word_view view1(doc);
          word_view view2(doc);
          word_view view3(doc);//тут уже и происходит первая отрисовка.
          Цитата --Ins-- @
          Тебе что-то приснилась? Не пугай меня своими фантазиями, я не из пугливых. И когда у меня базовый класс фигур рисовал круг, увы, не припомню. Может ссылчку приведешь?

          Память у тебя короткая однако ;) Я ведь найду, и покажу тебе твои же фантазии...
            Цитата KILLER @
            В конструкторе класса, параметр m_modify выставляется в ложь


            Перед созданием пустой страницы?

            Добавлено
            Цитата KILLER @
            Я ведь найду, и покажу тебе твои же фантазии...


            Я буду ждать :wub:
              Цитата --Ins-- @
              Эти свойства в сеттерах изменяют статус Modified (ну мало ли, в рантайм юзер изменит размер документа, нужно пометить документ как измененный). И ахтунг! Эти же свойства (а может и некоторые другие, а может потомок еще и свои введет) устанавливаются в конструкторе. Как бы так извратиться, чтобы после выполнения конструктора Modified был бы сброшен в false?

              Прикинь! Конструктор будет работать непосредственно с полями, не используя свойства с его геттерами и сеттерами и никаких проблем с Modified не возникнет.
                Цитата --Ins-- @
                Перед созданием пустой страницы?

                Да! Потому как pContext вообще нифига не знает что такое m_modify, он умеет только создавать страницу и рендерить ее для тебя, все :-?
                  Цитата --Ins-- @
                  Цитата D_KEY @
                  А тебе не кажется, что это должен решать потомок?


                  Нет, не кажется. Еще вопросы? ;)

                  Странно, мне кажется это его дело, считать себя измененным или нет...

                  Цитата
                  А тебе не кажется что это должен решить предок? Зачем потомку что-то специально предпринимать, если предок в состоянии об этом позаботится?

                  Блин, он в состоянии и винт отформатировать. Ты можешь обосновать, зачем это решать предку, если он просто не в состоянии принять подобное решение, ибо ничегошеньки не знает о логике работы потомка?
                    Цитата Повстанець @
                    ы ведь не будешь на каждый по особенному настроенный документ отдельный класс писать?


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

                    Цитата Повстанець @
                    Если ты имеешь ввиду систему документ/вид, то документ в конструкторе и не должен никому ничего сообщать об изменениях.


                    Нет, я имею в виду установку параметров в конструкторе, которая (установка) автоматически дернет изменение флага Modified

                    Цитата Повстанець @
                    Что то я не понял, как тут может помочь афтерконструктион.


                    Очень просто. Я в предке в методе AfterConstruction напишу Modified := False и могу дергать в конструкторе (своем или потомков) любые настройки параметров, даже если они и зменяют статус Modified. У меня гарантировано по окончанию конструирования Modified будет сброшен
                      --Ins--, ты мне на это ответишь?
                      Цитата D_KEY @
                      Все-равно не совсем понимаю...
                      ExpandedWrap disabled
                        class Document : boost::nocopyable
                        {
                        public:
                            Document()
                                : m_width(...),
                                  m_height(...),
                                  m_modified(false),
                            {
                            }
                         
                            void SetWidth(int width)
                            {
                                SetParam(&m_width, width);
                            }
                         
                            void SetHeight(int height)
                            {
                                SetParam(&m_height, height);
                            }
                         
                        ...
                         
                        protected:
                            template<typename T>
                            void SetParam(T *param, const T & value)
                            {
                                if (param != 0
                                    && *param != value) {
                         
                                    *param = value;
                                    m_modified = true;
                         
                                }
                            }
                         
                        private:
                            int m_width;
                            int m_height;
                            bool m_modified;
                        };

                      Мог опечататься. Что исправить, чтобы было как у тебя?

                      Если интересно, то наследники могут делать так:
                      ExpandedWrap disabled
                        class MyDocument : public Document
                        {
                        //...
                            MyDocument()
                                : m_some_field(...)
                            {
                            }
                        //...
                        private:
                           int m_some_field;
                        };

                      А если им нужно, чтобы состояние после конструирования изменилось, то так:
                      ExpandedWrap disabled
                        class MyDocument : public Document
                        {
                        //...
                            MyDocument()
                                : m_some_field(0)
                            {
                                SetParam(&m_some_field, ...);
                            }
                        //...
                        private:
                           int m_some_field;
                        };

                      Что не так-то?
                      Сообщение отредактировано: D_KEY -
                        Цитата Мяут-Настоящий @
                        Конструктор будет работать непосредственно с полями


                        В простейшем случае - да, в более сложном - нет. Так есть лекарство от этого более сложного случая? Ну, к примеру, поле - это приватное поле предка, а для его установки у нас в потомке есть только public или protected сеттер? Ы?

                        Цитата KILLER @
                        Да! Потому как pContext вообще нифига не знает что такое m_modify, он умеет только создавать страницу и рендерить ее для тебя, все


                        Перечитай задачу. Если не поможет - вернись и повтори

                        Цитата D_KEY @
                        Блин, он в состоянии и винт отформатировать. Ты можешь обосновать, зачем это решать предку, если он просто не в состоянии принять подобное решение, ибо ничегошеньки не знает о логике работы потомка?


                        Обосновал выше:
                        Цитата --Ins-- @
                        Поясню. Термин Modified вводится на уровне абстракции предка. Предок и берет на себя все функции управления этим состоянием, а не делегирует эту работу потомкам. Потомок это чисто наследует и использует. У потомка свои задачи, которые на уже его уровне абстракции вводятся, если ему еще и решать часть задач предка - то это точно галимое проектирование


                        Добавлено
                        Цитата D_KEY @
                        --Ins--, ты мне на это ответишь?


                        Читай ответ повстанцу
                          Цитата D_KEY @
                          --Ins--, ты мне на это ответишь?

                          Я уверен, он ничего не ответит, либо скажет что его метод лучше, а почему - все опять начнеца по новой... Он ведь даже не представляет другого себе решения, кроме как половину бизнес логики, с какими то флагами перенести в конструктор абстрактного интерфейса(интересно зачем абстрактному интерфейсу вообще конструктор <_< )...
                            Цитата --Ins-- @
                            Нет, я буду писать свой класс на каждый тип документа. Тип документа определяется не параметрами, а задачей, которую он решает. Соответственно у каждого типа набор параметров может быть свой. Но некоторое общее поведение вынесено в базовый класс
                            Извини, но альбомный/неальбомный лист это далеко не разные задачи. Это всего лишь метрика страницы (размеры и поля другие). Едва ли такое изменение заслуживает на отдельный класс.
                            Цитата --Ins-- @
                            Нет, я имею в виду установку параметров в конструкторе, которая (установка) автоматически дернет изменение флага Modified
                            Цитата --Ins-- @
                            Очень просто. Я в предке в методе AfterConstruction напишу Modified := False и могу дергать в конструкторе (своем или потомков) любые настройки параметров, даже если они и зменяют статус Modified. У меня гарантировано по окончанию конструирования Modified будет сброшен
                            Если я правильно понял -- Modified это некое свойство, которое дёргает перерисовку видов. Но при создании документа у него нет ни одного вида. Хрен с ним -- пусть дёргает.
                              Цитата --Ins-- @
                              Перечитай задачу. Если не поможет - вернись и повтори

                              Это ты ее перечитай, что у меня не так? Она полностью подходит под твое ТЗ, что тебе еще нужно то?
                                Цитата --Ins-- @
                                Цитата --Ins-- @
                                Поясню. Термин Modified вводится на уровне абстракции предка. Предок и берет на себя все функции управления этим состоянием, а не делегирует эту работу потомкам.

                                У меня не так разве?

                                Цитата
                                Цитата D_KEY @
                                --Ins--, ты мне на это ответишь?


                                Читай ответ повстанцу
                                В чем мое решение не отвечает твоей постановке задачи?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 71 72 [73] 74 75 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1728 ]   [ 15 queries used ]   [ Generated: 29.07.26, 19:37 GMT ]