Ruby: clases y objetos

Ruby es un perfecto lenguaje de programación orientado a objetos. Las características del lenguaje de programación orientado a objetos incluyen:

  • Encapsulación de datos
  • Abstracción de datos
  • Polymorphism
  • Inheritance

Estas características se han analizado en el capítulo Ruby orientado a objetos .

Un programa orientado a objetos involucra clases y objetos. Una clase es el plano a partir del cual se crean los objetos individuales. En términos de orientación a objetos, decimos que su bicicleta es una instancia de la clase de objetos conocida como bicicletas.

Tomemos el ejemplo de cualquier vehículo. Comprende ruedas, caballos de fuerza y ​​capacidad del tanque de combustible o gasolina. Estas características forman los miembros de datos de la clase Vehículo. Puede diferenciar un vehículo de otro con la ayuda de estas características.

Un vehículo también puede tener ciertas funciones, como detenerse, conducir y acelerar. Incluso estas funciones forman los miembros de datos de la clase Vehículo. Por tanto, puede definir una clase como una combinación de características y funciones.

Un vehículo de clase se puede definir como:

Class Vehicle {

   Number no_of_wheels
   Number horsepower
   Characters type_of_tank
   Number Capacity
   Function speeding {
   }
   
   Function driving {
   }
   
   Function halting {
   }
}

Al asignar diferentes valores a estos miembros de datos, puede formar varias instancias de la clase Vehículo. Por ejemplo, un avión tiene tres ruedas, 1000 caballos de fuerza, combustible como tipo de tanque y una capacidad de 100 litros. De la misma manera, un automóvil tiene cuatro ruedas, potencia de 200, gasolina como tipo de tanque y una capacidad de 25 litros.

Definición de una clase en Ruby

Para implementar la programación orientada a objetos mediante Ruby, primero debe aprender a crear objetos y clases en Ruby.

Una clase en Ruby siempre comienza con la palabra clave class seguida del nombre de la clase. El nombre debe estar siempre en mayúsculas iniciales. La clase Cliente se puede mostrar como:

class Customer
end

Terminas una clase usando la palabra clave end . Todos los miembros de datos de la clase están entre la definición de clase y la palabra clave end .

Variables en una clase Ruby

Ruby proporciona cuatro tipos de variables:

  • Local Variables- Las variables locales son las variables que se definen en un método. Las variables locales no están disponibles fuera del método. Verá más detalles sobre el método en el capítulo siguiente. Las variables locales comienzan con una letra minúscula o _.

  • Instance Variables- Las variables de instancia están disponibles en todos los métodos para cualquier instancia u objeto en particular. Eso significa que las variables de instancia cambian de un objeto a otro. Las variables de instancia están precedidas por el signo arroba (@) seguido del nombre de la variable.

  • Class Variables- Las variables de clase están disponibles en diferentes objetos. Una variable de clase pertenece a la clase y es una característica de una clase. Están precedidos por el signo @@ y seguidos por el nombre de la variable.

  • Global Variables- Las variables de clase no están disponibles en todas las clases. Si desea tener una sola variable, que esté disponible en todas las clases, debe definir una variable global. Las variables globales siempre están precedidas por el signo de dólar ($).

Ejemplo

Con la variable de clase @@ no_of_customers, puede determinar el número de objetos que se están creando. Esto permite derivar el número de clientes.

class Customer
   @@no_of_customers = 0
end

Creando objetos en Ruby usando un nuevo método

Los objetos son instancias de la clase. Ahora aprenderá a crear objetos de una clase en Ruby. Puede crear objetos en Ruby utilizando el método new de la clase.

El método new es un tipo de método único, que está predefinido en la biblioteca Ruby. El nuevo método pertenece a los métodos de clase .

Aquí está el ejemplo para crear dos objetos cust1 y cust2 de la clase Customer -

cust1 = Customer. new
cust2 = Customer. new

Aquí, cust1 y cust2 son los nombres de dos objetos. Escribe el nombre del objeto seguido del signo igual a (=) después del cual seguirá el nombre de la clase. Luego, le seguirán el operador de punto y la palabra clave new .

Método personalizado para crear objetos Ruby

Puede pasar parámetros al método new y esos parámetros se pueden usar para inicializar variables de clase.

Cuando planeas declarar el nuevo método con parámetros, debes declarar que el método se inicializa en el momento de la creación de la clase.

El método initialize es un tipo especial de método, que se ejecutará cuando se llame al nuevo método de la clase con parámetros.

Aquí está el ejemplo para crear el método de inicialización:

class Customer
   @@no_of_customers = 0
   def initialize(id, name, addr)
      @cust_id = id
      @cust_name = name
      @cust_addr = addr
   end
end

En este ejemplo, declaras el método initialize conid, namey addrcomo variables locales. Aquí, def y end se utilizan para definir la inicialización de un método Ruby . Aprenderá más sobre los métodos en los capítulos siguientes.

En el método initialize , pasa los valores de estas variables locales a las variables de instancia @cust_id, @cust_name y @cust_addr. Aquí las variables locales contienen los valores que se pasan junto con el nuevo método.

Ahora, puede crear objetos de la siguiente manera:

cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")

Funciones de miembro en la clase Ruby

En Ruby, las funciones se llaman métodos. Cada método de una clase comienza con la palabra clave def seguida del nombre del método.

El nombre del método siempre preferido en lowercase letters. Termina un método en Ruby usando la palabra clave end .

Aquí está el ejemplo para definir un método Ruby:

class Sample
   def function
      statement 1
      statement 2
   end
end

Aquí, la declaración 1 y la declaración 2 son parte del cuerpo de la función del método dentro de la clase Sample. Estas declaraciones podrían ser cualquier declaración válida de Ruby. Por ejemplo podemos poner un método que pone a imprimir Hola Rubí de la siguiente manera -

class Sample
   def hello
      puts "Hello Ruby!"
   end
end

Ahora, en el siguiente ejemplo, cree un objeto de la clase Sample y llame al método hello y vea el resultado:

#!/usr/bin/ruby

class Sample
   def hello
      puts "Hello Ruby!"
   end
end

# Now using above class to create objects
object = Sample. new
object.hello

Esto producirá el siguiente resultado:

Hello Ruby!

Estudio de caso simple

Aquí hay un estudio de caso si desea practicar más con la clase y los objetos.

Estudio de caso de Ruby Class