lunes 26 de febrero de 2007

Diseño

Diseño


Funcionalidad Diseño


Diseño


funcionalidad del Clase-nivel

En el nivel de la clase, las variables de la clase manejan almacenaje de datos. Son de uso general almacenar la información del estado, o como los medios de configurar los valores prefijados para los nuevos objetos. Las variables de la clase se fijan típicamente en el cuerpo de una clase, y se pueden reconocer por su prefijo: un doble “en” la muestra (@@).

Primero, incorporar la definición siguiente de la clase en una nueva cáscara de rubíes.

$ de irb
coche de la clase del irb>
@@number_of_cars del irb> = 0
el def del irb> se inicializa
@@number_of_cars del irb> = @@number_of_cars + 1
extremo del irb>
extremo del irb>
nada del =>

La definición de la clase para el coche de la clase arriba tiene un contador interno para el número total de los objetos del coche se han creado que. Con el método especial del caso inicializarte, que se invoca automáticamente un objeto está cada vez instantiated, este contador se incrementa para cada nuevo objeto del coche.

A propósito, hemos utilizado realmente ya un método de la clase. ¿Tú tiene gusto de cómo el snuck de I él adentro allí? El nuevo método es un ejemplo de un método de la clase que las naves con el rubí y estén disponibles para todas las clases -- si son definidas por ti, o formar la parte de la biblioteca estándar de rubíes. (La biblioteca estándar de rubíes es una colección grande de clases que se incluye con cada instalación de rubíes. Las clases facilitan una amplia gama de la funcionalidad común, tal como Web site, cálculos de fecha, operaciones del archivo, y más que tienen acceso.)

Los métodos de encargo de la clase son de uso general crear objetos con las características especiales (tales como un color del defecto para nuestros objetos del coche), o recopilar estadística sobre el uso de la clase.

Ampliando el ejemplo anterior, podríamos utilizar un método de la clase llamado cuenta para volver el valor de la variable de la clase de los @@number_of_cars. Recordar que ésta es una variable que se incrementa para cada nuevo objeto del coche se cree que. Los métodos de la clase se definen idénticamente a los métodos del caso: usar las palabras claves del def y del final. La única diferencia es que los nombres del método de la clase están prefijados con uno mismo. Introducir este código en una nueva cáscara de rubíes:

$ de irb
coche de la clase del irb>
@@number_of_cars del irb> = 0
def self.count del irb>
@@number_of_cars del irb>
extremo del irb>
el def del irb> se inicializa
irb> @@number_of_cars+=1
extremo del irb>
extremo del irb>
nada del =>

Los instantiates siguientes del código que un poco de coche nuevo se opone, después hacen uso nuestro nuevo método de la clase:

kitt del irb> = coche que habla del caballero de Car.new # Michael
=> #<0xba8c>
¡herbie del irb> = Car.new # el insecto famoso del amor de Volkswagen!
=> #<0x8cd20>
irb> batmobile = automóvil liso del ayudante personal de Car.new #
=> #<0x872e4>
irb> Car.count
=> 3

El método nos dice que tres casos de la clase del coche se hayan creado. Observar que no podemos llamar un método de la clase en un objeto (el rubí proporciona realmente una manera de invocar algunos métodos de la clase en un objeto, el usar:: el operador, sino nosotros no se preocupará de ése para ahora. Veremos:: el operador funcionando en el capítulo 4, cerca con barandilla revelado.):

irb> kitt.count
NoMethodError: método indefinido “cuenta” para #

Según lo implicado por el nombre, la clase de la cuenta que el método está disponible solamente para la clase del coche, no para cualquier objeto instantiated de esa clase.

Disimuladamente introduje algo más adentro allí. ¿Lo manchaste? En muchas idiomas, incluyendo PHP y Java, el ++ y -- una utilizan a los operadores para incrementar una variable. El rubí no apoya esta notación; en lugar, al trabajar con el rubí, necesitamos utilizar al operador de +=. Por lo tanto, la notación de la taquigrafía para incrementar nuestro contador en la definición de la clase es:

irb> @@number_of_cars+=1

Este código es idéntico al siguiente:

@@number_of_cars del irb> = @@number de coches + 1

Ambas líneas pueden ser leídas como “my_variable llega a ser igual a my_variable más una.”