En un proyecto, nuestro equipo está utilizando listas de objetos para realizar operaciones masivas en conjuntos de datos que deberían procesarse de forma similar. En particular, diferentes objetos idealmente actuarían de la misma manera, lo que se lograría muy fácilmente con polimorfismo. El problema que tengo con él es que la herencia implica que es una relación, en lugar de tiene una relación. Por ejemplo, varios objetos tienen un contador de daños, pero para hacer que esto sea fácil de usar en una lista de objetos, se podría usar polimorfismo, excepto que implicaría que es una relación que no sería cierta. (Una persona no es un contador de daños)Herencia y polimorfismo: facilidad de uso vs pureza
La única solución que puedo pensar es hacer que un miembro de la clase devuelva el tipo de objeto adecuado cuando se establece implícitamente en lugar de confiar en la herencia. ¿Sería mejor renunciar a la es una/tiene un ideal a cambio de la facilidad de programación? Edit: Para ser más específicos, estoy usando C++, por lo que usar polimorfismo permitiría que los diferentes objetos "actúen igual" en el sentido de que las clases derivadas podrían residir dentro de una sola lista y ser operadas por un función virtual de la clase base. El uso de una interfaz (o imitarlos a través de la herencia) parece una solución que estaría dispuesto a usar.