Введение

Workplace Shell (WPS) – объектно-ориентированная оболочка рабочего стола (также называемая рабочей средой), разработанная исследовательской лабораторией IBM в Бока-Ратоне для OS/2 2.0. Она основана на Common User Access и ознаменовала радикальный отход от интерфейса типа «Программный менеджер», который более ранние версии OS/2 разделяли с Windows 3.x, или от ориентированного на приложения WIMP-интерфейса Apple Macintosh. Workplace Shell также использовалась в OS/2 Warp 3 и Warp 4, а также в операционных системах eComStation и ArcaOS, основанных на OS/2. Первоначально IBM планировала поставлять Workplace Shell в составе продукта OfficeVision/2 LAN, но в 1991 году объявила о планах выпустить её как часть OS/2 2.0. Хотя в основном написана на C, по сути Workplace Shell реализована как объектно-ориентированная библиотека классов, основанная на System Object Model (SOM). Классы WPS связаны между собой с помощью языка определения интерфейсов (IDL). SOM и его IDL были разработаны IBM в своей лаборатории в Остине, штат Техас. Классами можно легко управлять, отправляя им простые строки настроек (например, "KEYWORD=VALUE;") как через API C, так и через API Rexx. При реализации нового класса WPS он наследуется от существующего класса в иерархии классов WPS. Для изменения, расширения или удаления определенной функциональности родительского класса разработчику часто требуется переопределить лишь несколько методов родительского класса. Вся остальная функциональность родительского класса может оставаться неизменной, обеспечивая бесшовную интеграцию добавленной или измененной функциональности и, следовательно, согласованность остального пользовательского интерфейса. Полученный объектный класс поставляется в виде DLL. Как только новый объектный класс, реализованный в нем, зарегистрирован в Workplace Shell и создан экземпляр этого класса, он может использоваться пользователем или другими программами как любой другой объект Workplace Shell. Часть архитектуры WPS позволяет разработчику класса Y, расширяющего или модифицирующего класс X, выполнить дополнительный API при установке, который позволит WPS «заменить» класс X классом Y. Это приведет к тому, что даже все существующие экземпляры класса X будут вести себя как экземпляры модифицированного класса Y, то есть почти как ретроактивное наследование. Это позволяет создавать множество полезных сторонних утилит для рабочего стола, которые добавляют или изменяют функциональность существующих объектов без доступа к исходному коду IBM. Если заголовки IDL и классов также публикуются для производных классов, эти классы также могут быть расширены аналогичным образом.