Categoría: News

Constructor (Informática)

En programación orientada a objetos (POO), un constructor es una subrutina cuya misión es inicializar un objeto de una clase. En el constructor se asignan los valores iniciales del nuevo objeto.

Se utiliza para crear tablas de clases virtuales y poder así desarrollar el polimorfismo, una de las herramientas de la programación orientada a objetos. Al utilizar un constructor, el compilador determina cual de los objetos va a responder al mensaje (virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un paréntesis.

Java

Un constructor por defecto es un constructor sin parámetros que no hace nada. Sin embargo será invocado cada vez que se construya un objeto sin especificar ningún argumento, en cuyo caso el objeto será iniciado con los valores predeterminados por el sistema (los atributos numéricos a cero, los alfanuméricos a nuloPeq, y las referencias a objetos a null).

Ejemplo

Un constructor por defecto para la clase SSuma quedaría así:

   public SSuma() {}

Como se observa el constructor no posee ningún parámetro, ya que como no ha sido definido propiamente por el programador, Java lo hace por default.

Si se define un constructor con parámetros (definido explícitamente) el constructor por default se reemplaza por este.

A continuación se creará un constructor explícito para una clase simple, utilizando una clase Persona con una serie de atributos.

Primero se declara la clase con sus atributos:

 class Persona
 {
   //ATRIBUTOS
   private String nombre;
   private int edad;
   private String empleo;
   private double salario;
  
   //CONSTRUCTORES
   public Persona() {} //CONSTRUCTOR SIN PARÁMETROS
   public Persona(String nombre, int edad, String empleo, double salario)
   {
       asignarNombre(nombre);
       asignarEdad(edad);
       asignarEmpleo(empleo);
       asignarSalario(salario);
   }
   //...
 }

El constructor sin parámetros es reemplazado por el constructor explícito. En este ejemplo se puede observar que los constructores preferentemente se declaran públicos para que puedan ser invocados desde cualquier parte.

Una línea como esta invocará al constructor sin parámetros:

   Persona pers01 = new Persona();// invoca al constructor Persona

El operador new crea un nuevo objeto, en este caso de la clase Persona, y a continuación se invoca al constructor de la clase para realizar las operaciones de iniciación que estén programadas.

A continuación se invocará al constructor con parámetros, que se introducirán en el orden especificado en el constructor.

Persona pers02 = new Persona("Pepe Pérez", 30, "Programador", 25000);

Programación orientada a objetos

La programación orientada a objetos (POO, en español, OOP, según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.

Muchos de los objetos prediseñados de los lenguajes de programación actuales permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias bibliotecas.

Está basada en varias técnicas: herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.

Su uso se popularizó a principios de la década de 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Variable global

Una variable global es, en informática, una variable accesible en todos los ámbitos de un programa informático. Los mecanismos de interacción con variables globales se denominan mecanismos de entorno global. El concepto de entorno global contrasta con el de entorno local donde todas las variables son locales sin memoria compartida (y por ello todas las iteraciones pueden restringirse al intercambio de mensajes).

El uso de este tipo de variables suele considerarse como una mala práctica, por el riesgo que conlleva esa deslocalización: una variable global puede ser modificada en cualquier parte del programa (a menos que resida en una sección de memoria protegida) y cualquier parte del programa depende de ella. Es por ello que una variable global tiene un potencial ilimitado para crear dependencias, factor éste que aumenta la complejidad. Sin embargo, en algunas ocasiones, las variables globales resultan muy útiles. Por ejemplo, se pueden usar para evitar tener que pasar variables usadas muy frecuentemente de forma continua entre diferentes subrutinas.

El uso de variables globales se desaconseja especialmente para lenguajes de programación funcionales (como puede ser Scheme). Viola la transparencia referencial y dificulta la legibilidad del código fuente.

Las variables globales se usan de forma frecuente para pasar información entre diferentes secciones del código que no comparten una relación de «función llamadora» – «función llamada», como ocurre con hilos concurrentes y módulos para el manejo de señales. Los lenguajes de programación donde cada archivo define un espacio de nombres implícito elminan la mayor parte de los problemas de los lenguajes con nombres de espacios globales, aunque pueda haber algunos problemas si no se tiene cuidado a la hora de encapsular el código. Sin las restricciones adecuadas (como por ejemplo con un mutex), el código que usa variables globales no será a prueba de hilos excepto para los valores de sólo lectura en la memoria protegida.

Trama de red

En redes, una trama es una unidad de envío de datos. Es una serie sucesiva de bits, organizados en forma cíclica, que transportan información y que permiten en la recepción extraer esta información. Viene a ser el equivalente de paquete de datos o Paquete de red, en el Nivel de red del modelo OSI.

Normalmente una trama constará de cabecera, datos y cola. En la cola suele estar algún chequeo de errores. En la cabecera habrá campos de control de protocolo. La parte de datos es la que quiera transmitir en nivel de comunicación superior, típicamente el Nivel de red.

Para delimitar una trama se pueden emplear cuatro métodos, el tracker:

  1. Por conteo de caracteres: al principio de la trama se pone el número de bytes que representa el principio y fin de las tramas. Habitualmente se emplean STX (Start of Transmission: ASCII #2) para empezar y ETX (End of Transmission: ASCII #3) para terminar. Si se quieren transmitir datos arbitrarios se recurre a secuencias de escape para distinguir los datos de los caracteres de control.
  2. Por secuencias de bits: en comunicaciones orientadas a bit, se puede emplear una secuencia de bits para indicar el principio y fin de una trama. Se suele emplear el «guion», 01111110, en transmisión siempre que aparezcan cinco unos seguidos se rellena con un cero; en recepción siempre que tras cinco unos aparezca un cero se elimina.
  3. Por violación del nivel físico: se trata de introducir una señal, o nivel de señal, que no se corresponda ni con un «1» ni con un «0». Por ejemplo si la codificación física es bipolar se puede usar el nivel de 0 voltios, o en Codificación Manchester se puede tener la señal a nivel alto o bajo durante todo el tiempo de bit (evitando la transición de niveles característica de este sistema).
  4. El estándar de facto evolucionó hacia varios estándares oficiales, como son:
    1. FR Forum (Asociación de Fabricantes): Cisco, DEC, Stratacom y Nortel.
    2. ANSI: fuente de normativas Frame-Relay.
    3. ITU-T: también dispone de normativa técnica de la tecnología Frame-Relay.