La Workplace Shell di &os2; (WPS) deve parte della sua fama al fatto di essere costruita su un modello "object-oriented". Quest'espressione sta a significare che -- diversamente dalle interfacce utente degli altri sistemi operativi -- qualsiasi cosa manipolata attraverso la Workplace Shell viene trattata in primo luogo come un "oggetto": questo vale per i &link_datafiles;, le &link_folders;, le stampanti, i dischi eccetera. Sono tutti oggetti che hanno in comune certe caratteristiche (come i &popmenu;i e i blocchi appunti impostazioni), ma differiscono tra loro per certe altre: il contenuto del &popmenu;e, per esempio, varia a seconda del tipo di oggetto selezionato.

Per poter gestire al meglio tanto le caratteristiche comuni quanto quelle particolari la WPS utilizza le "classi". Si tratta di un termine derivato dalla programmazione orientata ad oggetti; una classe Š, per cos� dire, l'astrazione, o lo "stampo", di un certo tipo di oggetto. Le classi non sono visibili sulla Scrivania, dato che non "esistono" nella stessa maniera degli oggetti; pure, esse contengono tutte le informazioni relative alle propriet… e alle capacit… degli oggetti, nonch‚ il codice eseguibile necessario per far "funzionare" l'oggetto.

Tutte le classi WPS risiedono in librerie a collegamento dinamico (DLL). Per fare un esempio, la maggior parte delle classi di base della WPS sono contenute nel grosso file PMWP.DLL, nell'indirizzario \OS2\DLL. Le classi di &xwp; sono invece immagazzinate in XFLDR.DLL, nella cartella di installazione di &xwp;.

Qualunque oggetto sulla scrivania Š considerato una "istanza" di una certa classe. I nomi delle classi WPS iniziano sempre con "WP": ad esempio, un oggetto stampante Š un'istanza della classe "WPPrinter", una cartella lo Š della classe "WPFolder", un file di dati lo Š di "WPDataFile", e cos� via.

La ragione della potenza e flessibilit… di questo tipo di architettura sta nel fatto che classi differenti possono discendere l'una dall'altra e la classe "figlia" eredita tutte le propriet… e le funzionalit… della classe "madre". E' cos� possibile rendere pi— astratte alcune delle propriet… dell'interfaccia utente, ubbidendo al principio per cui l'astrazione Š il miglior strumento per trattare la complessit….

La WPS contiene dunque numerose classi che sono legate tra loro in una gerarchia complessa. L'esempio seguente, preso dall'elenco classi WPS, permette di rendere pi— chiaramente l'idea della struttura generale (le linee rappresentano una parentela):

 WPObject
   ÃÄÄ WPAbstract
   ³     ÃÄÄ WPPrinter
   ³     ÃÄÄ WPProgram
   ³     ÀÄÄ WPShadow
   ÃÄÄ WPFileSystem
   ³     ÃÄÄ WPDataFile
   ³     ³      ÃÄÄ WPIcon
   ³     ³      ÀÄÄ WPProgramFile
   ³     ÀÄÄ WPFolder
   ³            ÃÄÄ WPDesktop
   ³            ÀÄÄ WPStartup
   ÀÄÄ WPTransient
Come si vede, tutte le classi discendono da WPObject, che Š per questo chiamata "classe radice" per le classi WPS, e serve ad implementare le funzionalit… comuni a tutti gli oggetti della Scrivania: ad es., come si Š detto, i &popmenu;i ed i blocchi appunti impostazioni. Tuttavia, la classe WPObject Š troppo astratta perch‚ possano esisterne "istanze" dirette: essa Š stata concepita solo per derivarne altre classi. Non vi sono dunque oggetti di questa classe.

Da WPObject derivano solo tre classi, ed anch'esse sono -- come WPObject -- solo classi "madri" astratte, dalle quali non sono creabili oggetti.

  1. WPAbstract Š la classe genitrice comune a tutti gli oggetti cosiddetti "astratti", quegli oggetti cioŠ che non esistono in maniera fisicamente indipendente nel file system, ma che sono conservati sotto forma di dati nel file OS2.INI. Esempi comuni sono la classe WPPrinter per gli oggetti stampante, WPProgram per gli oggetti programma, e WPShadow per le copie collegate. Sono tutti oggetti normalmente visibili all'interno delle cartelle WPS, ma che non appaiono se, per es., si digita DIR dalla linea di comando.

  2. Al contrario, WPFileSystem Š la classe genitrice comune per tutti gli oggetti che esistono fisicamente nel file system. Di essa vi sono due sottotipi: le cartelle (classe WPFolder) e i file dati (WPDataFile). Sono poi numerosissime le sottoclassi di WPDataFile, come WPIcon per i file icona e WPProgramFile per i file programma (cioŠ gli eseguibili, contraddistinti generalmente dall'estensione .EXE). Tutti i file dati per cui non vi Š una sottoclasse pi— specifica sono istanze di WPDataFile.

  3. Infine, la WPS utilizza la classe WPTransient per quegli oggetti i cui dati non vengono salvati affatto, dato che sono solo rappresentazioni temporanee di qualcosa d'altro. Un esempio sono i lavori di stampa nell'oggetto stampante e le periferiche che appaiono nello Hardware Manager.
La WPS permette anche la sostituzione delle classi. Tale possibilit… Š sfruttata ampiamente da &xwp;, che rimpiazza diverse classi WPS standard, per collegare le sue funzionalit… aggiuntive alla WPS. Per esempio, la classe WPFolder Š sostituita dalla classe XFolder, che implementa tutte le nuove funzionalit… delle cartelle.

Questa classe sostitutiva Š sempre una discendente della classe che va a rimpiazzare; "sostituire" una classe significa che la WPS utilizzer… la classe sostitutiva (discendente) invece della classe originale che sarebbe stata usata altrimenti. Perci•, se per es. si Š installato &xwp;, tutte le cartelle nel sistema diventano istanze di XFolder anzich‚ di WPFolder. Dato per• che XFolder Š "figlia" di WPFolder, le cartelle nel sistema conservano, oltre alle funzioni introdotte da &xwp;, anche tutte le propriet… abituali delle cartelle standard.

Utilizzare classi sostitutive permette a chi programma di implementare nuove funzioni senza dover conoscere in dettaglio il funzionamento interno di una certa classe. Si tratta di un concetto innovativo e potente, che non ha uguale in nessun altro sistema operativo.

Se si apre l'oggetto "Elenco classi WPS", Š possibile vedere tutte le classi installate nel sistema. Sono generalmente pi— di un centinaio, ordinate in una struttura ad albero. Utilizzando i &popmenu;i Š possibile registrare, rimpiazzare e deregistrare classi, nonch‚ annullare sostituzioni. E' inoltre possibile creare sulla Scrivania oggetti (cioŠ istanze), selezionandone direttamente la classe.

Si presti la massima cautela nel manipolare l'elenco delle classi WPS! Basta una modifica erronea per rendere del tutto inutilizzabile l'intero sistema!