El  concepto de herencia me pareció sencillo de entender una vez que capté otro  concepto de O-O-P: las clases. En O-O-P se acostumbra agrupar a los objetos en  clases. Esto es muy común en la vida diaria. Todos nosotros tendemos a  clasificar los objetos comunes por clases. Manejamos la clase mueble, la clase  mascota, la clase alimento, etc. Obviamente en el campo de la programación esta  clasificación es más estricta. ¿Cuál es el sentido de las clases?  Fundamentalmente evitar definir los objetos desde cero y facilitar su rehuso. Si  trabajamos con clases, al querer definir un nuevo objeto, partimos de alguna  clase definida anteriormente, con lo que el objeto en cuestión hereda las  características de los objetos de su clase. Imaginemos que creamos una clase  "aves" y describimos las características de las aves (plumas, pico, nacen de  huevo, etc.). Más adelante necesitamos una clase "pingüino". Como pertenece a  "aves" no requerimos volver a declarar lo descrito sino marcamos que "pingüino"  es una subclase de "aves" con lo que "pingüino" hereda todas sus  características. A continuación sólo declaramos los detalles que determinan lo  que distingue a "pingüino" de "aves". Asimismo podemos declarar "emperador" como  una subclase de "pingüino", con lo que "emperador" heredará todas las  características de las superclases "pingüino" y "aves" más las características  que nosotros declaremos en particular para "emperador". En un programa  (imaginario por supuesto) yo puedo utilizar estas clases (aves, pingüino y  emperador). El hecho de colocar a un individuo en particular en estas clases es  lo que se llama objeto y se dice que es una instancia de una clase. Así, si yo  coloco a Fredy (un pingüino emperador) en mi programa, se dice que el objeto  Fredy es una instancia de la clase emperador. Fredy aparecerá en mi programa con  todas las características (herencia) de aves, de pingüino y de emperador.
 Por otra  parte, entender el concepto de Polimorfismo implicó un buen número de horas de  indagación y búsqueda de ejemplos. Espero que éste resulte claro: supóngase que  declaramos un objeto llamado Suma. Este objeto requiere dos parámetros (o datos)  como mensaje para operar. En la programación tradicional tendríamos que definir  el tipo de datos que le enviamos, como por ejemplo dos números enteros, dos  números reales, etc. En O-O-P el tipo de dato se conoce hasta que se ejecuta el  programa.
  e.)  COMPILADOR:  Es un  programa que traduce un lenguaje de alto nivel al lenguaje máquina. Un programa  compilado indica que ha sido traducido y está listo para ser ejecutado. La  ejecución de los programas compilados es más rápida que la de los interpretados,  ya que el interprete debe traducir mientras está en la fase de ejecución (saca  todos los errores). Un compilador es un programa que traduce el programa fuente  (conjunto de instrucciones de un lenguaje de alto nivel, por ejemplo BASIC o  Pascal) a programa objeto (instrucciones en lenguaje máquina que la computadora  puede interpretar y ejecutar). Se requiere un compilador para cada lenguaje de  programación. Un compilador efectúa la traducción, no ejecuta el programa. Una  vez compilado el programa, el resultado en forma de programa objeto será  directamente ejecutable. Presentan la ventaja considerable frente a los  intérpretes de la velocidad de ejecución, por lo que su uso será mejor en  aquellos programas probados en los que no se esperan cambios y que deban  ejecutarse muchas veces. En caso de que se opte por un interpretador se debe  considerar que el intérprete resida siempre en memoria.  
 
No hay comentarios:
Publicar un comentario