OberonCore
https://forum.oberoncore.ru/

Связь модулей
https://forum.oberoncore.ru/viewtopic.php?f=23&t=135
Страница 1 из 1

Автор:  Ира [ Среда, 22 Март, 2006 16:35 ]
Заголовок сообщения:  Связь модулей

Проблема:
есть 2 модуля - модуль А получает данные, а В их расшифровывает. Модуль В импортирует А.
Необходимо реализовать взаимдействие между ними таким образом, чтобы модуль А после получения новой порции данных сообщал модулю В об их прибытии, а модуль В их потом забирал из А. Но так как В импортирует А, то сообщение из А в В передать не удается. Можно это обойти?

Автор:  Сергей Губанов [ Среда, 22 Март, 2006 17:59 ]
Заголовок сообщения:  Re: Связь модулей

Ну, существует тысяча способов.
Например, пусть модуль B зарегистрирует в модуле A процедуру обратного вызова.
Код:
MODULE A;

  VAR onReceive*: PROCEDURE;

  ...

  (* получили данные *)
  IF onReceive # NIL THEN onReceive() END;

  ...

END A.


Код:
MODULE B;

  IMPORT A;

  ...

  PROCEDURE OnReceive;
  BEGIN ...
  END OnReceive;

  ...
BEGIN
  A.onReceive := OnReceive
END B.


Но лучше использовать ООП: создать один модуль, в котором описать абстрактные типы (объекты которых друг с другом тесно взаимодействуют), в других модулях реализовать эти типы, и, наконец, в последнем (главном) модуле эти объекты создать и "сцепить" друг с другом.

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