Diseño Pagina Web

Just another WordPress.com weblog

Clases y Objetos

Publicado por cool1007 en Febrero 27, 2007

Diseño Pagina Web
Como en cualquier otra lengua de OOP, en rubí, cada objeto pertenece a cierta clase (por ejemplo, PontiacFirebird pudo ser un objeto del coche de la clase). Como vimos en la discusión al principio de este capítulo, una clase puede agrupar objetos de cierta clase, y equipa esos objetos de funcionalidad común. Esta funcionalidad viene bajo la forma de métodos, y en la capacidad del objeto de almacenar la información. Por ejemplo, un objeto de PontiacFirebird pudo necesitar almacenar su kilometraje, como fuerza cualquier otro objeto del coche de la clase.

En rubí, el instantiation de un nuevo objeto que se base en una clase existente es logrado enviando esa clase el nuevo mensaje. El resultado es un nuevo objeto de esa clase. Los siguientes pocas líneas del código demuestran una definición extremadamente básica de la clase en rubí — la tercera línea es donde creamos un caso de la clase que acabamos de definir.

coche de la clase del irb>
extremo del irb>
nada del =>
kitt del irb> = Car.new
=> #

Otro principio de base en OOP es encapsulación. Según este principio, los objetos se deben tratar como entidades independientes, cada cuidado que toma de sus propios datos internos y funcionalidad. Si necesitamos tener acceso a la información de un objeto — por ejemplo, sus variables internas — hacemos uso el interfaz del objeto, que es el subconjunto de los métodos del objeto que se hacen disponibles para otros objetos para llamar.

El rubí provee de objetos funcionalidad en dos niveles — el nivel del objeto, y nivel de la clase — ¡y adhiere al principio de la encapsulación mientras que está en ella! Cavemos más profundo.

funcionalidad del Objeto-nivel

En el nivel del objeto, el almacenaje de datos es manejado por las variables del caso (un nombre que se deriva del proceso del instantiation mencionado arriba). Pensar en variables del caso como envases de almacenaje a que se unan al objeto, pero a cuáles no tienen otros objetos acceso directa.

Para almacenar o para recuperar datos de estas variables, otro objeto debe llamar un método del accessor en el objeto. Un método del accessor tiene la capacidad de fijar (y conseguir) el valor de las variables del caso del objeto.

Miremos cómo las variables del caso y los métodos del accessor se relacionan el uno al otro, y cómo se ponen en ejecución en rubí.

Citar como ejemplo las variables

Las variables del caso están limitadas a un objeto, y contienen los valores para ese objeto solamente.

Revisitando nuestro ejemplo de los coches, los valores del kilometraje para un número de diversos objetos del coche son probables diferenciar, pues cada coche tendrá un diverso kilometraje. Por lo tanto, el kilometraje se lleva a cabo en una variable del caso.

Una variable del caso se puede reconocer por su prefijo: un solo “en” la muestra (@). ¡Y cuál es más, las variables del caso incluso no necesita ser declarado! Hay solamente un problema: no tenemos ninguna manera de recuperarlos o de cambiar una vez que existan. Aquí es adonde los métodos del caso entran en el juego.

Métodos del caso

El almacenaje y la recuperación de datos no es la única capacidad que se puede limitar a un objeto específico — la funcionalidad, se puede limitar también a los objetos. Alcanzamos este atascamiento con el uso de los métodos del caso, que son específicos a un objeto. La invocación de un método del caso (es decir enviando un mensaje que contiene el nombre del método a un objeto) invocará esa funcionalidad en el objeto de recepción solamente.

Se definen los métodos del caso usando la palabra clave del def, y el extremo con la palabra clave del final. Incorporar el ejemplo siguiente en una nueva cáscara de rubíes:

$ de irb
coche de la clase del irb>
open_trunk del def del irb>
el código de # del irb> para abrir el tronco va aquí
extremo del irb>
extremo del irb>
nada del =>
kitt del irb> = Car.new
=> #

Qué has hecho es define una clase llamada Car, que tiene un método del caso con el open_trunk conocido. Un objeto del coche instantiated de esta clase que la voluntad (que usa posiblemente una cierta robótica de lujo conectada con nuestro programa de rubíes) abre su tronco cuando se llama su método del open_trunk. (No hacer caso de ese valor de la vuelta de nada para el momento; miraremos valores de la nada en la sección siguiente.)

Mellar tu código
Mientras que es la muesca del código un elemento dominante del sintaxis de idiomas tales como Python, en el rubí, muesca es puramente cosmético — ayuda a legibilidad, pero no afecta el código de ninguna manera. De hecho, mientras que estamos experimentando con la cáscara de rubíes, no necesitas ser preocupado también de mellar código un de los. Sin embargo, cuando somos los archivos del ahorro que serán corregidos más adelante, desearás las ventajas de la legibilidad que vienen de mellar líneas jerarquizadas.

La comunidad de rubíes ha convenido en dos espacios como siendo óptima para mellar bloques del código tales como definiciones de la clase o del método. Adheriremos a este esquema de la muesca a través de este libro.

Con nuestra clase en lugar, podemos hacer uso este método:

irb> kitt.open_trunk
nada del =>

Puesto que no quisiéramos que los troncos de todos los coches se abrieran inmediatamente, hemos hecho esta funcionalidad disponible como método del caso.

Sé, yo sé: todavía no hemos modificado ningunos datos. Utilizamos los métodos del accessor para esta tarea.

Métodos del Accessor

