Die Workplace Shell (WPS) von &os2; wird h„ufig als Objekt-orientiert beschrieben. Dieser Begriff besagt, daá - im Gegensatz zu anderen Betriebssystemen - alles auf der Arbeitsoberfl„che zun„chst als "Objekt" betrachtet wird. Dies gilt beispielsweise f�r &link_folders;, &link_datafiles;, Drucker, Laufwerksobjekte und so weiter. All diese Objekte haben bestimmte Gemeinsamkeiten wie &popmenu;s und Einstellungsnotizb�cher, aber auch gewisse Unterschiede: beispielsweise h„ngt der Inhalt eines &popmenu;s von dem ausgew„hlten Objekt ab.

Um diese Gemeinsamkeiten und Unterschiede effizient verwalten zu k”nnen, benutzt die WPS sogenannte Klassen. Dieser Begriff stammt aus der objektorientierten Programmierung. Eine Klasse ist sozusagen ein abstraktes Konzept, oder eine Schablone, f�r ein Objekt. Eine Klasse ist daher auf der Arbeitsoberfl„che nicht sichtbar. Sie "existiert" nicht in demselben Sinne wie Objekte, aber sie enth„lt alle Informationen �ber die Eigenschaften und F„higkeiten eines Objekts und den Programmcode, der ein Objekt �berhaupt f„hig macht, Aktionen auszuf�hren.

Alle WPS-Klassen m�ssen in DLLs implementiert sein. Beispielsweise befinden sich die meisten Standard-WPS-Klassen in der groáen Datei PMWP.DLL im Verzeichnis \OS2\DLL. Alle &xwp;-Klassen befinden sich in XFLDR.DLL im Verzeichnis von &xwp;.

Nun ist jedes Objekt auf der Arbeitsoberfl„che eine sogenannte Instanz einer Klasse. Die Namen der meisten WPS-Klassen beginnen mit "WP": alle Drucker sind z.B. Instanzen der Klasse "WPPrinter", alle Ordner der Klasse "WPFolder", alle Datendateien der Klasse "WPDataFile" usw.

Der Grund f�r die Leistungsf„higkeit und Flexibilit„t des Klassenkonzepts liegt darin, daá Klassen voneinander abgeleitet werden. Eine abgeleitete Klasse erbt alle Eigenschaften und F„higkeiten ihrer Elternklasse. Auf diese Weise ist es m”glich, bestimmte Eigenschaften der Benutzeroberfl„che zu abstrahieren, nach dem alten Grundsatz: das beste Mittel gegen Komplexit„t ist Abstraktion.

Die WPS enth„lt viele Klassen, die eine durchdachte Vererbungshierarchie bilden. Der folgende Auszug aus der WPS-Klassenliste macht dies deutlich (wobei die Linien die Vererbung anzeigen):

 WPObject
   ÃÄÄ WPAbstract
   ³     ÃÄÄ WPPrinter
   ³     ÃÄÄ WPProgram
   ³     ÀÄÄ WPShadow
   ÃÄÄ WPFileSystem
   ³     ÃÄÄ WPDataFile
   ³     ³      ÃÄÄ WPIcon
   ³     ³      ÀÄÄ WPProgramFile
   ³     ÀÄÄ WPFolder
   ³            ÃÄÄ WPDesktop
   ³            ÀÄÄ WPStartup
   ÀÄÄ WPTransient
Wie Sie sehen, sind alle Klassen von WPObject abgeleitet, die daher die "Wurzelklasse" aller WPS-Klassen genannt wird. Diese Klasse bewirkt alle Eigenschaften, die s„mtlichen Objekten der Arbeitsoberfl„che gemeinsam sind: wie bereits erw„hnt, beispielsweise &popmenu;s und Einstellungsnotizb�cher. Jedoch ist die WPObject-Klasse zu abstrakt, um von ihr direkt Instanzen erzeugen zu k”nnen. Diese Klasse wurde aus dem ausschlieálichen Grund entworfen, daá andere Klassen von ihr abgeleitet werden. Objekte dieser Klasse haben keine sinnvolle Funktion.

