martes, 8 de febrero de 2011

Herencia y polimorfismo: modularidad y reutilización de código

Semana 3
Clase Programación Orientada a Objetos

En esta semana vimos los conceptos de herencia y polimorfismo, aterrizando los conceptos en el proyecto elegido(particularmente un editor de dibujo).

La herencia es una característica muy importante para programar orientado a objetos, cuando se tiene una clase(que se puede decir subclase, en este ejemplo clase A), que contiene todas las propiedades y métodos de otra clase(clase padre, en este ejemplo clase B), entonces decimos que la clase A hereda la clase B.
Y el polimorfismo es cuando tenemos una clase que contiene métodos con nombres iguales, pero diferente implementación.

Un buen ejemplo que leí en algún sitio web es haciendo la analogía con instrumentos, por ejemplo se tiene la clase padre que en este caso se puede llamar Instrumentos, con sus funciones definidas como tocar y romper, y clases hijas llamadas guitarra y batería, las dos heredan las funciones de tocar y romper, saliéndonos un poco de la programación esto tiene mucha lógica ya que batería y guitarra los dos son instrumentos, entonces para estar en esta categoría("instrumentos") deben de tener algo en común que en este caso es la acción de tocarlos o romperlos.

En mi proyecto lo definí de la siguiente manera:

En la clase padre Dibujo, puedo tener varias clases hijas como por ejemplo
-*FigGeom
-*Lineas
-Libre(lápiz)

*La clase hija lineas a su vez podría se padre de clases hijas como linearecta y curvas, donde linearecta y curvas heredan de la clase padre atributos como el grosor de la línea.

*Y la clase hija FigGeom podría a su vez ser padre de Eclipse, Polígono, Cuadrados, donde los atributos que heredan es si la figura tiene contorno o no, y si es rellena o no.

Los cuales heredan de la clase Dibujo sus atributos como:
-Color
-Transparencia
-Coordenadas
-Dureza del pincel


Y funciones como:
-Movimiento del ratón, cundo se da click, cuando se tiene presionado el mouse, etc.

Este es un mapa para mostrar esta relación un poco mas gráfico:

1 comentario: