martes, 8 de febrero de 2011

PROYECTO: Herencia y Polimorfismo

Programación Orientada a Objetos - Semana 3 - Reporte 3

Hola a todos. Para este reporte veremos cómo implementar la herencia y polimorfismo en el código de nuestro proyecto.

Para empezar veamos algunas definiciones y ejemplos rápidos:

HERENCIA: Cuando una clase padre (o superclase) comparte atributos y métodos propios con las clases hijas (o subclases).

Para que se entienda mejor:
En el mundo hay animales (superclase), pero hay diferentes tipos de animales (mamíferos, reptiles, aves, peces [subclases]). La clase animales hereda a las demás subclases algunos de sus atributos, por ejemplo: número de patas, color, tamaño, etcétera. A su vez hereda algunos métodos, por ejemplo: ver, oler, oir.

Las subclases pueden a su vez implementar métodos propios, por ejemplo: las avez vuelan, característica dificílmente compartible con los demás. Es el mismo caso con los peces, los cuales nadan y los demás no.

Atributos serían las características de los animales (físico, aunque no necesariamente), y los métodos serían lo que los animales hacen con dichos atributos.





POLIMORFISMO: La superclase puede hacer referencia a cualquiera de sus subclases, y dependiendo de dicha referencia, serán los métodos a ejecutar y su resultado.

Por ejemplo:
Animal hace referencia a la subclase mamífero y se ejecuta el método Desplazamiento y se imprime la línea ("Los mamíferos van sobre sus patas peludas").
En cambio si animal hace referencia a la subclase pez y se ejecuta el método Desplazamiento se imprimira la línea ("Los peces nadan con sus delicadas aletas").
El resultado depende de la referencia hecha por la superclase.

Aplicando al código



Hice una reformulación masiva de mi código para poder lograr que éste tema encajará en mi proyecto.

La herencia la aplicaré en la clase que ahora llamo Persona. Esta clase tiene 2 subclases idénticas llamadas Cliente y Proveedor, ambos comparten los atributos de la clase madre:

- Un nombre
- Una dirección
- Un RFC (Importantísimo en las facturas)
- Una empresa
- Etcétera

Ambas subclases se construyen de acuerdo a los atributos de la clase madre.

Una factura comparte atributos de otras clases, ya que una factura se genera a partir de un Cliente, un Proveedor y un Pedido (2 personas y 1 pedido). Entonces, haciendo uso de algunos métodos, se necesitan saber los atributos de las personas y del pedido para poder llenar la factura. Por consiguiente debe existir cierta herencia por parte de las personas hacia las facturas.

Un comunicación entre mi aplicación y mi base de datos necesita saber más cosas que ningún otro, primeramente necesito saber si he de buscar una factura o un cliente; sabiendo eso yo necesito usar los atributos de alguna de estas 2 clases para generar una buena búsqueda, alta, baja o modificación.

Es una explicación general de mi código, espero generar mas ideas conforme realizo mi código asi que espero hacer más conexiones raras entre mis clases conforme pasé el tiempo (no mucho :) ).

Saludos

1 comentario: