Re: Consultas sobre buen uso de herencia
de Bustamante Tomás - Hola Manuel,
Si eso es correcto o no dependerá principalmente de cuáles sean las responsabilidades de tus clases C1 y C2. Habría que plasmarlo a un ejemplo más concreto para poder analizarlo bien (que no sean viajes y paquetes).
Cuando tenés dos clases que tienen métodos prácticamente iguales se pueden tomar distintos enfoques para evitar la repetición de código. Algunas opciones son:
- Delegación: crear una tercera clase concreta que tenga la responsabilidad de hacer eso que estaba repetido. Las otras dos clases le delegarán a ella la tarea que antes estaba repetida. Por ejemplo, en la Máquina expendedora de bebidas, la clase HacedorDeTeConLeche y la clase HacedorDeCafeConLeche le delegan la responsabilidad a la clase Lechero de agregar leche en el vaso.
- Herencia: crear una tercera clase pero abstracta de la cual hereden tus dos clases C1 y C2. El método que estaba repetido pasará a estar escrito una única vez en la clase nueva. Por ejemplo, si tengo las clases Perro y Gato y ambas tienen el método caminar exactamente iguales, tiene sentido que cree una clase abstracta Cuadrúpedo que tenga la implementación del método caminar y tanto Perro como Gato lo heredarán.
En ambos ejemplos que puse estaría mal hacer lo que proponés dado que un Gato no es un Perro y un HacedorDeCafeConLeche no es un HacedorDeTeConLeche, pero quizás en otros casos puede estar bien.
Saludos,
Tomás