2012-06-21 44 views
6

¿Alguien puede explicar cómo funciona la organización de clases en Pharo en diferentes versiones de Pharo?¿Cómo funciona la organización de clases en categorías y paquetes en diferentes versiones de Pharo?

  • Todas las clases son parte de la Smalltalk mundial (siempre han sido, parecen seguir así?)
  • clases pueden tener una categoría, pero eso es solamente una especie de etiqueta? (Siempre ha sido, parece permanecer así? Pero las categorías de alguna manera están asignadas a paquetes veces?)
  • Hay diferentes tipos de paquetes de diferentes versiones de Pharo
    • MCPackages representan Paquetes Monticello
    • packageinfo
    • RPackage (Pharo 1.4)?

Además hay SystemNavigation que de alguna manera ayuda a las clases de navegación y métodos basados ​​en algunas de las construcciones mencionado?

+0

Tal vez alguien podría agregar una etiqueta de Monticello. Lo intenté, pero no tengo los derechos para hacer esto. –

Respuesta

5

Clases

El hecho de que las clases son claves en el Smalltalk mundial es un detalle de implementación. Siempre que haya un solo espacio de nombre global para los nombres de las clases, es probable que la implementación se mantenga igual.

categorías de clase

La categoría de clase es muy parecido a una etiqueta. Una clase solo puede estar en una categoría a la vez. Originalmente, la categoría de clase fue utilizada por el Browser para organizar las clases en el sistema.

Cuando Monticello fue creado, la categoría de clase estaba sobrecargado para indicar también la pertenencia a un paquete Monticello se crearon las clases MCPackage y PackageInfo para gestionar este mapeo.

PackageInfo hace todo el trabajo pesado: encontrar las clases y los métodos sueltos que pertenecen a un paquete.

MCPackage es un envoltorio específico de Monticello para PackageInfo que agrega algún protocolo que no era necesariamente apropiado para el más general PackageInfo.

Paquetes

la sobrecarga de la categoría de clase para ser miembro paquete era un buen truco para facilitar la adopción de Monticello (herramientas de desarrollo existentes no necesitan ser enseñados Monticello), sin embargo, todavía es un truco . Sin mencionar el hecho de que la implementación de PackageInfo no fue muy eficiente.

RPackage fue creado para solucionar los problemas de rendimiento de PackageInfo y para ser utilizado como parte de la próxima generación de herramientas de desarrollo.

Ambas implementaciones de paquete continuarán existiendo hasta que PackageInfo se puedan eliminar.

SystemNavigation

Como dice Frank,

SystemNavigation es una clase que, como su nombre indica, permite una fácil consulta de un número de cosas diferentes: las clases en la imagen, remitentes-de, implementadores-de, información sobre paquetes cargados en la imagen y así sucesivamente.

+0

¿Cuál es la relación entre un "paquete Monticello" y un MCPackage? Por el nombre, supuse que eran uno y el mismo. –

+1

Un paquete Monticello es un archivo con extensión '.mcz'. Un MCPackage es una instancia en la imagen que representa ese paquete. –

+0

Gracias, actualicé mi pregunta en consecuencia. Entonces, ¿cómo se relacionan MCPackage y PackageInfo o MCPackage y RPackage? ¿O simplemente viven lado a lado? –

4

Las clases son, por el momento al menos, las claves en el diccionario Smalltalk.

PackageInfo contiene información sobre una agrupación de clases y extensiones a otros paquetes.

Un paquete Monticello contiene una unidad de código desplegable. Por lo general, uno de estos corresponderá a una instancia PackageInfo. (Si presiona el botón "+ Paquete" en un navegador Monticello, se creará uno de estos, por ejemplo). Un paquete Monticello puede contener scripts de precarga y poscarga, por lo que las dos clases realizan funciones separadas, si están relacionadas.

SystemNavigation es una clase que, como su nombre lo indica, permite consultar varias cosas: las clases en la imagen, los remitentes, los implementadores de, la información sobre los paquetes cargados en la imagen, etc.

Cuestiones relacionadas