Un método del accessor es un tipo especial de método del caso, y se utiliza leer o escribir a una variable del caso. Hay dos tipos: lectores (a veces llamados “compradores”) y escritores (o “setters”).

Un método del lector mirará dentro del objeto, traerá el valor de una variable del caso, y dará este valor de nuevo a nosotros. Un método del escritor, por otra parte, mirará dentro del objeto, encontrará una variable del caso, y asignará a variable el valor que fue pasado.

Agreguemos algunos métodos para conseguir y fijar la cualidad del @mileage de nuestros objetos del coche. De nuevo, salida de la cáscara de rubíes de modo que poder crear enteramente una nueva definición de la clase del coche. Nuestra definición de la clase está consiguiendo un pedacito más largo ahora, así que incorporar cada línea cuidadosamente. Si incurres en una equivocación que mecanografía, salir de la cáscara y comenzar encima.

$ de irb
coche de la clase del irb>
set_mileage del def del irb> (x)
@mileage del irb> = x
extremo del irb>
get_mileage del def del irb>
@mileage del irb>
extremo del irb>
extremo del irb>
nada del =>
kitt del irb> = Car.new
=> #

¡Ahora, podemos finalmente modificar y recuperar el kilometraje de nuestros objetos del coche!

irb> kitt.set_mileage (5667)
=> 5667
irb> kitt.get_mileage
=> 5667

Esto sigue siendo un pedacito torpe. ¿No sería agradable si podríamos dar a nuestro accessor métodos exactamente los mismos nombres que las cualidades a las cuales él lee en o escribe? Afortunadamente, el rubí contiene la notación de la taquigrafía para esta misma tarea. Podemos reescribir nuestra definición de la clase como sigue:

$ de irb
coche de la clase del irb>
mileage=(x) del def del irb>
@mileage del irb> = x
extremo del irb>
kilometraje del def del irb>
@mileage del irb>
extremo del irb>
extremo del irb>
nada del =>
kitt del irb> = Car.new
=> #

Con estos métodos del accessor en lugar, podemos leer a y escribir de nuestra variable del caso como si estuviera disponible fuera del objeto.

irb> kitt.mileage = 6032
=> 6032
irb> kitt.mileage
=> 6032

Estos métodos del accessor forman la parte del interfaz del objeto

Publicado en Uncategorized | No hay comentarios »

Diseño Pagina Web

Publicado por cool1007 en Febrero 27, 2007

Diseño Pagina Web

Metodo Diseño Pagina Web

Diseño Pagina Web

Notación del método

Hasta este momento, hemos mirado los casos donde el rubí utiliza menos puntuación que sus competidores. De hecho, el rubí hace uso pesado de la puntuación expresiva cuando viene al nombramiento de métodos.

Un nombre regular del método, como hemos visto, es una cadena simple, alfanumérica de caracteres. Si un método tiene una naturaleza potencialmente destructiva (por ejemplo, modifica directamente el objeto de recepción más bien que cambiar una copia de él), se añade como sufijo comúnmente con una marca del exclamation (!).

El ejemplo siguiente utiliza el método del upcase para ilustrar este punto:

irb> fox.upcase
=> “EL ZORRO MARRÓN RÁPIDO”
zorro del irb>
=> “el zorro marrón rápido”
¡irb> fox.upcase!
=> “EL ZORRO MARRÓN RÁPIDO”
zorro del irb>
=> “EL ZORRO MARRÓN RÁPIDO”

¡Aquí, el contenido de la variable del zorro ha sido modificado por el upcase! método.

La puntuación también se utiliza en los nombres de los métodos que vuelven valores boleanos. Un valor boleano es un valor que es verdad o falso; estos valores son de uso general como valores de vuelta para los métodos que hacen preguntas de yes/no. Tales métodos terminan en un signo de interrogación, que refleja agradable el hecho de que él tiene respuestas de yes/no:

¿irb> fox.empty?
=> falso
¿irb> fox.is_a? Secuencia
=> verdad

Estas convenciones de nombramiento hacen fácil reconocer los métodos que son destructivos, y los que vuelvan valores boleanos, haciendo tu código de rubíes más legible.
Programación orientada al objeto en rubí

Construyamos en la teoría que cubrimos al principio de este capítulo como hechamos una ojeada la puesta en práctica del rubí de OOP.

Como sabemos ya, la estructura de un uso basado en principios de OOP se centra en la interacción con los objetos. Estos objetos son a menudo representaciones de objetos del mundo real, como un coche. La interacción con un objeto ocurre cuando te enviamos un mensaje o te hacemos una pregunta. Si realmente teníamos un objeto del coche llamado kitt (no — con todo), encender el coche pudo ser tan simple como:

irb> kitt.start

Esta línea corta del código de rubíes envía el comienzo del mensaje al kitt del objeto. Usando terminología de OOP, diríamos que esta declaración del código llama el método del comienzo del objeto del kitt.

Como mencioné antes, en contraste con otros lenguajes de programación orientados al objeto tales como Python y PHP, en rubí, todo es un objeto. Especialmente en comparación con PHP, OOP del rubí no se siente como “clavar-en” cambio — fue pensado claramente para ser una característica de la base de la lengua del principio, que hace con las características de OOP en rubí un placer verdadero.

Como vimos en la sección anterior, incluso el más simples de elementos en rubí (como secuencias literales y números) son los objetos a los cuales puedes enviar mensajes

Publicado en Uncategorized | No hay comentarios »

Hello world!

Publicado por cool1007 en Febrero 27, 2007

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Publicado en Uncategorized | 1 Comentario »