Narzędzia wizualne bez obiektów

Po wprowadzeniu na rynek przez Microsoft Corp. oprogramowania architektury COM (Common Object Model), pewne definicje towarzyszące technologii obiektowej uległy pewnemu zaciemnieniu. Chociaż nazwa tego produktu sugeruje co innego, to COM nie jest narzędziem zorientowanym obiektowo. Microsoft wyposażył co prawda COM w mechanizm enkapsulacji (pracujący zresztą w dość ograniczony sposób), jednak programista nie dysponuje żadnymi mechanizmami polimorfizmu czy dziedziczenia.

Nie znaczy to wcale, że jest to zły produkt. Nadaje się on dobrze do tych celów, do których został stworzony, a więc do budowania poszczególnych elementów większego projektu informatycznego. Jednak budowanie pojedynczych elementów oprogramowania to za mało, aby zaprojektować duży system informatyczny. Za pomocą tego narzędzia nie można np. budować aplikacji modelujących działania biznesowe. Tu konieczne jest stosowanie pełnej technologii obiektowej.

Wielu programistów tak przyzwyczajonych do stosowania technologii obiektowej zapomniało już prawie, jak trudno jest się bez niej obejść. Próbowałem ostatnio pomóc jednemu z użytkowników w pisaniu aplikacji przy użyciu Visual Basicu. Chodziło o to, żeby pewne "obiekty" (piszę to słowo w cudzysłowie, gdyż Visual Basic nie operuje na obiektach) zachowywały się w sposób choć trochę obiektowy. I od razu na samym początku zaskoczenie. "Obiekty" Visual Basic nie mogą się między sobą komunikować. Mogą one ustalać wartości zmiennych dla innych obiektów (co jest właściwie zaprzeczeniem idei enkapsulacji), nie mogą już jednak korzystać z procedur (programów) przypisanych tym obiektom.

Specjaliści z firmy Microsoft doradzili mi co następuje: 1. Utwórz niewidoczne przyciski, które zawiadują poszczególnymi komunikatami wysyłanymi do danego obiektu. 2. Zainicjuj operację wysyłania komunikatów do obiektu, przypisując odpowiedniemu przyciskowi logiczny atrybut "true". Procedura obsługująca niewidoczny przycisk interpretuje taką operację podobnie, jak w przypadku kliknięcia myszą na zwykłym przycisku.

Rozwiązanie tego problemu było jednak proste w porównaniu z próbami symulowania operacji typu dziedziczenie. Microsoft zaproponował zastąpić technikę dziedziczenia techniką agregacji. Jednak skutek był fatalny. Technika ta wykonuje dokładnie odwrotną operację - wywołuje do pracy procedurę w złym obiekcie. Widząc tak duże ograniczenia zrezygnowałem z kontynuowania prac nad tym projektem.

Podsumowując: jeśli chcecie Państwo stosować ten produkt do budowy aplikacji, zestawiając i dopasowując poszczególne elementy oprogramowania, "obiektowy" COM nadaje się dobrze do tego celu. Jeśli jednak zamierzacie Państwo korzystać w pełni z zalet technologii obiektowej, radzę skorzystać z narzędzia oferującego wszystkie rozwiązania tego standardu, tj. pracującego zgodnie ze specyfikacją opracowaną przez OMG (Object Management Group).

David A. Taylor jest prezydentem firmy Eterprise Engines Inc. (San Mateo, Calif.) Jest autorem wielu książek na temat technologii obiektowej.


TOP 200