Polimorfismo en Ruby

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.

  1. Polimorfismo usando herencia
  2. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *