вызовы методов) могут быть образованы
Дуги данной ГМП ( вызовы методов) могут быть образованы двумя способами:
- Прямым вызовом одного метода из кода другого, в случае, если вызываемый метод виден (не закрыт для доступа средствами языка программирования) из класса, содержащего вызывающий метод, присвоим такой конструкции название Р-путь (P-path, Procedure path, процедурный путь).
- Обработкой сообщения, когда явного вызова метода нет, но в результате работы "вызывающего" метода порождается сообщение, которое должно быть обработано "вызываемым" методом.
Для второго случая "вызываемый" метод может породить другое сообщение, что приводит к возникновению цепочки исполнения последовательности методов, связанных сообщениями. Подобная цепочка носит название ММ-путь (MM-path, Metod/Message path, путь метод/сообщение) [23]. ММ-путь заканчивается, когда достигается метод, который при отработке не вырабатывает новых сообщений (т. е. вырабатывает "сообщение покоя").
Пример ММ-путей приведен в примере 5.4. Данная конструкция отражает событийно управляемую природу объектно-ориентированного программирования и может быть взята в качестве основы для построения графовой модели класса или объектно-ориентированной программы в целом. В примере 5.4 можно выделить четыре ММ-пути (1-4) и один P-путь (5):
- msg a метод 3 msg 3 метод 4 msg d
- msg b метод 1 msg 1 метод 4 msg d
- msg b метод 1 msg 2 метод 5
- msg c метод 2
- call метод 5
Здесь класс изображен как объединенное множество методов.
Введем следующие обозначения:
Kmsg- число методов класса, обрабатывающих различные сообщения;
Kem- число методов класса, которые не закрыты от прямого вызова из других классов программы.
Рис. 6.1. Пример MM-путей и P-путей в графовой модели класса
Если рассматривать класс как программу P, то можно выделить следующие отличия от программы, построенной по процедурному принципу:
- Значение Kext (число точек входа, которые могут быть вызваны извне) определяется как сумма методов - обработчиков сообщений Kmsg (например, в MS Visual C++ обозначаются зарезервированным словом afx_msg и используются для работы с картой сообщений класса) и тех методов, которые могут быть вызваны из других классов программы Kem.
Содержание Назад Вперед