Motif, okienka i obiektowość

Nie sposób mówić o Motifie nie napomykając choćby o Xach (The X Window System) wraz z bibliotekami Xlib oraz Xt. Tym bardziej, że architektura Xów jest obiektowa, a aplikacje (klienci) dowiadują się o działaniach użytkownika i innych klientów za pomocą mechanizmu zdarzeń.

Motif to Graficzny Interfejs Użytkownika (GUI), narzędzie, dzieki któremu program może reagować na zachowanie użytkownika i wyświetlać mu efekty swojego działania. Motif udostępnia mechamizmy do komunikacji pomiędzy programem a użytkownikiem.

Interakacja ta odbywa się za pośrednictwem tzw. widgetów, graficznie reprezentowanych obiektów. Tak jak wszystkie porządne obiekty widgety mają atrybuty, metody, klasy i hierarchię dziedziczenia.

Tradycyjnie Xlib, Xt i Motif to biblioteki w języku C, który oficjalnie obiektowości nie wspiera. Mimo to obiektowe podejście do programowania przyświeca architekturze Xów i wspomnianych bibliotek. Wszelkiego rodzaju zalecenia dotyczące programowania aplikacji dla Xów sprowadzają się do typowych obiektowych metod, takich jak na przykład oddzielanie graficznego interfejsu od reszty programu.

Innym ciekawym mechanizmem, który jest bardzo intensywnie używany we wspomnianych bibliotekach jest mechanizm funkcji zwrotnych (callbacków), dzięki którym aplikacje reagują na zdarzenia generowane przez Xy. Callback to metoda, którą obsługa zdarzenia (biblioteka Xt) woła, gdy nadejdzie oczekiwane zdarzenie. Callbacki są powiązane z widgetem, który chce reagować na zdarzenia.

Na koniec krótko opowiem o prawnej sytuacji Motifa (licencja) i jego otwarto-źródłowym klonie, LessTifie. Będzie to okazja do rzucenia okiem jak obiektowość jest fizycznie implementowana w C.