Bitte lesen Sie zuerst die Seite "WPS Klassenliste" im Einführungsteil dieses Dokuments, wenn Sie noch gar keine Ahnung von WPS Klassen haben.

Im allgemeinen, in der objekt-orientierten Programmierung, ist eine Klasse eine abstrakte Definition von (1.) Daten-Typen und (2.) Aktionen, die auf diese Daten angewendet werden können. Die letzteren sind auch als Objekt-Methoden bekannt.

Während Klassen den Objekt-Typ nur auf eine abstrakte Art beschreiben, werden die Objekte, die wirklich in einem Programm existieren, Instanzen einer bestimmten Klasse genannt.

Nehmen wir beispielsweise ein WPS Programm-Objekt: Jedes Programm ist eine Instanz der Klasse WPProgram, die von der WPS definiert wurde. Die (1.) Daten des Programm-Objekts würden, neben anderen, die mit ihm verbundene ausführbare Datei sein (z.B. "CMD.EXE"), während (2.) Methoden (die auf diese Daten angewendet werden könnten) das Starten des Programms (durch Doppelklick oder den Menüpunkt "Öffnen") oder das Ändern der Einstellungen im entsprechenden Menüpunkt wären. Obwohl man die Methoden nicht "sehen" kann, werden sie trotzdem intern immer verwendet, wenn die WPS irgendetwas tut. Wenn Sie Erfahrung mit dem Begriff haben, kann man Methoden mehr oder weniger als "Application Programmer's Interface" (API, auf deutsch etwa: Programmentwicklerschnittstelle) für ein Objekt beschreiben. Falls Sie in REXX programmieren: Jedes Mal, wenn Sie eines dieser Objekt-Einstellungs-Strings verwenden, um die Daten eines Objektes zu verändern, wenden Sie eine Methode auf ein Objekt an.

Da Methoden für jede Klasse einzeln definiert werden, hängt die Anzahl der Methoden, die auf ein Objekt angewendet werden können, von der Klasse des Objekts ab. Ich habe sie nicht gezählt, aber schon WPObject, die fundamentalste WPS-Klasse, definiert mehr als 100 Methoden.

Was die objekt-orientierte Programmierung so flexibel (und populär) macht, ist die Möglichkeit der Definition von Verwandschaften zwischen Objekten. Um dies zu verstehen, sind folgende zwei Konzepte hilfreich:

Für Details über Klassen-Ersetzungen siehe auch die Seite "WPS Klassen" im Einführungsteil.

Während die Konzepte von Vererbung und Veränderlichkeit Teil jeder objekt-orientierten Programmierumgebung (und also auch jeder objekt-orientierten Sprache, wie z.B. C++) sind, ist es der Workplace Shell sogar möglich, ihre Vorteile für verschiedene Applikationen zur Verfügung zu stellen. Die WPS besteht aus vielen DLLs, die zum Teil unabhängig voneinander sind, und auch Nicht-IBM-Programmierer können die WPS mit diesen Möglichkeiten erweitern, ohne den Quellcode der WPS zu besitzen. Mit "normalen" objekt-orientierten Sprachen wäre dies nicht möglich.

Dieses System funktioniert nur, weil die WPS IBMs eigenes System Object Model (SOM) benutzt, ein komplexes System, das objekt-orientierte Programmierschnittstellen sogar zwischen verschiedenen Codemodulen und sprachenunabhängig bietet. SOM ist so mächtig, da Klassen zur Laufzeit anstatt zur Kompilierzeit instantiiert und aufrechterhalten werden.

Hier kommt übrigens die WPS-Klassenliste ins Spiel: Wenn die WPS hochgefahren wird, erzeugt sie alle Klassen (die, in SOM, auch Objekte sind, aber das ist eine sehr komplexe Angelegenheit) und richtet die Verwandtschaften erst zu diesem Zeitpunkt ein. Nur deswegen ist es möglich, Klassen ohne IBM, die die Orginale erschaffen hat, zu modifizieren.

Meiner Meinung nach ist dies immer noch etwas, das OS/2 in der heutigen Computer-Welt einzigartig macht. Mit der Zeit sind alle anderen Vorteile als Alleinstellungsmerkmale verschwunden, wie z.B. das verläßliche Multitasking (Linux ist darin auch wirklich gut), aber die Benutzerschnittstelle wurde bisher noch von keinem anderen Betriebssystem, das ich kenne, erreicht. Besonders nicht von Windows 95.