Primero, eche un vistazo a la p gina "Clases del WPS" de la secci¢n "Introducci¢n" de este documento, si no tiene a£n un concepto general de lo que son las clases del WPS.

En general, en programaci¢n orientada a objetos, una clase es una definici¢n abstracta de (1.) tipos de datos y (2.) acciones que pueden realizarse sobre dichos datos. Estas £ltimas son com£nmente conocidas como m‚todos de los objetos.

Mientras las clases s¢lo describen un tipo de objeto de una forma abstracta, los objetos que existen en un programa son llamados instancias de una cierta clase.

Sea un objeto de programa del WPS, por ejemplo: cada objeto de programa es una instancia de la clase WWProgram, definida por el WPS. Los (1.) datos del objeto de programa ser¡an, entre otros, el ejecutable asociado con ‚l (p.e. "CMD.EXE"), mientras que sus (2.) m‚todos (lo que se puede hacer con estos datos) ser¡an iniciar el ejecutable (haciendo doble clic sobre ‚l o eligiendo "Abrir" del men£) o cambiar el ejecutable en el cuaderno de propiedades. Mientras que no se "ven" los m‚todos desde el interfaz de usuario, los m‚todos se utilizan internamente todo el tiempo cada vez que el WPS est  haciendo algo. Si est  ud. familiarizado con el t‚rmino, los m‚todos podr¡an describirse vagamente como el/la API (Application Programmer's Interface) de un objeto. Si sabe ud. programar en REXX: cada vez que utiliza ud. una de esas cadenas de configuraci¢n de objeto para modificar los datos de un objeto, en realidad est  llamando a un m‚todo sobre ese objeto.

Como los m‚todos se definene para cada clase, los m‚todos que pueden invocarse sobre un objeto dependen de la clase del objeto. No los he contado, pero ya WPObject, la clase m s b sica del WPS, define m s de 100 m‚todos.

Lo que hace la programaci¢n orientada a objetos tan flexible (y popular) es que pueden definirse relaciones entre clases. Para entender esto, los siguientes conceptos son de cierta ayuda:

Para m s detalles sobre la sustituci¢n de clases, por favor consulte tambi‚n la p gina "clases del WPS" de la secci¢n "Introducci¢n".

Mientras que la herencia y el polimorfismo son conceptos comunes a todos los entornos de programaci¢n orientada a objetos (y de los lenguajes orientados a objetos, como C++), el WorkPlace Shell es incluso capaz de proporcionar sus ventajas entre varias aplicaciones. El WPS consiste en muchas DLLs que son en parte independientes entre s¡, y el programador de fuera de IBM puede extender el WPS utilizando estas funciones sin tan siquiera tener el c¢digo fuente del WPS, lo cual no resulta posible en los lenguajes orientados a objetos "normales".

Esto s¢lo funciona porque el WPS utiliza el System Object Model (SOM) de IBM, un complejo sistema que provee interfaces de programaci¢n orientados a objetos incluso entre diferentes m¢dulos de c¢digo e incluso independientes del lenguaje de programaci¢n. El SOM es tan potente porque las instancias de las clases se crean y mantienen en tiempo de ejecuci¢n en vez de en tiempo de compilaci¢n.

Aqu¡ es, de paso, donde aparece la lista de clases del WPS: cuando el WPS est  arrancando, crea todas las clases (que en SOM, son objetos tambi‚n, pero ‚ste es un tema complejo), y establece las relaciones entre ellas s¢lo en este punto. S¢lo por esto es posible modificar las clases sin IBM, que cre¢ las originales, incluso sin conocerlas bien.

S¢lo como una breve nota personal, esto es a£n algo que hace a OS/2 £nico en el mundo de la inform tica actual. Mientras muchas de sus otras ventajas sobre otros sistemas operativos ya no son tan £nicas, como su altamente fiable multitarea (p.e. Linux es bastante bueno en ello, tambi‚n), el interfaz de usuario no ha sido a£n igualado por ning£n otro sistema operativo que yo conozca. Especialmente no por Windows 95.