De Workplace Shell (WPS) van &os2; wordt meestal omschreven als "object-geori‰nteerd". Deze term suggereert dat - in tegenstelling tot de gebruikers interface van andere besturingssystemen - alles wat de Workplace Shell behandelt het eerst wordt beschouwd als een "object" dit is, b.v., van toepassing op &link_folders;, &link_datafiles;, printers, stationsobjecten enz. Al deze objecten hebben bepaalde karakteristieken gemeen (zoals een &popmenu; en een instellingen notitieblok), maar verschillen van op diverse manieren: bijvoorbeeld, wat u ziet in een &popmenu; is afhankelijk van het geselecteerde object.

Om in staat te zijn deze gemeenschappelijke en afwijkende karakteristieken beter af te handelen, gebruikt de WPS "Classes". Deze term is gekozen vanuit het object geori‰nteerd programmeren; een class is, om zo te zeggen, een abstract concept, of een sjabloon voor een object. Een class is daarom niet zichtbaar op de Werkplek, hij "bestaat" dus eigenlijk niet in dezelfde betekenis als objecten, maar bevat alle informatie over de kenmerken en mogelijkheden van een object en de uitvoerbare code om een object iets te laten doen.

Alle WPS classes bevinden zich in Dynamic Link Libraries (DLL's). Bijvoorbeeld, de meeste van de standaard WPS classes bevinden zich in het grote PMWP.DLL bestand in de \OS2\DLL directory. Alle &xwp; classes bevinden zich in de XFLDR.DLL in de &xwp; installatie directory. \ecs\system\ewps\bin installatie directory.

Nu is ieder object op de Werkplek een zogenoemd "voorbeeld" van een class. De namen van de meeste WPS classes beginnen met "WP", b.v. een printer is een voorbeeld van de "WPPrinter" class, een map is ‚‚n van de "WPFolder" classes, een gegevensbestand een "WPDataFile" class, enz.

De reden voor de kracht en de flexibiliteit van het class concept is dat de verschillende classes van elkaar afstammen. Zo'n afstammende class zal alle kenmerken en capaciteiten erven van zijn bovenliggende (ouder) class. Het is dus mogelijk om verschillende uitvoeringen van de gebruikersinterface abstracter te maken, overeenkomstig het oude principe: "de beste manier om met complexe zaken om te gaan is ze te vereenvoudigen".

De WPS bevat veel classes, die een zeer doordachte overerfelijke hi‰rarchie mogelijk maken. Het volgende uittreksel uit de WPS class lijst maakt de algemene structuur meer duidelijk (waarin de lijnen de relatie voorstellen):

 WPObject
   ÃÄÄ WPAbstract
   ³     ÃÄÄ WPPrinter
   ³     ÃÄÄ WPProgram
   ³     ÀÄÄ WPShadow
   ÃÄÄ WPFileSystem
   ³     ÃÄÄ WPDataFile
   ³     ³      ÃÄÄ WPIcon
   ³     ³      ÀÄÄ WPProgramFile
   ³     ÀÄÄ WPFolder
   ³            ÃÄÄ WPDesktop
   ³            ÀÄÄ WPStartup
   ÀÄÄ WPTransient
U ziet dat de classes afgeleiden zijn van WPObject, dat daarom de "root class" (wortel) wordt genoemd van alle WPS classes. Deze bevat alle kenmerken die gelden voor alle Werkplek objecten: zoals eerder aangegeven, b.v. &popmenu;s en instellingen notitieblokken. Echter, WPObject is te abstract om er voorbeelden van te hebben: deze class werd alleen ge‹mplementeerd om andere afgeleide classes te maken. Objecten van deze class gemaakt zullen niet functioneren.

WPObject heeft slechts drie afgeleide classes. Al deze classes zijn - net als WPObject - alleen bedoeld om een abstracte ouder classes te vormen, waarvan direct geen objecten zullen bestaan.

  1. WPAbstract is de algemene ouder class voor de zogenoemde "abstacte" objecten d.w.z. die objecten die niet werkelijk op het station aanwezig zijn, maar die alleen hun gegevens opslaan in het OS2.INI bestand. De meest bekende voorbeelden hiervan zijn de classes WPPrinter voor printer objecten, WPProgram voor programma objecten, en WPShadow voor reflectie objecten. Al deze objecten kunnen in mappen voorkomen maar zijn b.v. niet zichtbaar als u een DIR invoert op de opdrachtregel.

  2. Daar tegenover staat dat, WPFileSystem de algemene super-class is voor objecten die fysiek, in een bestandssysteem van een station, aanwezig zijn. Er zijn twee subtypen: mappen de (WPFolder class) en gegevensbestanden de (WPDataFile class). Omgekeerd, zijn er verschillende sub-classes van WPDataFile, zoals WPIcon voor pictogram bestanden en WPProgramFile voor programmabestanden (uitvoerbare bestanden, meestal met de .EXE toevoeging. Alle gegevensbestanden waarvoor geen specifieke sub-classes meer bestaan zijn afgeleiden van WPDataFile.

  3. Als laatste, WPTransient deze wordt gebruikt door de WPS objecten die hun gegevens helemaal niet behoeven op te slaan, maar alleen tijdelijk bestaan om iets voor te stellen. Voorbeelden hiervan zijn afdrukopdrachten in een printer object en alle apparaten in "Apparatuurbeheer".
De WPS biedt ook een bijzonder mechanisme aan, class vervanging genoemd. Deze mogelijkheid wordt intensief door &xwp; gebruikt om al zijn mogelijkheden vast te maken in de WPS door een aantal standaard WPS classes te vervangen. B.v., de XFolder class zelf vevangt de WPFolder class om al de nieuwe map mogelijkheden te implementeren.

Zo'n vervangingsclass moet altijd een afstamming zijn van de class die hij gaat vervangen; "vervanging" van de class betekent dan dat de WPS altijd de vervangende class zal gebruiken wanneer normaler wijze de originele class zou worden gebruikt. Met als resultaat, dat. als &xwp; is ge‹nstalleerd, alle mappen in uw systeem niet langer voorbeelden zijn van WPFolder, maar van XFolder. Maar omdat XFolder een afstamming is van WPFolder, worden alle standaard map karakteristieken overge‰rfd en zijn nog steeds in de mappen in uw systeem aanwezig.

Het gebruik van class vervangingen maakt het programmeurs mogelijk om nieuwe kenmerken voor een class te implementeren zonder in detail te moeten weten hoe een bepaalde class intern werkt. Dit is een uitstekend en krachtig concept, dat niet bekend is in andere besturingssystemen.

Als u de "WPS Class lijst" van het &xwp; object opent, worden alle classes die op uw systeem zijn ge‹nstalleerd getoond. Gewoonlijk zijn dit meer dan 100 classes, die in een boom-structuur zullen verschijnen. Door &popmenu;'s, te gebruiken kunt u hier classes aanmelden en vervangen en ook afmelden en class vervangingen ongedaan maken. Ook kunt u proberen een object te maken (dit is: een voorbeeld) van veel classes op uw werkplek.

Let er a.u.b. op dat u erg voorzichtig moet zijn met het manipuleren van de WPS classlijst. Door de verkeerde wijzingen te maken, kunt u uw systeem instabiel maken!.