Miembros Estáticos en Java

Datos estáticos

Un dato estático es una variable miembro que no se asocia a un objeto (instancia) de una clase, sino que se asocia a la clase misma; no hay una copia del dato para cada objeto sino una sola copia que es compartida por todos los objetos de la clase.

Por ejemplo:
class Punto {
        int x, y;
        static int numPuntos = 0;

        Punto (int a, int b) {
                x = a;
                y = b;
                numPuntos ++;
        }
}
En el ejemplo numPuntos es un contador que se incrementa cada vez que se crea una instancia de la clase Punto.

Observese la forma en que se declara numPuntos, colocando el modificador static delante del tipo. La sintaxis general para declarar una variable es:
[modificadores]   tipo_variable   nombre;
static es un modificador. En los siguientes capítulos se irán viendo otros modificadores. Los [ ] en la expresión anterior quieren decir que los modificadores son opcionales.

El acceso a las variables estáticas desde fuera de la clase donde se definen se raliza a través del nombre de la clase y no del nombre del objeto como sucede con las variables miembro normales (no estáticas). En el ejemplo anterior puede escribirse:
int  x = Punto.numPuntos;
No obstante también es posible acceder a las variables estáticas a través de una referencia a un objeto de la clase. Por ejemplo:
Punto p = new Punto();
int  x = p.numPuntos;
Las variables estáticas de una clase existen, se inicializan y pueden usarse antes de que se cree ningún objeto de la clase.

Métodos estáticos

Para los métodos, la idea es la misma que para los datos: los métodos estáticos se asocian a una clase, no a una instancia.

Por ejemplo:
class Punto {
        int x, y;
        static int numPuntos = 0;

        Punto (int a, int b) {
                x = a;
                y = b;
                numPuntos ++;
        }

        static int cuantosPuntos () {
                return numPuntos;
}
La sintaxis general para la definición de los métodos es, por tanto, la siguiente:
[modificadores] Tipo_Valor_devuelto nombre_método (lista_argumentos) {
         bloque_de_codigo;
}
El aceso a los métodos estáticos se hace igual que a los datos estáticos, es decir, usando el nombre de la clase, en lugar de usar una referencia:
int  totalPuntos = Punto.cuantosPuntos ();
Dado que los métodos estáticos tienen sentido a nivel de clase y no a nivel de objeto (instancia) los métodos estáticos no pueden acceder a datos miembros que no sean estáticos.

El método main

Un programa Java se inicia proporcionando al intérprete Java un nombre de clase. La JVM carga en memoria la clase indicada e inicia su ejecución por un método estático que debe estar codificado en esa clase. El nombre de este método es main y debe declararse de la siguiente forma:
static void main (String[ ] args)
  • Es un método estático. Se aplica por tanto a la clase y no a una instancia en particular, lo que es conveniente puesto que en el momento de iniciar la ejecución todavía no se ha creado ninguna instancia de ninguna clase.
  • Recibe un argumento de tipo String [ ]. String es una clase que representa una cadena de caracteres ( se verá más adelante).
  • Los corchetes [ ] indican que se trata de un array que se verán en un capítulo posterior.
No es obligatorio que todas las clases declaren un método main . Sólo aquellos métodos que vayan a ser invocados directamente desde la línea de comandos de la JVM necesitan tenerlo. En la práctica la mayor parte de las clases no lo tienen.

Inicializadores estáticos

En ocasiones es necesario escribir código para inicializar los datos estáticos, quizá creando algún otro objeto de alguna clase o realizando algún tipo de control. El fragmento de código que realiza esta tarea se llama inicializador estático. Es un bloque de sentencias que no tiene nombre, ni recibe argumentos, ni devuelve valor. Simplemente se declara con el modificador static.

La forma de declarar el inicializador estático es:
static {bloque_codigo}
Por ejemplo:
class Punto {
        int x, y;
        static int numPuntos ;

        static {
                numPuntos = 0;
        }

        Punto (int a, int b) {
                x = a;
                y = b;
                numPuntos ++;
        }

