2.5 Breve introducción al Browser del sistema

Smalltalk organiza los comportamientos de las instancias utilizando clases. Una clase es un objeto que contiene un conjunto de métodos que se ejecutan cuando una de sus instancias recibe un mensaje que es el nombre de uno de estos métodos.

El Browser del sistema, o simplemente el Browser, es una herramienta que controla todas las clases de Cuis-Smalltalk. Es una herramienta para explorar las clases (tanto del sistema como de usuario) y para escribir nuevas clases y métodos.

Para acceder a la herramienta ...menú World → Open...Browser...

ch02-browserDetailed

Figura 2.1: El Browser del sistema

En la parte superior izquierda se encuentran las categorías de clases, grupos de clases que comparten el mismo tema. Una categoría también se puede utilizar para crear un paquete (Package), que es un elemento organizativo para guardar código en un sistema de archivos. En la Figura 2.1, la categoría de clase seleccionada es Kernel-Numbers, un grupo de clases que ya hemos empezado a utilizar. El término Kernel- indica que forma parte de las categorías fundamentales, pero solo es una convención. Véanse otras categorías como Kernel-Text y Kernel-Chronology, relacionadas con entidades de texto y fecha.

A la derecha se encuentran las clases de la categoría seleccionada. Están bien presentadas en una jerarquía de clases padre-hijo. Cuando se selecciona una clase por primera vez en este panel, su declaración aparece en el panel grande de abajo. La declaración de la clase Number es:

Magnitude subclass: #Number
   instanceVariableNames: ''
   classVariableNames: ''
   poolDictionaries: ''
   category: 'Kernel-Numbers'

Algunos puntos importantes de esta declaración:

Una subclase hereda comportamientos de su superclase padre, por lo que solo necesita describir lo que difiere de su superclase. Una instancia de Number añade métodos (que definen comportamientos) desconocidos para una instancia de Magnitude. Exploraremos esto en detalle a medida que avancemos.

Para conocer el propósito de una clase, es recomendable visitar siempre el comentario de la clase. A menudo, los comentarios también incluyen ejemplos de código para aprender a utilizar el objeto; estos fragmentos de código se pueden seleccionar y ejecutar in situ, tal y como se hace desde un espacio de trabajo. En la Figura 2.1, mira el botón comment para leer o editar el «comentario» de la clase seleccionada.

A la derecha del panel de clases se encuentra el panel de categorías de métodos. Una clase puede tener muchos métodos, por lo que agruparlos por categorías ayuda a otros usuarios a orientarse en la búsqueda de métodos relacionados. A modo de referencia, Number tiene más de 100 métodos de instancia implementados en sí mismo14. Al hacer clic en la categoría arithmetic, se accede directamente a los métodos relacionados en el siguiente y último panel de la derecha.

 note Un click derecho en el panel Categoría de Clases proporciona un menú contextual. Puedes seleccionar find class .. o, como indica el menú, utilizar Ctrl-f (Find), para obtener un panel de rellenar y escribir parte de un nombre de clase que buscar. Pruébalo con String.

 CuisLogo ¿Cuántos métodos hay en la categoría de métodos arithmetic de la clase CharacterSequence?

Ejercicio 2.3: Recuento de métodos

En el Browser, una vez seleccionado un método (como en Figura 2.1, método abs), la parte inferior muestra su código fuente, listo para ser explorado o editado. A menudo, encontrará un pequeño comentario justo después del nombre del método, entre comillas dobles.

Todo objeto conoce su propia clase y puede responder con ella al mensaje #class.

Truco. En el Workspace, hacer Ctrl-b (Browse) sobre el nombre de una clase abrirá un Browser con la clase nombrada:


Notas al pie

(14)

Si tenemos en cuenta a sus padres, el recuento combinado del método supera los 300.