lunes, 22 de noviembre de 2010

LENGUAJES DE PROGRAMACION - PUNTOS EXTRA

Comparativa: Herencia.

Herencia por concatenación




Todos los atributos y métodos heredados están disponibles en el mismo objeto (si bien se necesita la clase para poder interpretarlos).


Herencia mediante delegación
Existe una cadena de objetos apuntando a sus padres, hasta llegar a un objeto padre de todos.



Cuando un objeto no puede responder un mensaje, porque no posee el miembro (atributo
o método), que se le pide, reenvía el mensaje al objeto que marca su atributo parent. Las relaciones de herencia, en lugar de ser un caso aparte, pasan a ser un caso particular de las relaciones de composición.




El mensaje:
B.foo(); // MSG B fo  No encuentra el método foo() en el objeto B, así que se sigue el atributo parent, que apunta a A, que sí tiene ese método, y es ejecutado. Si no se encontrara, entonces se produciría un error, que normalmente se traduce en una excepción. En este caso, la excepción producida sería “Método no encontrado”.



Herencia dinámica
En el caso de estar implementada por delegación,se abre una nueva posibilidad: el hecho de poder cambiar el atributo (ya que, normalmente, es un atributo más) que señala al padre del objeto, hace que un objeto pueda ser “hijo” de varios objetos, dependiendo del momento de la ejecución. El aprovechamiento de esta característica requiere cambiar ligeramente el tipo de programación.

Herencia dinámica 
Es posible cambiar, en tiempo de ejecución, al “padre” de un objeto. Es totalmente contrario a la corriente actual, que trata de detectar todos los errores posibles en tiempo de compilación. 






Su principal ventaja reside en que los métodos pueden escribirse según el tipo del objeto. En ListaVacia, no es necesario que getNumeroElementos() consulte el tamaño de la lista, sólo debe devolver cero. Puede ayudar a solucionar errores y hacer el código más simple. Su principal desventaja es que precise coordinar varios tipos para realizar una serie de tareas. Ésto puede conllevar errores y puede hacer las modificaciones de código más simples o más complicadas.

SALUDOS!!!!!

2 comentarios:

  1. Esta información está sacada de mi página web,

    http://webs.uvigo.es/jbgarcia/

    Concretamente del material para mi curso de doctorado sobre programación orientada a objetos avanzada:

    http://trevinca.ei.uvigo.es/~jgarcia/cdTO/

    No me molesta que lo hayas hecho, pero sí me gustaría que indicaras de dónde sacas la información.

    ResponderEliminar