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