RSS

Declaración y control de acceso (V)

25 Abr

Declaración de un array

Los arrays se usan normalmente para agrupar objetos del mismo tipo. Permiten hacer referencia al grupo de objetos a través de un nombre común.

Es posible declarar arrays de cualquier tipo, ya sea de tipos primitivos o tipos de referencia.

En cualquier caso, un array en Java es un objeto incluso cuando esté compuesto de tipos primitivos.

Como en el caso de otros tipos de clase, la declaración del array no crea el objeto en sí. La declaración de un array crea una referencia al array. La memoria utilizada por los elementos del array se asigna de forma dinámica mediante una sentencia new o mediante el inicializador del array.

La sintaxis de declaración es:

tipoElementos [] nombreArray;
tipoElementos nombreArray [];

Las dos opciones son válidas. Aunque se suele recomendar los corchetes a la izquierda por ser más legible y porque éstos se aplican a todas las variables a la derecha de ellos.

int [] puntuacion, puntuacionMaxima; //Recomendada
int puntuacion[], puntuacionMaxima [];

En la declaración no se debe indicar el tamaño concreto del array, dará error de compilación. Veremos esto más adelante en la construcción e incialización de arrays.

Tipos Enumerados

Una práctica habitual en programación es tener un número finito de nombres simbólicos que representan los valores de un atributo.
Por ejemplo para representar los colores de un semáforo: ROJO, AMARILLO, VERDE.

A partir de la versión 5.0, Java SE incluye una modalidad de tipos enumerados que mantiene la seguridad de los tipos.

Veamos un ejemplo de declaración:

public class Semaforo {
enum ColorSemaforo{
 ROJO,
 AMARILLO,
 VERDE
 };// el punto y coma es opcional en la declaracion de enums.
 ...

Habría que pensar en el tipo Semaforo como en una clase con un conjunto finito de valores que reciben los nombres simbólicos incluidos en la definición del tipo. Los valores serían realmente instancias de esa clase. El compilador no permitirá que pueda asignarse otro valor diferente a los especificados.

El orden en el que definamos los valores importa, pero se verá más adelante

ColorSemaforo colorActual = ColorSemaforo.VERDE; // VERDE es de tipo ColorSemaforo
ColorSemaforo colorIncorrecto = ColorSemaforo.AZUL; //provocará error de compilación.

Los tipos enumerados pueden declararse como miembro de una clase, como una clase aparte, pero nunca dentro de un método.

Declarando constructores, variables y métodos en un Tipo Enumerado

La nueva modalidad de tipos enumerados permite usar atributos y métodos, igual que en otras clases.
Un constructor enum siempre debería usar acceso privado. Los argumentos del constructor se suministran después de cada valor declarado. Los tipos enumerados pueden tener cualquier cantidad de atributos y métodos.

Para nuestro ejemplo, definamos un atributo nombreColor con un literal más amigable que las mayúsculas y un atributo segundosColor que indicará el tiempo en segundos que está activado cada color.

//Argumentos para el constructor en la declaración
public enum ColorSemaforo{
ROJO ("Rojo", 60),
AMARILLO ("Amarillo", 25),
VERDE ("Verde", 45); //Se requiere el punto y coma cuando hay
 //mas código en la definición del enum

private String nombreColor; //atributos
private int segundosColor; // atributos

//Constructor
private ColorSemaforo (String nombreColor, int segundosColor){
 this.nombreColor = nombreColor;
 this.segundosColor = segundosColor;
}

//Métodos getters
public String getNombreColor(){
 return nombreColor;
}
public int getSegundosColor(){
 return segundosColor;
}
}

Recordaremos de los constructores de tipos enumerados:

  • No se puede invocar un constructor de un enum directamente. Se llama automáticamente cuando especificamos los argumentos en la declaración de los valores del tipo enumerado.
  • Se puede definir más de un argumento para el constructor y se puede sobrecargar los constructores.
Anuncios
 
3 comentarios

Publicado por en 25 abril, 2011 en Estudio, Tema 1

 

Etiquetas: , , ,

3 Respuestas a “Declaración y control de acceso (V)

  1. PalituxD

    5 noviembre, 2013 at 8:44 pm

    Estimado Alejandro. en cuanto a Los método y variables estáticas.
    “NO se pueden etiquetar como static Constructores, Clases, Interfaces, Método local en una clase anidada, Métodos y variables de instancia en clases anidadas y Variables locales.”

    Se puede etiquetar como static los métodos, atributos siempre y cuando la clase anidada sea estática.

     
  2. Jose Liza

    26 octubre, 2013 at 4:18 am

    Que buen aporte Alejandro Malaver. Gracias

     
  3. Alejandro Malaver

    1 junio, 2012 at 6:40 pm

    Hola Virginia.
    Esta vez no solo quise complementar tu info, si no que además quise realizar un recorderis de temas importantes en este capítulo.

    Declaración de Arreglos.

    También podemos definir arreglos multidimensionales, los cuales
    efectivamente son arreglos de arreglos. Podemos hacerlo de la siguiente
    manera:
    String[][][] occupantName;
    String[] ManagerName [];

    Variables finales.

    • Una variable final no puede recibir un valor una vez que ha sido inicializada con un valor explícito.
    • Una variable de referencia final nunca puede hacer referencia a un objeto diferente al primero que le fue asignado. Los datos del objeto referenciado si pueden ser modificados.
    • No hay objetos finales, solo referencias finales.

    Variables transitorias.

    • Al etiquetar una variable como transient, le dice a la JVM que ignore la variable al serializar el objeto que la contiene.
    • La serialización permite “apachurrar” el estado de un objeto para almacenarlo en un stream, que puede ser enviado a un archivo, o por red, para ser restaurado posteriormente.

    Variables volátiles.

    El indicador volatile le dice a la JVM que un hilo que acceda a la variable siempre debe reconciliar su propia copia privada de la variable con la copia maestra en memoria…
    Un poco confuso, pero en el examen solo debe saber que volatile tal como transient, puede ser aplicado solamente a las variables de instancia.

    Métodos y variables estáticas.

    • Se utiliza para crear métodos y variables que existirán independientemente de cualquier instancia creada para la clase.
    • Los miembros estáticos existen antes de crear cualquier nueva instancia.
    • Sólo existe una copia del miembro estático para cada clase.
    • Se pueden etiquetar como static Métodos, Variables, Una clase anidada dentro de otra clase, pero no dentro de otro
    método, Bloques de inicialización.
    • NO se pueden etiquetar como static Constructores, Clases, Interfaces, Método local en una clase anidada, Métodos y variables de instancia en clases anidadas y Variables locales.

    Declaración de Enums.

    • No es necesario que los valores estén en mayúscula.
    • El componente básico de un Enum es su constante (SMALL, MEDIUM, BIG), aunque… hay mas…

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: