Tengo algunas preguntas sobre el concepto de polimorfismo estático Algunas veces escucho; puede interpretarlos principalmente en el contexto de C++, pero agradecería las respuestas independientes del idioma cuando corresponda (, por lo tanto, etiquetar tanto C++ como el lenguaje independiente).Definición e implementación del polimorfismo estático
¿Cómo definimos polimorfismo estática en general? Como un ejemplo, creo que la función
std::sort
de C++ se considerará estáticamente polimórfica ya que depende de alguna de las interfaces proporcionada por algunos de los objetos que comportan como iteradores y la comportamiento exacto bajo la interfaz de iteradores proporcionadas se puede determinar en tiempo de compilación ¿Es esta explicación cómo definimos el polimorfismo estático, o es solo una descripción de un caso específico y hay más que eso?¿Cuáles son los patrones de código comunes del uso de polimorfismo estático en C++? Además: ¿Es SP solo logrado mediante plantillas en C++?
¿Es cierto que un diagrama de clase UML dado no directamente describir cómo se maneja polimorfismo y, por lo tanto, puede ser implementado ya sea estática o dinámicamente al menos parcialmente? En otras palabras: ¿la elección del polimorfismo estático frente al dinámico es independiente del modelo OOP y, por lo tanto, depende del implementador decidir?
¿El polimorfismo estático es solo C++ y está relacionado con el funcionamiento de las plantillas? Si no, ¿está presente en cualquier otro lenguajes principales además de C++? ¿Podemos tener un equivalente de polimorfismo estático en Java, C# ... cualquier cosa, y traerá algún beneficio?
Lo más importante ... ¿Cuáles son los beneficios reales del uso de polimorfismo estático? Creo que podemos estar de acuerdo en que reduce la flexibilidad del código; ¿Cuáles son las ventajas, además, en el caso de C++, de salvar una referencia de referencia (función virtual/puntero a función/costo de delegado)? ¿Cuál es la clase de problemas donde el polimorfismo estático es especialmente útil, la elección correcta para la implementación?
¿Podemos estar de acuerdo en que reduce la flexibilidad del código? –
Creo que quiso decir "complejidad" o posiblemente "redundancia". –
No, me refiero a la flexibilidad; asumiendo que todos los diseños con polimorfismo estático se pueden implementar con polimorfismo dinámico, pero no al revés: usar polimorfismo estático para un caso específico implica que en el futuro podría surgir la necesidad de reescribirlo dinámicamente, si los requisitos cambian. Solo estoy pensando en – Kos