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

      Нашел с животными, помню было с геометрическими фигурами, но искать и просматривать все, в забаненом виде фигова:
      Цитата --Ins-- @
      Мне нужно в одних случаях интрефейс и реализация, а в других только интерфейс. В этом случае я могу реализовать в базовом классе дефолтное поведение, которое в первом случае - унаследовать, а во втором - переопределить. Логично? Пример: есть базовый класс - "животное". В нем я объявлю метод "передвижение". Мне удобно его и сразу реализовать - последовательно передвинуть все лапы. Слоном, лошадью и собакой я это поведение унаследую, а для птицы - переопределю так: если на земле то inherited иначе - другая реализация (машем крыльями).

      Смысл от этого не меняется, что ты у АбстрактнойФигуры по умолчанию решил рисовать круг, что В классе Абстрактноеживотное переопределять метод по умолчанию который переставляет ноги :lol: Интересно сколько ног у сороконожки твой метод передвинет?? А у змеи сколько? :crazy:
        Цитата --Ins-- @
        Как сделать так, чтобы после конструирования этот статус был сброшен, независимо от того, забудет программист в потомке это сделать явно или не забудет?

        Не устанавливать его в процессе конструирования :-? ?
          Цитата --Ins-- @
          Высказывай их в следующий раз без употребления меня в третьем лице и предписывания мне каких-либо действий. Ясно?

          Без проблем, только ты в следующий раз старайся аргументировать то что ты пишешь, запоминать то что ты пишешь, и читать что пишут остальные ;)
            Цитата D_KEY @
            А чтобы узнать, что там происходит для базового класса, мне куда нужно лезть?


            Тебе ничего знать не нужно :) В том то и дело. Ты просто в своем КОНКРЕТНОМ классе решаешь свою КОНКРЕТНУЮ задачу, в то время как базовый класс тебе обеспечивает решение абстрактной задачи управления состоянием документа. А вот если базовый класс тебе такую функциональность не обеспечивает, тебе и вправду нужно об этом знать и позаботиться о том, чтобы все работало правильно. Причем явно. Не находишь преимущества подхода по разделению задач? ;)

            Добавлено
            Цитата D_KEY @
            Не устанавливать его в процессе конструирования ?


            Логично. Как это будешь делать чтобы не извращаться? Пример - в базовом классе есть private поле Width и public метод SetWidth. В конструкторе потомка ты хочешь Width выставить в определенное значение
              Цитата --Ins-- @
              Перефразируй так: как мне на уровне абстрактного класса документа решить задачу по управлению состоянием Modified полностью?

              :lol: :lol: :lol: Ты точно правильно понимаешь термин Абстрактный ? Зачем в абстрактном класса документа вообще решать какието задачи?? :whistle:
                Цитата --Ins-- @
                Цитата D_KEY @
                А чтобы узнать, что там происходит для базового класса, мне куда нужно лезть?


                Тебе ничего знать не нужно :) В том то и дело. Ты просто в своем КОНКРЕТНОМ классе решаешь свою КОНКРЕТНУЮ задачу, в то время как базовый класс тебе обеспечивает решение абстрактной задачи управления состоянием документа. А вот если базовый класс тебе такую функциональность не обеспечивает, тебе и вправду нужно об этом знать и позаботиться о том, чтобы все работало правильно. Причем явно.

                Так откуда я знаю, что делает базовый класс после конструирования объекта? А вдруг он сбрасывает флаг modified, а я рассчитываю, что он будет установлен? Или наоборот?
                Как мне это узнать? Лезть в исходники? Или искать создателя класса? Что делать?

                Цитата
                Не находишь преимущества подхода по разделению задач? ;)
                Я не вижу тут разделения задач.
                Ты, кстати, так и не сказал, что у меня не так.
                  Цитата --Ins-- @
                  Ты просто в своем КОНКРЕТНОМ классе решаешь свою КОНКРЕТНУЮ задачу, в то время как базовый класс тебе обеспечивает решение абстрактной задачи управления состоянием документа.

                  :lol: :lol: --Ins-- хватит перлы мочить... Как ты себе представляешь решение абстрактной задачи? реши мне то низнаю что??? Пипец это уже жесть
                  Сообщение отредактировано: KILLER -
                    Цитата --Ins-- @
                    Перефразируй так: как мне на уровне абстрактного класса документа решить задачу по управлению состоянием Modified полностью? Как сделать так, чтобы после конструирования этот статус был сброшен, независимо от того, забудет программист в потомке это сделать явно или не забудет? Зачем я должен заставлять его об этом помнить?
                    Отвечу на последний. "Лемма". Откуда предок может знать, какие действия потомка ведут к модификации документа, а какие нет? Ответ: если не спросить самого потомка, то ниоткуда. Вывод: Modified не может быть под контролем только предка. Основной вопрос, ответ. Потомок обязан сообщать предку о факте модификации или его отсутствии.
                      Цитата --Ins-- @
                      Пример - в базовом классе есть private поле Width и public метод SetWidth. В конструкторе потомка ты хочешь Width выставить в определенное значение
                      В лоб - в конструкторе потомка после вызова SetWidth сбросить флаг. Не?
                        Цитата --Ins-- @
                        Цитата D_KEY @
                        Не устанавливать его в процессе конструирования ?


                        Логично. Как это будешь делать чтобы не извращаться? Пример - в базовом классе есть private поле Width и public метод SetWidth. В конструкторе потомка ты хочешь Width выставить в определенное значение

                        Если у предка нет конструктора, в котором я мог бы указать это значение, и его изменение мне доступно только через определенный метод, значит так построена логика базового класса и метод должен отработать полностью, т.е. откатывать часть действий, произведенных в этом методе я не имею права(да и не знаю я, честно говоря, что он там в реализации сделал).
                        Сообщение отредактировано: D_KEY -
                          Цитата KILLER @
                          Ты точно правильно понимаешь термин Абстрактный ? Зачем в абстрактном класса документа вообще решать какието задачи?


                          А ты точно правильно понимаешь? Абстрактный класс - это только в c++ класс со всеми абстрактными методами. У нас (как и везде) это называется интерфейсом или интерфейсным классом. А абстрактный класс в человеческом понимании - это класс, который СОДЕРЖИТ абстрактные методы и решает некую абстрактную задачу. Хотя да, тяжело это вам понять. Я же например могу в своем базовом классе решить задачу скажем сериализации объекта (полностью), в потомке мне для этого ни строчки кода написать не придется. А вот у с++ с этим бооольшие проблемы, насколько я понял :)

                          Добавлено
                          Цитата D_KEY @
                          а я рассчитываю, что он будет установлен?


                          Ты что, во время конструирования спросишь "сохранить изменения в документе?" :D

                          Добавлено
                          Цитата D_KEY @
                          Ты, кстати, так и не сказал, что у меня не так.


                          Я для начала должен код понять. Я задал вопрос, как это обеспечивается? Ответ может упустил, но вроде не вижу

                          Добавлено
                          Цитата KILLER @
                          Как ты себе представляешь решение абстрактной задачи?


                          Элементарно :) Абстрактная задача - сохранение объекта в поток. Мы понятия не имеем, что это за объект, что нужно для него сохранять, но эту задачу вполне можно решить и не зная этих деталей.
                            Подозреваю, что MSWord, к которому тут апеллировали, не имеет никакого флага modified. Задавать вопрос или нет, решается взглядом на стек Undo непосредственно в нужные моменты, а именно при закрытии документа, и проверке того, что признак "сохранено" привязан к вершине. Это - правильная декомпозиция ответственности иерархии за целостность документа. А описанный тут сценарий - это ИМХО секс в гамаке.
                              Кстати, при создании нового документа спрашивать о сохранении надо?
                              Варианты:
                              1) создан пустой документ;
                              2) создан документ, используя шаблон или скрипт генерации документа;
                              Как эту ситуацию может разрулить AfterConstruction?
                              Сообщение отредактировано: trainer -
                                Цитата --Ins-- @
                                А абстрактный класс в человеческом понимании - это класс, который СОДЕРЖИТ абстрактные методы и решает некую абстрактную задачу.

                                :wacko: --Ins--, без обид, почитай что-нибудь из теории OOA&D.

                                Цитата
                                в потомке мне для этого ни строчки кода написать не придется.
                                А если потомок не хочет сериализовываться так, как это описано в базовом классе?

                                Цитата
                                А вот у с++ с этим бооольшие проблемы, насколько я понял :)

                                Нет, просто он сам будет решать, что ему сериализовывать. Показывали уже.

                                Цитата
                                Цитата D_KEY @
                                а я рассчитываю, что он будет установлен?


                                Ты что, во время конструирования спросишь "сохранить изменения в документе?" :D
                                Почему во время-то? Это же происходит уже после конструирования.
                                Откуда ты из базового класса знаешь, что потомки хотят делать?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 73 74 [75] 76 77 ...  494 495


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