Ruby Clases y objetos
Ruby es un lenguaje de programación orientado a objetos perfecto. Las características de los lenguajes de programación orientados a objetos incluyen:
- Encapsulamiento de datos
- Abstracción de datos
- Polimorfismo
- Herencia
Estas características se discutirán enRuby orientado a objetos.
Un programa orientado a objetos involucra clases y objetos. Una clase es un plano (blueprint) a partir del cual se crean objetos individuales. En terminología orientada a objetos, su bicicleta es una instancia de la clase Bicicleta.
Tomemos el vehículo como ejemplo: incluye ruedas (wheels), caballos de fuerza (horsepower) y capacidad del tanque de combustible o gas (fuel or gas tank capacity). Estos atributos forman los miembros de datos de la clase Vehicle. Con estos atributos puede distinguir un vehículo de otros vehículos.
El vehículo también puede contener funciones específicas, como detenerse (halting), conducir (driving) y exceso de velocidad (speeding). Estas funciones forman los miembros de datos de la clase Vehicle. Por lo tanto, puede definir una clase como una combinación de atributos y funciones.
La definición de la clase Vehicle es la siguiente:
Ejemplo
Al asignar diferentes valores a estos miembros de datos, puede crear diferentes instancias de la clase Vehicle. Por ejemplo, un avión tiene tres ruedas, 1000 caballos de fuerza y una capacidad de tanque de combustible de 100 litros. De la misma manera, un automóvil tiene cuatro ruedas, 200 caballos de fuerza y una capacidad de tanque de gas de 25 litros.
Definir clases en Ruby
Para implementar la programación orientada a objetos con Ruby, primero necesita aprender cómo crear objetos y clases en Ruby.
En Ruby, una clase siempre comienza con la palabra claveclassseguida del nombre de la clase. La primera letra del nombre de la clase debe estar en mayúscula. La claseCustomeres como se muestra a continuación:
Puede usar la palabra claveendpara finalizar una clase.ClaseTodos los miembros de datos están entre la definición de la clase y laendpalabra clave end.
Variables en las clases de Ruby
Ruby proporciona cuatro tipos de variables:
- Variables locales:Una variable local es una variable definida dentro de un método. La variable local no está disponible fuera del método. En capítulos posteriores verá más detalles sobre los métodos. Las variables locales comienzan con una letra minúscula o con el guion bajo _.
- Variables de instancia:Las variables de instancia pueden usarse a través de los métodos de cualquier instancia u objeto en particular. Esto significa que las variables de instancia pueden cambiar de un objeto a otro. Las variables de instancia llevan el símbolo (@) antes del nombre de la variable.
- Variables de clase:Las variables de clase pueden usarse a través de diferentes objetos. Las variables de clase pertenecen a la clase y son un atributo de la clase. Las variables de clase llevan el símbolo (@@) antes del nombre de la variable.
- Variables globales:Las variables de clase no pueden usarse entre clases. Si desea tener una variable que pueda usarse entre clases, necesita definir una variable global. Las variables globales siempre comienzan con el símbolo de dólar ($).
Ejemplo
Usando la variable de clase @@no_of_customers, puede determinar el número de objetos creados, y así conocer el número de clientes.
Ejemplo
En Ruby, el uso delnewmétodo para crear objetos
Un objeto es una instancia de una clase. Ahora aprenderá cómo crear objetos de una clase en Ruby. En Ruby, puede usar el método de la clasenewpara crear objetos.
El métodonewes un método especial predefinido en la librería de Ruby. El método new pertenece alClasemétodo Class.
El siguiente ejemplo crea dos objetos de la clase Customer: cust1 y cust2:
Aquí, cust1 y cust2 son los nombres de los dos objetos. Después del nombre del objeto viene un signo igual (=), después del signo igual viene el nombre de la clase, luego el operador punto y la palabra clavenew。
Métodos personalizados para crear objetos Ruby
Puede pasar al métodonewparámetros, que pueden usarse para inicializar variables de clase.
Cuando desee declararnewun método con parámetros, necesita declarar el métodoinitialize。
initializeque es un tipo especial de método que se ejecutará cuando se llame alnewmétodo new de la clase con parámetros.
El siguiente ejemplo crea el método initialize:
Ejemplo
En este ejemplo, puede declarar un métodoid、name、addrcon variables localesinitializeinitialize. Aquí,defyenddef se usa para definir métodos Rubyinitialize. En capítulos posteriores, aprenderá más detalles sobre los métodos.
EninitializeEn el método initialize, asigne los valores de estas variables locales a las variables de instancia @cust_id, @cust_name y @cust_addr. Aquí, los valores de las variables locales se pasan a través del método new.
Ahora puede crear objetos, de la siguiente manera:
Funciones miembro en las clases de Ruby
En Ruby, las funciones se denominan métodos.ClaseCada método de la clase comienza con la palabra clavedefseguida del nombre del método.
El nombre del método siempre comienzacon una letra minúsculaal principio. En Ruby, puede usar la palabra claveendpara finalizar un método.
El siguiente ejemplo define un método Ruby:
Aquí,statement 1ystatement 2es parte del cuerpo del método de la clase SamplefunctionEstas declaraciones pueden ser cualquier declaración Ruby válida. Por ejemplo, podemos usar el métodoputspara imprimirHello Ruby, como se muestra a continuación:
El siguiente ejemplo creará un objeto de la clase Sample y llamará alhellométodo:
Esto producirá el siguiente resultado:
Hello Ruby!
Un sencillo caso de estudio
Si desea hacer más ejercicios sobre clases y objetos, aquí tiene un caso de estudio:
Otras extensiones