herencia

Ejemplos de reutilización por herencia

La reutilización es una de los objetivos que debe cubrirse en una buena metodología de programación. Los mecanismos de implementación de la reutilización en la POO son dos: composición y herencia. Composición es cuando un tipo ya definido se usa como propiedad de otro tipo. Por ejemplo, es la relación entre los tipos Circulo y Punto. Un Circulo se define mediante una propiedad que es de tipo Punto (su centro).

En la reutilización por herencia el mecanismo es diferente. La relación que se establece no es de “tiene a” sino de “añade o especializa a”. La clase hija es una especialización de la clase padre mediante el añadido de algunas propiedades. Por ejemplo, el tipo Pixel es un Punto al que se le añade la propiedad Color. Un Libro es una Publicación con más propiedades: número de páginas, precio, etc.

Aunque la herencia es un mecanismo de reutilización menos usado que el de composición, puede ser muy útil en algunos casos. En este documento se presentan diversos ejemplos de tipos construidos mediante herencia. Nótese que en unos tipos el método compareTo se define para el tipo padre y en otros para el tipo hijo. Ninguno de los tipos implementa el hashCode, que en cualquier caso son triviales.
 
 
1.1 Tipo Punto



































1.2 Tipo Pixel extiende Punto

























2.1 Tipo Publicación























2.2 Tipo Libro extiende Publicación



























3.1 Tipo Video


 
3.2 Tipo VideoYoutube extiende Video
 






















4.1 Tipo Vivienda




 
4.2 Tipo Piso extiende Vivienda
 



 
 
5.1 Tipo PilotoF1
 






  
5.2 Tipo PilotoF1Puntuado extiende PilotoF1
 
Un PilotoF1Puntuado es un PilotoF1 que además tiene las puntuaciones obtenidas a lo largo de la temporada en cada circuito. Para ello se define el tipo Puntuacion que relaciona cada circuito con los puntos obtenidos en él.
 
El tipo PilotoF1Puntuado tendrá como funcionalidades tres métodos básicos:
  • Devolver la puntuación total de las carreras hasta el momento
  • Almacenar una determinada puntuación en un circuito
  • Devolver la puntuación de un circuito
Podrían añadirse más funcionalidades de esquemas como contadores (número de carreras con más de n puntos), máximo y mínimo (circuito con más y menos puntos), existe, paratodo, filtro, etc.
 







 
 

No hay comentarios:

Publicar un comentario