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 wrden, neben anderen, die mit ihm verbundene ausfhrbare 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 Meneintrag "™ffnen") oder das Žndern der Einstellungen im entsprechenden Meneintrag 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) fr 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 fr 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:

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 fr verschiedene Applikationen zur Verfgung 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 &os2; 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.