Creando la jerarquía

Hubo errores de script en esta página. Mientras los editores del sitio lo solucionan, puedes ver un contenido parcial debajo.

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

{{ AnteriorSiguiente("Guía JavaScript 1.5:El ejemplo Employee", "Guía JavaScript 1.5:El ejemplo Employee:Propiedades de objetos") }}

{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/The_Employee_Example/Creating_the_Hierarchy", "fr": "fr/Guide_JavaScript_1.5/L\'exemple_de_l\'employ\u00e9/Cr\u00e9ation_de_la_hi\u00e9rarchie", "ja": "ja/Core_JavaScript_1.5_Guide/The_Employee_Example/Creating_the_Hierarchy", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Praca_z_przyk\u0142adem/Tworzenie_hierarchii" } ) }}

Etiquetas y colaboradores del documento

Colaboradores de esta página: DSN XP, Mgjbot
Última actualización por: Mgjbot,