Buena pregunta.
Se requiere para resolver problemas del mundo real. Y para resolver problemas del mundo real, necesitamos replicar el problema para estar lo más cerca posible del mundo real.
Analicemos por qué se requiere el polimorfismo del tiempo de ejecución.
Supongamos que tienes un Range Rover. Compruebe esta declaración.
- ¿Cuál fue la persona más perturbada que has conocido / conocido?
- Hoy es mi cuarta cita con un chico que realmente me gusta, ¿es normal que todavía esté nervioso y él también?
- ¿Por qué mi abuela dijo que sacaría mis cosas de mi habitación y las tiraría al césped, a la acera y a la calle y me dijo que si intentaba detenerla me arrestarán aunque dijera que destruirá mi propiedad?
- ¿Por qué un hombre a menudo va a un baño? ¿Está nervioso?
- ¿Cómo puede la gente asumir que podemos comunicarnos con extraterrestres cuando ni siquiera podemos comunicarnos con nosotros mismos de manera adecuada?
Narración A:
Mi _______ puede alcanzar una velocidad máxima de 200 Kmph.
El espacio en blanco aquí se puede llenar de la siguiente manera.
- Mi vehículo puede alcanzar una velocidad máxima de 200 Kmph.
- Mi auto puede alcanzar una velocidad máxima de 200 Kmph.
- Mi SUV puede alcanzar una velocidad máxima de 200 Kmph.
- Mi Range Rover puede alcanzar una velocidad máxima de 200 Kmph.
¿Viste herencia aquí? Range Rover es un tipo de SUV. SUV a su vez es un tipo de automóvil que a su vez es un tipo de vehículo.
Basado en lo anterior, por ejemplo, se le asigna una tarea para codificar una función que obtiene la velocidad máxima para un vehículo.
Entonces, escribiría una función llamada GetTopSpeed () en cada una de las clases ( vehículo, automóvil, SUV, RangeRover) que anulan la función en cada paso.
Observe que aquí el vehículo es una definición incompleta y puede extenderse a una variedad de vehículos como automóviles, bicicletas, triciclos, etc. Por lo tanto, la función escrita en la clase de vehículos devolverá la velocidad máxima promedio para todos los vehículos combinados, puede ser 80 Kmph. Esto se leería en el mundo real como …
Un vehículo en promedio tiene una velocidad máxima de 80 km / h.
De manera similar, la clase de automóvil devolvería la velocidad máxima como, por ejemplo, 150 kph.
Un automóvil en promedio tiene una velocidad máxima de 150 km / h.
Los SUV que son generalmente lentos devolverían 120 kph.
Un SUV en promedio tiene una velocidad máxima de 120 km / h.
Pero un Range Rover específicamente devolvería una velocidad máxima de 200 Kmph.
En las declaraciones enumeradas en la Narración A, la declaración usa específicamente la palabra .. “Mi”, que siempre apunta a un objeto específico. Lo que esto significa también es que siempre está llamando a la función más especializada para calcular la velocidad máxima … incluso si la declaración utiliza la clase vehículo, automóvil, SUV o Range Rover para transmitir el punto.
A continuación, llegando a sus Vtables y otras estructuras de datos.
Estas son las herramientas que te ayudan a resolver los problemas. Por ejemplo, una cola es una estructura de datos que emula un escenario de primer orden de llegada. Imagina una cola para emitir tu voto. Otra es una cola de prioridad , otra estructura de datos. Imagine una cola para abordar un avión donde, por primera vez, los pasajeros de clase ejecutiva, los pasajeros con niños o bebés pueden abordar primero.
Conclusión:
- Los conceptos de OOPS como clases, objetos, herencia, polimorfismo son conceptos que nos ayudan a mapear entidades del mundo real en el dominio de programación.
- Esta asignación es necesaria para ayudar a los programadores a distinguir fácilmente entre sí varias partes de un programa complejo.
- Una vez que se realiza el mapeo, traemos nuestras herramientas como estructuras de datos y las usamos a través de varios algoritmos para resolver un problema particular.
Espero que esto responda a su pregunta.