In generale, nella programmazione orientata agli oggetti, una classe Š una definizione astratta dei (1.) tipi di dati e delle (2.) azioni che su quei dati possono essere eseguite. Queste ultime sono comunemente definite come i metodi relativi all'oggetto.

Mentre le classi descrivono i vari tipi di oggetti solo a livello astratto, gli oggetti realmente esistenti in un programma sono chiamati istanze di una data classe.

Prendiamo per esempio un oggetto programma WPS: ogni oggetto programma Š una istanza della classe WPProgram, definita attraverso la WPS. I (1.) dati propri dell'oggetto programma sono, tra gli altri, l'eseguibile ad esso associato (per es. "CMD.EXE"), mentre i (2.) metodi (che possono essere eseguiti su questi dati) sono l'avvio dell'eseguibile (cliccando su di esso due volte o scegliendo "Apri" dal menu contestuale) o la modifica dell'eseguibile nel blocco appunti impostazioni. Anche se i metodi non sono "visibili" attraverso l'interfaccia utente, essi sono utilizzati continuamente, ogni volta che si fa qualcosa con la WPS. Volendoli descrivere con un altro termine, che forse Š pi— familiare, i metodi si possono pi— o meno considerare come l'Interfaccia Programmatore Applicazione (API) verso l'oggetto. Per fare un altro esempio, relativo alla programmazione REXX: ogni volta che si usa uno degli oggetti stringa impostazione per modificare i dati di un oggetto, si sta richiamando un certo metodo per usarlo sull'oggetto.

Dato che sono definiti metodi specifici per ogni classe, i metodi che si possono richiamare su di un certo oggetto dipendono dalla sua classe di appartenenza. Non li ho mai contati tutti, ma per la sola classe WPObject, la pi— elementare delle classi WPS, sono definiti pi— di 100 metodi.

Quel che rende cosŤ flessibile (e popolare) la programmazione orientata agli oggetti Š il fatto che si possono definire relazioni tra le classi. Per comprendere questo aspetto Š importante chiarire i seguenti due concetti:

Mentre ereditariet… e polimorfismo sono caratteristiche proprie di ogni ambiente di programmazione orientato agli oggetti (come pure dei linguaggi orientati agli oggetti, come il C++), la Workplace Shell estende i suoi vantaggi fino a toccare le altre applicazioni La WPS Š fatta di numerose DLL che sono in certa misura indipendenti le une dalle altre: un programmatore esterno ad IBM pu• sfruttare questo vantaggio per estendere le capacit… della WPS senza neanche bisogno di conoscere il codice sorgente WPS, il che non Š possibile con i "normali" linguaggi orientati agli oggetti.

Questo Š possibile perch‚ la WPS utilizza il System Object Model (SOM) di IBM, un complesso sistema che fornisce interfacce per la programmazione "object-oriented" anche tra moduli di codice differenti, persino indipendentemente dal linguaggio di programmazione. Il SOM Š tanto potente perch‚ le classi sono rese disponibili e mantenute a livello di esecuzione e non di compilazione.

E' cosŤ, per inciso, che viene creato l'elenco delle classi WPS: all'avvio della Scrivania vengono generate tutte le classi (che, nel SOM, sono anch'esse degli oggetti, ma questa Š un'altra questione...) e solo dopo di ci• si stabiliscono le relazioni che le legano tra loro. In questa maniera Š possibile realizzare modifiche senza bisogno dell'intervento di IBM, autrice delle classi originali.

Aggiungo ora un'opinione personale: tutto questo rende tuttora &os2; un unicum nel mondo dei computer. Mentre altre delle sue prerogative, come ad es. l'efficiente multitasking, non sono pi— sua esclusiva (anche Linux, per restare nell'esempio, ha un buon multitasking), l'interfaccia utente di &os2; Š ancora insuperata da ogni altro sistema operativo di mia conoscenza, Windows 9x in particolare.