Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 71 72 [73] 74 75 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#1081
,
|
|
|
|
Не знаю, если ты напишешь что тут зашифровано - тогда и скажу Добавлено Тебе что-то приснилась? Не пугай меня своими фантазиями, я не из пугливых. И когда у меня базовый класс фигур рисовал круг, увы, не припомню. Может ссылчку приведешь? Подожду прежде чем влепить тебе минус |
|
Сообщ.
#1082
,
|
|
|
|
Цитата --Ins-- @ Не знаю, если ты напишешь что тут зашифровано - тогда и скажу В конструкторе класса, параметр m_modify выставляется в ложь, затем просто создается пустая страница, все pContext - это как бы класс - который создает страницу и отображает ее тебе... |
|
Сообщ.
#1083
,
|
|
|
|
Цитата --Ins-- @ Что то я не понял, как тут может помочь афтерконструктион. Ты ведь не будешь на каждый по особенному настроенный документ отдельный класс писать? Это решается передачей стартового окружения в конструктор. Если ты имеешь ввиду систему документ/вид, то документ в конструкторе и не должен никому ничего сообщать об изменениях. Собственно на этапе конструирования и сообщать то некому. Допустим:А я думал что это понятно даже киллерам. Создай документ Word. Он после создания не помечен как изменненный. Поменяй параметры страницы на альбомную - он пометится как измененный. В то же время если ты бы с самого начала создал альбомный документ - он бы измененным не был. Я хочу в программе то же самое. Что бы я не задал в конструкторе, изменения параметров не должно менять статус документа. ![]() ![]() word::word_doc doc(word::album); //и кому сообщать? word_view view1(doc); word_view view2(doc); word_view view3(doc);//тут уже и происходит первая отрисовка. |
|
Сообщ.
#1084
,
|
|
|
|
Цитата --Ins-- @ Тебе что-то приснилась? Не пугай меня своими фантазиями, я не из пугливых. И когда у меня базовый класс фигур рисовал круг, увы, не припомню. Может ссылчку приведешь? Память у тебя короткая однако Я ведь найду, и покажу тебе твои же фантазии... |
|
Сообщ.
#1085
,
|
|
|
|
Цитата KILLER @ В конструкторе класса, параметр m_modify выставляется в ложь Перед созданием пустой страницы? Добавлено Цитата KILLER @ Я ведь найду, и покажу тебе твои же фантазии... Я буду ждать |
|
Сообщ.
#1086
,
|
|
|
|
Цитата --Ins-- @ Эти свойства в сеттерах изменяют статус Modified (ну мало ли, в рантайм юзер изменит размер документа, нужно пометить документ как измененный). И ахтунг! Эти же свойства (а может и некоторые другие, а может потомок еще и свои введет) устанавливаются в конструкторе. Как бы так извратиться, чтобы после выполнения конструктора Modified был бы сброшен в false? Прикинь! Конструктор будет работать непосредственно с полями, не используя свойства с его геттерами и сеттерами и никаких проблем с Modified не возникнет. |
|
Сообщ.
#1087
,
|
|
|
|
Цитата --Ins-- @ Перед созданием пустой страницы? Да! Потому как pContext вообще нифига не знает что такое m_modify, он умеет только создавать страницу и рендерить ее для тебя, все |
|
Сообщ.
#1088
,
|
|
|
|
Цитата --Ins-- @ Странно, мне кажется это его дело, считать себя измененным или нет... Цитата А тебе не кажется что это должен решить предок? Зачем потомку что-то специально предпринимать, если предок в состоянии об этом позаботится? Блин, он в состоянии и винт отформатировать. Ты можешь обосновать, зачем это решать предку, если он просто не в состоянии принять подобное решение, ибо ничегошеньки не знает о логике работы потомка? |
|
Сообщ.
#1089
,
|
|
|
|
Цитата Повстанець @ ы ведь не будешь на каждый по особенному настроенный документ отдельный класс писать? Нет, я буду писать свой класс на каждый тип документа. Тип документа определяется не параметрами, а задачей, которую он решает. Соответственно у каждого типа набор параметров может быть свой. Но некоторое общее поведение вынесено в базовый класс Цитата Повстанець @ Если ты имеешь ввиду систему документ/вид, то документ в конструкторе и не должен никому ничего сообщать об изменениях. Нет, я имею в виду установку параметров в конструкторе, которая (установка) автоматически дернет изменение флага Modified Цитата Повстанець @ Что то я не понял, как тут может помочь афтерконструктион. Очень просто. Я в предке в методе AfterConstruction напишу Modified := False и могу дергать в конструкторе (своем или потомков) любые настройки параметров, даже если они и зменяют статус Modified. У меня гарантировано по окончанию конструирования Modified будет сброшен |
|
Сообщ.
#1090
,
|
|
|
|
--Ins--, ты мне на это ответишь?
Цитата D_KEY @ Все-равно не совсем понимаю... ![]() ![]() 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; }; Мог опечататься. Что исправить, чтобы было как у тебя? Если интересно, то наследники могут делать так: ![]() ![]() class MyDocument : public Document { //... MyDocument() : m_some_field(...) { } //... private: int m_some_field; }; А если им нужно, чтобы состояние после конструирования изменилось, то так: ![]() ![]() class MyDocument : public Document { //... MyDocument() : m_some_field(0) { SetParam(&m_some_field, ...); } //... private: int m_some_field; }; Что не так-то? |
|
Сообщ.
#1091
,
|
|
|
|
Цитата Мяут-Настоящий @ Конструктор будет работать непосредственно с полями В простейшем случае - да, в более сложном - нет. Так есть лекарство от этого более сложного случая? Ну, к примеру, поле - это приватное поле предка, а для его установки у нас в потомке есть только public или protected сеттер? Ы? Цитата KILLER @ Да! Потому как pContext вообще нифига не знает что такое m_modify, он умеет только создавать страницу и рендерить ее для тебя, все Перечитай задачу. Если не поможет - вернись и повтори Цитата D_KEY @ Блин, он в состоянии и винт отформатировать. Ты можешь обосновать, зачем это решать предку, если он просто не в состоянии принять подобное решение, ибо ничегошеньки не знает о логике работы потомка? Обосновал выше: Цитата --Ins-- @ Поясню. Термин Modified вводится на уровне абстракции предка. Предок и берет на себя все функции управления этим состоянием, а не делегирует эту работу потомкам. Потомок это чисто наследует и использует. У потомка свои задачи, которые на уже его уровне абстракции вводятся, если ему еще и решать часть задач предка - то это точно галимое проектирование Добавлено Цитата D_KEY @ --Ins--, ты мне на это ответишь? Читай ответ повстанцу |
|
Сообщ.
#1092
,
|
|
|
|
Цитата D_KEY @ --Ins--, ты мне на это ответишь? Я уверен, он ничего не ответит, либо скажет что его метод лучше, а почему - все опять начнеца по новой... Он ведь даже не представляет другого себе решения, кроме как половину бизнес логики, с какими то флагами перенести в конструктор абстрактного интерфейса(интересно зачем абстрактному интерфейсу вообще конструктор )... |
|
Сообщ.
#1093
,
|
|
|
|
Цитата --Ins-- @ Извини, но альбомный/неальбомный лист это далеко не разные задачи. Это всего лишь метрика страницы (размеры и поля другие). Едва ли такое изменение заслуживает на отдельный класс.Нет, я буду писать свой класс на каждый тип документа. Тип документа определяется не параметрами, а задачей, которую он решает. Соответственно у каждого типа набор параметров может быть свой. Но некоторое общее поведение вынесено в базовый класс Цитата --Ins-- @ Нет, я имею в виду установку параметров в конструкторе, которая (установка) автоматически дернет изменение флага Modified Цитата --Ins-- @ Если я правильно понял -- Modified это некое свойство, которое дёргает перерисовку видов. Но при создании документа у него нет ни одного вида. Хрен с ним -- пусть дёргает. Очень просто. Я в предке в методе AfterConstruction напишу Modified := False и могу дергать в конструкторе (своем или потомков) любые настройки параметров, даже если они и зменяют статус Modified. У меня гарантировано по окончанию конструирования Modified будет сброшен |
|
Сообщ.
#1094
,
|
|
|
|
Цитата --Ins-- @ Перечитай задачу. Если не поможет - вернись и повтори Это ты ее перечитай, что у меня не так? Она полностью подходит под твое ТЗ, что тебе еще нужно то? |
|
Сообщ.
#1095
,
|
|
|
|
Цитата --Ins-- @ Цитата --Ins-- @ Поясню. Термин Modified вводится на уровне абстракции предка. Предок и берет на себя все функции управления этим состоянием, а не делегирует эту работу потомкам. У меня не так разве? Цитата В чем мое решение не отвечает твоей постановке задачи? Цитата D_KEY @ --Ins--, ты мне на это ответишь? Читай ответ повстанцу |