        static int cuantosPuntos () {
                return numPuntos;
}
Nota: El ejemplo, una vez más, muestra sólo la sintaxis y forma de codificación. Es innecesario inicializar la variable tal como se verá más adelante. Además podría inicializarse directamente con: static int numPuntos = 0;

REFERENCIAS:arrakis

Cable Coaxial

1. Definición e historia

Es un cable usado para transportar señales eléctricas a altas frecuencias, que está formado por un conductor cilíndrico interno de cobre, llamado vivo, que es el que se encarga de llevar la información; el cual está rodeado por una capa tubular aislante (dieléctrico), que a su vez está rodeado por una pantalla metálica llamada malla, blindaje o trenza; los cuales finalmente tienen una funda exterior aislante llamada chaqueta.

Partes de un cable coaxial
El cable coaxial fue inventado y patentado en 1880 por el ingeniero y matemático Inglés Oliver Heaviside, quien estudió el llamado efecto piel en líneas de transmisión de telégrafo. Concluyó que envolver una carcasa alrededor de una línea de transmisión aumenta la claridad de la señal y mejora la durabilidad del cable. La denominación "coaxial", proviene del eje axial que comparten los conductores interno y externo. En 1931 Lloyd Espenschied y Herman Affel patentaron el primer cable coaxial reconocible en nombre de AT&T Bell Telephone Laboratories. Esta versión de cable coaxial fue el primero en presentar dos cables de transmisión que comparten el mismo eje, lo que permite un rango de frecuencias más amplio.

2. Construcción y materiales usados

La construcción de cables coaxiales varía mucho. La elección del diseño afecta al tamaño, flexibilidad y las propiedades eléctricas del cable. Un cable coaxial consta, como ya se mencionó líneas arriba, de un núcleo de hilo de cobre rodeado por un aislante (o dieléctrico), un apantallamiento o blindaje de metal trenzado y una cubierta externa.

El núcleo de un cable coaxial transporta señales electrónicas que constituyen la información. Este núcleo puede ser sólido (normalmente de cobre) o de hilos. Rodeando al núcleo existe una capa aislante dieléctrica que la separa de la malla de hilo. La malla de hilo trenzada actúa como masa, y protege al núcleo del ruido eléctrico y de la distorsión que proviene de los hilos adyacentes. El núcleo y la malla deben estar separados uno del otro. Si llegaran a tocarse, se produciría un cortocircuito, y el ruido o las señales que se encuentren perdidas en la malla, atravesarían el hilo de cobre.

El apantallamiento tiene que ver con el trenzado o malla de metal (u otro material) que rodea los cables. El apantallamiento protege los datos que se transmiten, absorbiendo el ruido, de forma que no pasa por el cable y no existe distorsión de datos. Al cable que contiene una lámina aislante y una capa de apantallamiento de metal trenzado se le llama cable apantallado doble. Para grandes interferencias, existe el apantallamiento cuádruple. Este apantallamiento consiste en dos láminas aislantes, y dos capas de apantallamiento de metal trenzado.

Los materiales usados comunmente para la fabricación de los cables coaxiales se listan en la tabla que se muestra a continuación. Cabe aclarar que los materiales de cada columna de la tabla pueden ser combinados con los de las otras columnas, es decir las filas no representan una combinación única.

Conductor central Aislante Conductor externo Cubierta externa
Cobre electrolítico Polietileno compacto Cobre Cloruro de polivinilo (PVC).
Cobre estañado Polietileno expandido Cobre estañado Polietileno
Acero cobreado Polietileno/aire Cobre plateado Materiales fluorados (Tefzel y Teflón FEP)

Tefzel Cinta de aluminio Poliuretano

Teflón FEP

3. Modo de funcionamiento

Las líneas para la transmisión a distancia de la voz humana, de señales de vídeo, de datos, etc., están constituidas por circuitos que transmiten ondas de tensión y de corriente con muy baja potencia y a frecuencia muy elevada. Los dos conductores, uno de ida y el otro de retorno, necesarios para la transmisión, constituyen el llamado "par".

Para la transmisión de las señales es indispensable confinar la señal y limitar las pérdidas que se verifican por irradiación todas las veces en que las frecuencias de las señales transmitidas sobrepasen centenares de kHz. El conductor externo, además de conductor de retorno cumple la función de blindaje (en los cables coaxiales los campos debidos a las corrientes que circulan por los conductores interno y externo se anulan mutuamente), con la consiguiente estabilización de los parámetros eléctricos. Además la malla de hilos absorbe las señales electrónicas perdidas, de forma que no afecten a los datos que se envían a través del cable interno. Por esta razón, el cable coaxial es una buena opción para grandes distancias y para soportar de forma fiable grandes cantidades de datos con un sistema sencillo. La onda se propaga principalmente en el modo transversal Electro- Magnético (TEM), lo que significa que los campos eléctricos y magnéticos son a la vez perpendiculares a la dirección de propagación.

Cable coaxial (Línea de transmisión)

Líneas de campo en el cable coaxial

4. Definiciones relativas a los cables coaxiales

  • Impedancia característica (ohm): Es la relación tensión aplicada/corriente absorbida por un cable coaxial de longitud infinita.

  • Impedancia de transferencia (Ohm/m): Define la eficiencia del blindaje del conductor externo. Cuanto más pequeño es el valor, mejor es el cable a los efectos de la propagación al exterior de la señal transmitida y de la penetración en el cable de las señales externas.

