lunes, 8 de mayo de 2017

Diferencia entre Atributos Heredados y Sintetizados

Atributos Sintetizados
Los atributos sintetizados se utilizan ampliamente.
Si una definición dirigida por sintaxis tiene únicamente atributos sintetizados se dice que es S-atribuida.
El árbol de análisis sintáctico de una gramática S-atribuida puede decorarse mediante un recorrido en post orden.
Atributos Heredados
Sirven para expresar la dependencia que hay entre una construcción del lenguaje de programación y su contexto.
Siempre es posible reescribir una definición dirigida por sintaxis para que sea S-atribuida.

En ocasiones es más natural utilizar atributos heredados

Herencia

La Herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La clase existente se denomina superclase. La clase derivada de la superclase se denomina la subclase. 
En la Herencia la subclase (la nueva clase creada) contiene los atributos y métodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados.
Esta particularidad permite crear una estructura jerárquica de clases cada vez más especializada.

¿En qué consiste?
Existen dos clases, a las que llamaremos padre (superclase o clase base) e hija (subclase o clase derivada) Al igual que las herencias en la vida real, la clase hija pasa a tener lo que tiene la clase padre Atributos Métodos Un objeto de la clase hija es también un objeto de la clase padre
¿En qué consiste?
 En la clase hija se definen las diferencias respecto de la clase padre
¿Para qué se usa?

Para extender la funcionalidad de la clase padre Para especializar el comportamiento de la clase padre