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 ÀÄÄ WPTransientWie 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.
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.
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.
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.
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!