OberonCore
https://forum.oberoncore.ru/

Базовый Object с HandleMsg
https://forum.oberoncore.ru/viewtopic.php?f=23&t=2379
Страница 1 из 1

Автор:  Илья Ермаков [ Суббота, 20 Февраль, 2010 21:22 ]
Заголовок сообщения:  Базовый Object с HandleMsg

Ещё прихожу к выводу о целесообразности наличия в Framework-е самого базового типа Object с процедурой HandleMsg. Для расширяемости на все случаи жизни.

Мы на определённом этапе в одном каркасе ввели такой тип, понадобился - и потом себя оправдывает (какие-то общесистемные события через него проходят, и т.п.; любая расширяемость без ломания интерфейсов).

В другой задаче тоже возникает такой тип.

Так что стоит, видимо.

Автор:  Info21 [ Суббота, 20 Февраль, 2010 22:47 ]
Заголовок сообщения:  Re: Предложение по расширению каркаса

Илья Ермаков писал(а):
Ещё прихожу к выводу о целесообразности наличия в Framework-е самого базового типа Object с процедурой HandleMsg. Для расширяемости на все случаи жизни.

Я бы не стал торопиться, если "на все случаи жизни".

Автор:  Илья Ермаков [ Суббота, 20 Февраль, 2010 23:01 ]
Заголовок сообщения:  Re: Предложение по расширению каркаса

Вообще, это для решения той проблемы, что обязательно рано или поздно возникают какие-то запросы (события), которые "перпендикулярны" введённым интерфейсам.

(Например, выделение объекту "кванта времени" на его нужды).
Сообщения тут - то, что "доктор прописал".

Автор:  Info21 [ Суббота, 20 Февраль, 2010 23:29 ]
Заголовок сообщения:  Re: Предложение по расширению каркаса

Это, конечно, постоянно возникающая штука. Но я бы не спешил.

Разве есть сообщение, которое нужно разослать ВСЕМ объектам в памяти?

Эту темку надо бы в отдельную веточку, что ли.

Автор:  Илья Ермаков [ Суббота, 20 Февраль, 2010 23:31 ]
Заголовок сообщения:  Re: Предложение по расширению каркаса

Да нет, речь ни в коем случае не о какой-то общей шине. Вообще не о механизме, а просто о сигнатуре.

О базовом методе. Который бы обязательно и сразу у всех был.
Берём за самый базовый тип наш Object - и у всех объектов будет HandleMsg. А когда "гром грянет" - вот он, есть. И не придётся голову ломать, на каком частном уровне его вводить, ломая интерфейсы.

Автор:  Александр Ильин [ Воскресенье, 21 Февраль, 2010 00:04 ]
Заголовок сообщения:  Re: Базовый Object с HandleMsg

Может быть, ввести в ANYREC? : )

Автор:  Илья Ермаков [ Воскресенье, 21 Февраль, 2010 00:29 ]
Заголовок сообщения:  Re: Базовый Object с HandleMsg

Вообще-то, чисто теоретизируя на будущее... Там ему могло быть место. Как и FINALIZE.
HANDLE.
И можно оператор типа HANDLE(obj, msg). А obj.HANDLE - implement-only. (чтоб развязочку между операцией посылки сообщения и самим обработчиком иметь).

Хотя... Нюансы могут быть, так что лучше не в язык.

Автор:  Иван Горячев [ Воскресенье, 21 Февраль, 2010 04:39 ]
Заголовок сообщения:  Re: Базовый Object с HandleMsg

В случае ББ - только в язык. Потому что иначе весь каркас менять придётся. А тут уж простор. Можно и так:
PROCEDURE (o : obj) HandleMsg1 (VAR msg : MessageType), NEW, HANDLER;
PROCEDURE (o : obj) HandleMsg2 (VAR msg : MessageType2), NEW, HANDLER;
тогда процедуру HANDLE можно будет вообще жёстко заоптимизировать - благо "compiler magic"

Автор:  Info21 [ Воскресенье, 21 Февраль, 2010 11:25 ]
Заголовок сообщения:  Re: Базовый Object с HandleMsg

Иван Горячев писал(а):
В случае ББ - только в язык. Потому что иначе весь каркас менять придётся. А тут уж простор. Можно и так:
PROCEDURE (o : obj) HandleMsg1 (VAR msg : MessageType), NEW, HANDLER;
PROCEDURE (o : obj) HandleMsg2 (VAR msg : MessageType2), NEW, HANDLER;
тогда процедуру HANDLE можно будет вообще жёстко заоптимизировать - благо "compiler magic"
А что там оптимизировать?

Автор:  Иван Горячев [ Воскресенье, 21 Февраль, 2010 11:48 ]
Заголовок сообщения:  Re: Базовый Object с HandleMsg

точно не скажу, естественно, но пару-тройку-десяток команд по сравнению с WITH выиграть наверняка можно. А в стандартном обработчике сообщений это должно быть заметно.

Автор:  Info21 [ Воскресенье, 21 Февраль, 2010 14:59 ]
Заголовок сообщения:  Re: Базовый Object с HandleMsg

Се, соображение:

пока никакой конкретной функциональности, привязанной к этому Object'у, каркас не предоставляет, его добавление не только совершенно бессмысленно, но и вредно по определению.

Автор:  Trurl [ Понедельник, 22 Февраль, 2010 17:26 ]
Заголовок сообщения:  Re: Базовый Object с HandleMsg

Илья Ермаков писал(а):
Ещё прихожу к выводу о целесообразности наличия в Framework-е самого базового типа Object с процедурой HandleMsg.


Что-то вроде Objects.Object из Oberon System?

Автор:  Илья Ермаков [ Понедельник, 22 Февраль, 2010 17:39 ]
Заголовок сообщения:  Re: Базовый Object с HandleMsg

Не могу судить; слабо знаком с класс. Оберонами.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/