  • Capacidad (pf/m): Es el valor de la capacidad eléctrica, medida entre el conductor central y el conductor externo, dividido por la longitud del cable. Varía con el tipo de material aislante y con la geometría del cable.

  • Velocidad de propagación (%): Es la relación entre la velocidad de propagación de la señal en el cable y la velocidad de propagación de la luz.

  • Atenuación (dB/100 m): Es la pérdida de potencia, a una determinada frecuencia, expresada en decibelios cada 100 metros. Varía con el tipo de material empleado y con la geometría del cable, incrementándose al aumentar la frecuencia.

  • Potencia transmisible (W): Es la potencia que se puede transmitir a una determinada frecuencia sin que la temperatura del cable afecte el funcionamiento del mismo.

  • Tensión de trabajo (kV): Es la máxima tensión entre el conductor externo e interno a la cual puede trabajar constantemente el cable sin que se generen las nocivas consecuencias del "efecto corona" (descargas eléctricas parciales que provocan interferencias eléctricas y, a largo plazo, la degradación irreversible del aislante).

  • Structural return loss (S.R.L.): Son las pérdidas por retorno ocasionadas por desuniformidad en la construcción (variación de los parámetros dimensionales) y en los materiales empleados, que producen una variación localizada de impedancia, provocando un "rebote" de la señal con la consiguiente inversión parcial de la misma.

5. Tipos de cable coaxial

Existen múltiples tipos de cable coaxial, cada uno con un diámetro e impedancia diferentes. El cable coaxial no es habitualmente afectado por interferencias externas, y es capaz de lograr altas velocidades de transmisión de datos en largas distancias. Por esa razón, se utiliza en redes de comunicación de banda ancha (CATV) y cables de banda base (Ethernet).

El tipo de cable que se debe utilizar depende de la ubicación del cable. Los cables coaxiales pueden ser de dos tipos:

Segun material:

Policloruro de vinilo (PVC)

El policloruro de vinilo es un tipo de plástico utilizado para construir el aislante y la cubierta protectora del cable en la mayoría de los tipos de cable coaxial. El cable coaxial de PVC es flexible y se puede instalar fácilmente en cualquier lugar. Sin embargo, cuando se quema, desprende gases tóxicos. Es más dado a daño por corrosión en exteriores, para ello se emplean las cubiertas de polietileno.

Plenum

El plenum contiene materiales especiales en su aislamiento y en una clavija del cable. Estos materiales son resistentes al fuego y producen una mínima cantidad de humos tóxicos. Sin embargo, el cableado plenum es más caro y menos flexible que el PVC. 

Según características físicas:

Cable coaxial grueso (Thicknet)

Es el cable más utilizado en LAN´s, en un principio y aún hoy sigue usándose en determinadas circunstancias (alto grado de interferencias, distancias largas, etc.).

Corresponde al estándar RG-8/U. Los diámetros de su malla son 2,6/9,5 mm. Y el del total del cable de 0,4 pulgadas (aprox. 1 cm.). Como conector se emplea un transceptor ("transceiver") relativamente complejo, ya que su inserción en el cable implica una perforación hasta su núcleo (derivación del cable coaxial mediante un elemento tipo "vampiro" o "grifo").

Cable coaxial fino (Thinnet)

Corresponde al estándar RG-58. Surgió como alternativa al cable anterior, al ser más barato, flexible y fácil de instalar. Los diámetros de su malla son 1,2/4,4 mm, y el del cable sólo de 0,25 pulgadas (algo más de 0,5 cm.). Sin embargo, sus propiedades de transmisión (perdidas en empalmes y conexiones, distancia máxima de enlace, protección a interferencias, etc.) son sensiblemente peores que las del coaxial grueso. Con este coaxial fino se utilizan conectores BNC ("British National Connector") sencillos y de alta calidad. Ofrecen más seguridad que los de tipo "grifo", pero requieren un conocimiento previo de los puntos de conexión.

Hasta hace poco, era el medio de transmisión más común en las redes locales. El cable coaxial consiste en dos conductores concéntricos, separados por un dieléctrico y protegido del exterior por un aislante (similar al de las antenas de TV).

Existen distintos tipos de cable coaxial, según las redes o las necesidades de mayor protección o distancia. Este tipo de cable sólo lo utilizan las redes Ethernet.

6. Estándares

La especificación más difundida que rige la fabricación de los cables coaxiales es la norma militar del gobierno de los Estados Unidos MIL-C-17 que, además de las características dimensionales y eléctricas, define una sigla que identifica a cada tipo de cable.

Todos los cables coaxiales están definidos con las letras RG (radiofrecuencia - gobierno) seguida por un número (numeración progresiva del tipo) y de la letra U (especificación universal) o A/U, B/U, etc. que indican sucesivas modificaciones y sustituciones al tipo original. La siguiente tabla muestra algunos de los estándares más conocidos.

Tipo Impedancia (Ohm) Velocidad pF/m Diámetro exterior (mm) Dieléctrico
RG-5A 50 0.66 95 8.3 PE
RG-6A 75 0.75 66 8.5 Espuma PE
RG-11 75 0.66 67 10.7 PE

Pueden revisar una tabla con información más completa sobre el estándar RG en el siguiente enlace.

7. Aplicaciones

El cable coaxial transmite señales analógicas y digitales, por lo que se le puede encontrar en:
  • En las redes urbanas de televisión por cable e Internet.
  • Entre un emisor y su antena de emisión (equipos de radioaficionados).
  • En las líneas de distribución de señal de vídeo (se suele usar el RG-59).
  • En las redes de transmisión de datos como Ethernet en sus antiguas versiones 10BASE2 y 10BASE5.
  • En las redes telefónicas interurbanas y en los cables submarinos.
  • Para transmisión en banda ancha. Con una impedancia característica de 75 ohmios (RG-6/U). Utilizado en transmisión de señales de televisión por cable (CATV, "Cable Televisión").
  • Para transmisión en banda base. Con una impedancia característica de 50 ohmios (RG-8/U). Utilizado en LAN´s. Dentro de esta categoría, se emplean los tipos de cable: coaxial grueso ("thick") y coaxial fino ("thin").

REFERENCIAS:Wikipedia
The History of Coaxial Cable
Cables coaxiales
   Teoría electromagnética”, William H. Hayt Jr., John A. Buck. 2da Edición

Constructores en Java

Noción de constructor

Cuando se crea un objeto (se instancia una clase) es posible definir un proceso de inicialización que prepare el objeto para ser usado. Esta inicialización se lleva a cabo invocando un método especial denominado constructor. Esta invocación es implícita y se realiza automáticamente cuando se utiliza el operador new. Los constructores tienen algunas características especiales:
  • El nombre del constructor tiene que se igual al de la clase.
  • Puede recibir cualquier número de argumentos de cualquier tipo, como cualquier otro método.
  • No devuelve ningún valor (en su declaración no se declara ni siquiera void).
El constructor no es un miembro más de una clase. Sólo es invocado cuando se crea el objeto (con el operador new). No puede invocarse explicitamente en ningún otro momento.

Continuando con los ejemplos del capítulo anterior se podría escribir un constructor para la clase Punto, de la siguiente forma:
class Punto {
        int x, y;
        Punto (int a, int b) {
                x = a;
                y = b;
        }
}
Con este constructor se crearía un objeto de la clase Punto de la siguiente forma:
Punto p = new Punto(1, 2);

Constructor no-args.

Si una clase no declara ningún constructor, Java incorpora un constructor por defecto (denominado constructor no-args) que no recibe ningún argumento y no hace nada.

Si se declara algún constructor, entonces ya no se puede usar el constructor no-args. Es necesario usar el constructor declarado en la clase.

En el ejemplo el constructor no-args sería:
class Punto {
        int x, y;
        Punto ( ) { }
}

Sobrecarga de constructores.

Una clase puede definir varios constructores (un objeto puede inicializarse de varias formas). Para cada instanciación se usa el que coincide en número y tipo de argumentos. Si no hay ninguna coincidencia se produce un error en tiempo de compilación.

Por ejemplo:
class Punto {
        int x, y;
        Punto (int a, int b) {
                x = a;  y = b;
        }
        Punto ( ) {
                x = 0;  y = 0;
        }
}
En el ejemplo se definen dos constructores. El citado en el ejemplo anterior y un segundo que no recibe argumentos e inicializa las variables miembro a 0. (Nota: veremos más adelante que este tipo de inicialización es innecesario, pero para nuestro ejemplo sirve).

Desde un constructor puede invocarse explicitamente a otro constructor utilizando la palabra reservada this. this es una referencia al propio objeto. Cuando this es seguido por parénteses se entiende que se está invocando al constructor del objeto en cuestión. Más adelante veremos el uso más habitual de this. El ejemplo anterior puede reescribirse de la siguiente forma:
class Punto {
        int x, y;
        Punto (int a, int b) {
                x = a;  y = b;
        }
        Punto ( ) {
                this (0, 0);
        }
}
Cuando se declaran varios constructores para una misma clase estos deben distinguirse en la lista de argumentos, bien en el número, bien en el tipo.

Esta característica de definir métodos con el mismo nombre se denomina sobrecarga y es aplicable a cualquier método miembro de una clase como se verá más adelante.

REFERENCIAS:arrakis