WPObject hat genau drei abgeleitete Klassen. Wie WPObject sind diese drei abgeleiteten Klassen ebenfalls abstrakte Stammklassen, von denen keine Objekte direkt erzeugt werden k”nnen.

  1. WPAbstract ist die gemeinsame Stammklasse f�r sogenannte "abstrakte" Objekte, d.h. Objekte, die nicht physisch auf einem Speichermedium existieren, sondern ihre Daten in der Datei OS2.INI speichern. Die bekanntesten Beispiele f�r abstrakte Objekte sind die der Klassen WPPrinter f�r Druckerobjekte, WPProgram f�r Programmobjekte und WPShadow f�r Referenzen. Diese Objekte k”nnen alle in Ordnern erscheinen, sind jedoch nicht sichtbar, wenn man an einer Befehlszeile DIR eingibt.

  2. Im Gegensatz dazu ist WPFileSystem die gemeinsame Stammklasse f�r Objekte, die tats„chlich im Dateisystem eines Speichermediums existieren. Hiervon gibt es zwei Unterklassen: Ordner (WPFolder) und Datendateien (WPDataFile). Von WPDataFile gibt es wiederum eine Reihe von abgeleiteten Klassen wie WPIcon f�r Symboldateien und WPProgramFile f�r ausf�hrbare Programmdateien (normalerweise mit der .EXE-Erweiterung). Alle Datendateien, f�r die keine spezielle Unterklasse entworfen wurde, sind Instanzen von WPDataFile selbst.

  3. WPTransient wird schlieálich von der WPS f�r Objekte benutzt, die ihre Daten �berhaupt nicht speichern, sondern nur vor�bergehend erstellt werden, um Daten zu repr„sentieren. Beispiele hierf�r sind die Auftr„ge in einem Druckerobjekt und die Ger„te im Hardware-Manager.
Die WPS bietet zus„tzlich den bemerkenswerten Mechanismus der Klassenersetzungen an. Diese Funktion wird von &xwp; intensiv benutzt, um eine Vielzahl von Erweiterungen in die WPS zu integrieren. So ersetzt beispielsweise die Klasse XFolder die Standardklasse WPFolder, um die ganzen neuen Ordnerfunktionen zu implementieren.

Eine Ersetzungsklasse muá stets von der Klasse, die sie ersetzen soll, abgeleitet sein. Das "Ersetzen" einer Klasse bedeutet dann, daá die WPS stets diese Klasse anstelle der urspr�nglichen Klasse benutzen wird. Alle Ordner des Systems sind also nicht mehr Instanzen der Klasse WPFolder, sondern der Klasse XFolder. Da die Klasse XFolder aber von der Klasse WPFolder abgeleitet ist, erbt sie alle Eigenschaften der Standardordner.

Mit Klassenersetzungen k”nnen Programmierer neue Funktionen in eine Klasse einf�gen, ohne im Detail wissen zu m�ssen, wie eine Klasse intern funktioniert. Dies ist ein auáergew”hnliches und leistungsf„higes Konzept, welches von keinem anderen Betriebssystem angeboten wird.

Wenn Sie das &xwp;-Objekt "WPS-Klassenliste" ”ffnen, werden alle Klassen angezeigt, die derzeit auf dem System installiert sind. šblicherweise sind dies mehr als 100 Klassen, die in einer Strukturanzeige aufgez„hlt werden. Mit &popmenu;s k”nnen Sie Klassen registrieren und ersetzen sowie deregistrieren und Ersetzungen r�ckg„ngig machen. Sie k”nnen auáerdem versuchen, von einer bestimmten Klasse ein Objekt (d.h. eine Instanz) zu erzeugen.

Beachten Sie, daá Sie beim Ver„ndern der WPS-Klassenliste groáe Vorsicht walten lassen sollten. Eine falsche Žnderung kann Ihr System unbenutzbar machen!