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