En Ruby , uno no tiene nada parecido a los tipos de variables que hay en otros lenguajes de programación. Cada variable es un “objeto” que se puede modificar individualmente. Uno puede agregar fácilmente métodos y funciones en cada objeto. Así que aquí, la Programación Orientada a Objetos juega un papel importante. Hay muchos pilares de la programación orientada a objetos en todos los demás lenguajes de programación, como herencia, encapsulación, etc. Uno de estos pilares es el polimorfismo.
El polimorfismo se compone de dos palabras Poly que significa Muchos y Morph que significa Formas . Entonces, el polimorfismo es un método en el que uno puede ejecutar el mismo método utilizando diferentes objetos. En polimorfismo, podemos obtener diferentes resultados usando la misma función pasando diferentes objetos de entrada. También se pueden escribir los comandos If-Else, pero eso solo hace que el código sea más largo. Para evitar esto, los programadores idearon el concepto de polimorfismo.
En polimorfismo, las clases tienen una funcionalidad diferente pero comparten una interferencia común. El concepto de polimorfismo se puede estudiar en algunas subcategorías.
- Polimorfismo usando herencia
- Polimorfismo usando Duck-Typing
- Polimorfismo usando herencia
La herencia es una propiedad en la que una clase secundaria hereda las propiedades y métodos de una clase principal. Uno puede implementar fácilmente el polimorfismo usando la herencia. Se puede explicar con el siguiente ejemplo:
Ejemplo:# Ruby program of Polymorphism using inheritance
class
Vehicle
def
tyreType
puts
"Heavy Car"
end
end
# Using inheritance
class
Car < Vehicle
def
tyreType
puts
"Small Car"
end
end
# Using inheritance
class
Truck < Vehicle
def
tyreType
puts
"Big Car"
end
end
# Creating object
vehicle = Vehicle.
new
vehicle.tyreType()
# Creating different object calling same function
vehicle = Car.
new
vehicle.tyreType()
# Creating different object calling same function
vehicle = Truck.
new
vehicle.tyreType()
Producción:
Heavy Car Small Car Big Car
El código anterior es una forma muy sencilla de ejecutar el polimorfismo básico. Aquí, el método tyreType se llama usando diferentes objetos como Car y Truck. Las clases Car y Truck son las clases secundarias de Vehicle. Ambos heredan los métodos de clase de vehículo (principalmente el método de tipo de neumático).
- Polimorfismo usando Duck-Typing
En Ruby, nos enfocamos en las capacidades y características del objeto en lugar de su clase. Entonces, Duck Typing no es más que trabajar en la idea de lo que un objeto puede hacer en lugar de lo que realmente es. O qué operaciones se podrían realizar en el objeto en lugar de la clase del objeto.
Aquí hay un pequeño programa para representar el proceso antes mencionado.
Ejemplo :# Ruby program of polymorphism using Duck typing
# Creating three different classes
class
Hotel
def
enters
puts
"A customer enters"
end
def
type(customer)
customer.type
end
def
room(customer)
customer.room
end
end
# Creating class with two methods
class
Single
def
type
puts
"Room is on the fourth floor."
end
def
room
puts
"Per night stay is 5 thousand"
end
end
class
Couple
# Same methods as in class single
def
type
puts
"Room is on the second floor"
end
def
room
puts
"Per night stay is 8 thousand"
end
end
# Creating Object
# Performing polymorphism
hotel= Hotel.
new
puts
"This visitor is Single."
customer = Single.
new
hotel.type(customer)
hotel.room(customer)
puts
"The visitors are a couple."
customer = Couple.
new
hotel.type(customer)
hotel.room(customer)
Producción :
This visitor is Single. Room is on the fourth floor. Per night stay is 5 thousand The visitors are a couple. Room is on the second floor Per night stay is 8 thousand
En el ejemplo anterior, el objeto del cliente juega un papel en el trabajo con las propiedades del cliente, como su «tipo» y su «habitación». Este es un ejemplo de polimorfismo.
Publicación traducida automáticamente
Artículo escrito por muskangupta13 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA