Arta писал(а) 18. Августа 2008 :: 08:31:AndreyM писал(а) 18. Августа 2008 :: 05:57:В "этой схеме" - имеется ввиду подписка?
Если подписка, отвечу: класс-родитель - это основной класс, который делает перехват на открываемую форму. Т.е. кто-то должен ловить события формы. Он один единственный перехватчик формы. И он раздает возникающие события всем подписавшимся и, соответственно, наследнику (но тут уже правила ООП, а не подписки).
Arta, извини, но я, скорее всего, не пойму в чем твой вопрос
Наверное у меня плохо с русским или с преподавательскими способностями
Т.е. тебе не понятно, что я хотел описать в предыдущем посте: "И если ты придумал новое поведение ..."?
Я не имею ввиду подписку. Я говорю про обычное наследование. При этому меня в основном Классе-Родителе-Перехватчике у меня прописаны основные алгоритмы работы с формами. (Например, в ПриНачалеВыбораЗначения определенных видов атрибутов у меня вместо штатных окон идет выбор через Сервис.ВыбратьЗначение).
Но если в документе РасходнаяНакладная мне понадобилось по особенному отслеживать ПриНажатииКлавиатуры, то я создаю наследника Класса-Родителя-Перехватчика и в нем прописываю это событие со своими особенностями. Но при этом в конце вызываю метод родителя.
Абсолютно согласен! По-другому и не сделаешь.
Я не отговариваю тебя от базовый-наследник - если всё
уже построено так (а
раньше сам так делал ), то "нечего огород городить"
А теперь представь, что тебе по особенному нужно отслеживать ПриНажатииКлавиатуры
не только в РасходнаяНакладная, но и Счет, ПриходнаяНакладная
и т.д. все документы - т.е. тебе прийдется переписать все классы-наследники: Документ.РасходнаяНакладная, Документ.Счет и т.д. (или создать новые наследники). Объем работы представляешь?
И наоборот: у тебя есть класс, который обрабатывает события формы и который у тебя включен во все твои классы Документ... То изменяя
только в этом классе (в одном!) работу ПриНажатииКлавиатуры (или добавляя это событие как новое, т.е. раньше ты не обрабатывал его) - у тебя
изменения попадут во все твои классы Документ...Просто о чем я хочу сказать: сейчас я делаю
новую задачу и наткнулся на момент, что добавляя новое поведение в классе-наследнике, приходится много делать ручками (как ты сказал: "
я создаю наследника Класса-Родителя-Перехватчика и в нем прописываю это событие со своими особенностями"). Разрулив данную ситуацию, пришел к выводу, что делая подписку и "подписав" некий класс-обработчик (в начале даже
пустой, т.е. который ничего не делает) - мне
не приходится добавлять/создавать новые наследники на базовый класс-перехватчик, а просто добавлять события или изменять их поведение в этом классе-обработчике (который был поначалу пустым). Все изменения
сразу попадают во все обработчики формы.
Так понятно написал?