Om in staat te zijn deze gemeenschappelijke en afwijkende karakteristieken beter af te handelen, gebruikt de WPS "classes". Deze term is gekozen van uit 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 (DLLs).
B.v., 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.
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 ‚‚n van de class "WPFolder", een gegevensbestand of een "WPDataFie" 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 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 ÀÄÄ WPTransientU ziet dat de classes afgeleiden zijn van
WPObject, die daarom de
"root class" wordt genoemd van alle WPS classes.
Dit implementeert 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 hebben. Objecten van deze class
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.
WPAbstract is de algemene ouder class voor de zogenoemde
"abstacte" objecten d.w.z. die objecten die niet werkelijk op de schijf aanwezig zijn,
maar die alleen hun gegevens opslaan in OS2.INI. 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 DIR invoert op de opdrachtregel
WPFileSystem de algemene super-class is voor
objecten die fysiek aanwezig zijn in een bestandssysteem van een schijf. Er zijn twee subtypes:
mappen (WPFolder class) en gegevens bestanden (WPDataFile).
Omgekeerd, zijn er verschillende sub-classes van WPDataFile, zoals WPIcon
voor pictogram bestanden en WPProgramFile voor programma bestanden (uitvoerbare
bestanden, meestal met de .EXE toevoeging.
Alle gegevens bestanden waarvoor geen specifieke sub-classes meer bestaan zijn afgeleiden
van WPDataFile.
WPTransient 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.
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
het 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 overerfd en bestaan nog steeds in de
mappen in uw systeem.
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 het &xwp; zijn "WPS Class List" object opent,
worden alle classes die op uw systeem zijn geinstalleerd 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
(dat is: een voorbeeld) van veel classes op uw werkplek.
Merk a.u.b. op dat u erg voorzichtig moet zijn met het manipuleren van de WPS classlijst.
Door de verkeerde wijzingen te maken, kutn u uw systeem instabiel maken!.