mozilla
Los resultados de tu búsqueda

    Creando la jerarquía

     

    Creando la Jerarquía

    Existen varias maneras para definir funciones constructoras apropiadas para implementar la jerarquía Empleado. Como escoja el definirlas depende extensamente de la habilidad que tenga para hacer en su aplicación.

    Esta sección muestra como utilizar definiciones muy simples (y comparativamente inflexibles) para demostrar como obtener la herencia para trabajar. En estas definiciones, no puede especificar cualesquier valor de propiedad cuando crea un objeto. Los recientes objetos creados simplemente obtienen los valores por defecto, los cuales puede cambiar en cualquier momento. La figura 8.2 ilustra la jerarquía de esas definiciones simples.

    En una aplicación real, podría probablemente definir constructores que permitan proveer valores de propiedades a objetos en tiempo de creación (Véase Constructores más flexibles para más información). Por ahora, estas definiciones simples demuestran como la herencia ocurre.

    Image:hier02.gif
    Figura 8.2: Definiciones del objeto Empleado

    Las siguientes definiciones de Empleado en Java y JavaScript son similares. Las únicas diferencias es que necesita especificar el tipo para cada una de las propiedades en Java pero no así en JavaScript y necesita crear un método explícito constructor para las clases Java.

    </tr>

    JavaScript Java
    function Empleado () {
    this.nombre = "";
    this.departamento = "general";
    }
    
    public class Empleado {
       public String nombre;
       public String departamento;
       public Empleado () {
          this.nombre = "";
          this.departamento = "general";
       }
    }
    

    Las definicionese Administrador y Trabajador muestran las diferencias en como especificar el siguiente objeto más alto en la cadena jerarquica. En JavaScript, añade una instancia prototipada como el valor del prototipo en la función constructora. Puede hacerlo así en cualquier tiempo despúes de definir el constructor. En Java, especifica la super clase dentro de la definición de la clase. No puede cambiar la clase afuera de la definición de la clase.

    </tr>

    JavaScript Java
    function Administrador () {
    this.reporta = [];
    }
    Administrador.prototype = new Empleado;
    
    function Trabajador () {
    this.proyecto = [];
    }
    Trabajador.prototype = new Empleado;
    
    public class Administrador extends Empleado {
       public Empleado[] reporta;
       public Administrador () {
          this.reporta = new Empleado[0];
       }
    }
    
    public class Trabajador extends Empleado {
       public String[] proyecto;
       public Trabajador () {
          this.proyecto = new String[0];
       }
    }
    

    Las definiciones de Ingeniero y Vendedor crean los objetos que descienden de Trabajador y este de Empleado. Un objeto de estos tipos tiene las propiedades de todos los objetos anteriores en la cadena. Adicionalmene, estas definiciones sobre escriben los valores heredados de la propidad departamento con los nuevos valores especificados para estos objetos.

    JavaScript Java
    function Vendedor () {
       this.departamento = "ventas";
       this.cantidad = 100;
    }
    Vendedor.prototype = new Trabajador;
    
    function Ingeniero () {
       this.departamento = "ingeniería";
       this.maquina = "";
    }
    Ingeniero.prototype = new Trabajador;
    
    public class Vendedor extends Trabajador {
       public double cantidad;
       public Vendedor () {
          this.departamento = "ventas";
          this.cantidad = 100.0;
       }
    }
    
    public class Ingeniero extends Trabajador {
       public String maquina;
       public Ingeniero () {
          this.dept = "ingeniería";
          this.maquina = "";
       }
    }
    

    Utilizando estas definiciones, puede crear instancias de estos objetos que obtienen los valores por defecto de sus propiedades. La figura 8.3 ilustra el uso de estas definicones JavaScript para crear nuevos objetos y muestra llos valores de las propiedades de los nuevos objetos.

    Nota: El término instancia tiene un significado técnico específico en lenguajes basados en clases. En estos lenguajes, una instancia es un miembro individual de una clase y es fundamentalmente diferente de una clase. En JavaScript, "instancia" no posee este significado técnico porque JavaScript no posee esta diferencia entre clases e instancias. Sin embargo, hablando acerca de "instancia" en JavaScript, puede ser utilizado informalmente para significar un objeto creado utilizando una función constructora particular. Así que, en este ejemplo, podría informalmente decir que jane es una instancia de Ingeniero. Similarmente, aunque los términos padre, hijo, ancestro y descendente no tienen siginificados formales en JavaScript; puede utilizarlos para referirse a objetos anteriores o posteriores en la cadena prototipada.

    Image:hier03.gif
    Figura 8.3: Creación de objetos con definiciones simples

     

    Etiquetas y colaboradores del documento

    Contributors to this page: DSN XP, teoli, Mgjbot
    Última actualización por: teoli,