Motif расширяет множество классов объектов, предоставляемое Xt. В частности, Motif поддерживает достаточно большой набор классов, позволяющих создавать меню, скролл - бары, "нажимаемые" кнопки, редактирующие элементы и т.д.
Кроме этого, Motif предоставляет специальный класс объектов, которые называются gadget. Они также могут использоваться для создания интерфейсных элементов, но обладают той особенностью, что не имеют собственных окон. Для рисования, gadget пользуются окном своего "родителя".
Каждый класс widget имеет достаточно широкий набор как наследуемых, так и дополнительных, специфичных для него ресурсов. Они позволяют управлять такими важными характеристиками объектов, как: цвет фона, местоположение на экране, шрифт выводимого текста и т.д.
Некоторые из классов Motif не используются для создания экземпляров widget (такие классы в терминологии объектно-ориентированного программирования называются "абстрактными"). Они содержат в себе самые общие атрибуты и методы, необходимые для функционирования различных типов widget.
Иерархия классов объектов Motif и Xt показана на рисунке 4.1.(классы Xt показаны в темных прямоугольниках).
Рис. 4.1. Иерархия классов объектов Xt и Motif.
Заметим, что упомянутый ранее специальный класс объектов - XmGadget является подклассом класса RectObj. Последний, в свою очередь, есть абстрактный класс, инкапсулирующий в себе базовые механизмы управления геометрическими размерами объектов. Класс XmGadget объединяет несколько подклассов, о которых более подробно рассказано в 4.2.5.
Motif имеет два основных подкласса объектов: XmPrimitive и XmManager. Оба они являются абстрактными. Первый из них наследуется от класса Core и используется как базовый для классов объектов, не "владеющих" другими объектами. Примерами являются "нажимаемые" кнопки, списки и т. д. Класс XmManager наследует свои характеристики от класса Constraint и применяется для создания классов объектов, которые могут иметь и управлять "дочерними" объектами.
Ниже будет кратко описан каждый класс в иерархии Motif. При этом указывается файл-заголовок, соответствующий классу, имя класса, указатель на данные класса, процедура, применяемая для создания экземпляров класса. Приводятся наиболее часто используемые ресурсы. Причем при описании каждого класса перечисляются лишь специфические для него характеристики. Наследуемые параметры опускаются. Изложение сопровождается примерами, иллюстрирующими некоторые возможности, предоставляемые объектами классов.