Sintaxis y sentencias

Los elementos del léxico de un lenguaje de programación es el conjunto de símbolos, palabras reservadas y reglas de construcción que se utiliza para poder crear nuevas palabras dentro de un lenguaje de programación. Este conjunto de elementos se conocen como tokens. Básicamente son símbolos de puntuación y operadores, representaciones de números y textos, así como nombres que identifican variables de un programa incluyendo: clases, atributos, métodos y variables en el caso de Java.

Las sentencias declarativas o «declaraciones» le indican al compilador que existe algo que posteriormente podrá utilizarse dentro del programa. Entre ellas podemos mencionar:

  • Declaración de uso de librerías de clases
  • Declaración de Clases
  • Declaración de variables
  • Declaración de atributos
  • Declaración de métodos

También como parte de la ejecución de los métodos se cuenta con las siguientes «sentencias»:

  • Sentencias de asignación
  • Sentencias de estructura de control (if, if-else, switch, for, while, do-while)
  • Llamadas a métodos
  • Sentencias de manejo de excepciones (try-catch-finally)
  • Sentencias de terminación de bloques de instrucciones (return, break, continue)

Declaraciones

A continuación se muestra como realizar cada una de las declaraciones listadas previamente.

  • Uso de librerías de clases

    Se utiliza la palabra reservada «import» para indicar al compilador que se utilizará una clase no estándar, o que no se encuentra ubicada en el mismo directorio de compilación. Se basa en una estructura de directorios denominada «paquete» en Java. Si se incluyen más subdirectorios se agrega un punto para separarlos y al final se incluye el nombre de la clase que se utilizará o un asterisco para indicar que son todas las que están dentro de la clase:

    Uso de librerías de clases

    Ejemplos

    import java.util.Scanner; Clase para realizar la interpretación de cadenas desde un flujo de entrada
    import java.io.*; Todas las clases estándar relacionadas con entrada y salida de flujos de información.
    import java.swing.JButton; Uso de botones en interfaces de usuario de formulario.
    import java.swing.*; Uso de todas las clases incluidas para generar interfaces de usuario tipo formulario.
  • Declaración de clases

    La declaración de una clase se utiliza con la palabra reservada class seguida de un identificador de clase. Se inicia un bloque de instrucciones donde puede haber «declaraciones de atributos» y «métodos». En Java pueden declararse de forma intercalada. Sin embargo, se recomienda colocar juntos al inicio del bloque todos los atributos y posteriormente la declaración de los métodos para que queden en el mismo orden respecto al diagrama de clases.

    Declaración

    Identificadores

    Los «identificadores de clase» siguen las mismas reglas de nomenclatura que los identificadores y que estos sean sustantivos. Sin embargo se recomienda iniciar con mayúscula, no utilizar el símbolo de guión bajo y si hay más de una palabra separar cada una iniciando con mayúscula:

    Identificadores

    Por ejemplo: String, Scanner, Ecuacion, EcuacionSegundoGrado, Triangulo, …

    En contrarás más detalle en el material de Principios de la Programación Orientada a Objetos.

  • Variables

    Las variables son espacios de memoria temporal que permiten almacenar información. En Java debe indicarse el tipo de información que se almacenará: números, letras, objetos de una clase, etc. Durante su existencia en algún espacio del programa, estos reciben un nombre y existen durante la declaración que se hace dentro de un bloque de sentencias delimitado por los símbolos de llaves que abren y cierran “{“ y “}” o simplemente «ámbito». Estrictamente, las variables tienen un ámbito dentro de un método o una estructura.

    Los atributos están en el ámbito de la clase y son visibles o pueden ocuparse directamente dentro del código de la clase

    Los parámetros de un método no son atributos de la clase y sólo son visibles dentro del ámbito del método en el que se declara. También las variables locales declaradas en el cuerpo del método tienen este ámbito local.

    Las variables declaradas dentro de sentencias compuestas o estructuras for, tampoco son atributos ya que su ámbito es más reducido o fugaz.

    Respecto a las clases, pueden revisarse los materiales de Clases y Objetos , Codificación de Diagramas de Clase y Principios de la Programación Orientada a Objetos.

    Su nomenclatura del «identificador de atributo» es un nombre descriptivo de lo que almacenan, contiene letras, números y el símbolo de guión bajo (no se utilizan espacios). Si el identificador tiene varias palabras, se sugiere utilizar la «capitalización» (iniciar cada palabra con mayúscula y mantener el resto en minúsculas, iniciado con una letra minúscula):

    Por ejemplo: unaFigura, figura, estaActivo, estudiante, etc.

    En variables de una sola letra pueden utilizarse las del inicio del alfabeto para textos (a, b, c, …), las del centro para enteros, generalmente utilizados para operaciones de conteo (i, j, k, …) y las del final para variables numéricas que admiten punto decimal (x, y, z) y realizan recorridos en un intervalo de valores.

    La declaración de una variable va precedida por el identificador de tipo de datos que indica que tipo de información puede almacenar, puede ser un dato primitivo, una clase o una colección numerada de los elementos declarados (arreglo o array):

    Opcionalmente se puede dar un valor inicial a una variable y se pueden declarar varias variables del mismo tipo con la misma sentencia separándolas con comas.

    Ejemplos:

    int i=1; String nombre="Juan", apellidoPaterno="Perez", apellidoMaterno; boolean permiteContinuar=false;

    Las constantes son variables que se asignan una primera ocasión y posteriormente no pueden modificarse. Al declararse se agrega la palabra reservada final al iniciar la declaración y dejar la asignación del valor inicial dentro de la declaración.

    Constantes

    En la nomenclatura sugerida para el «identificador de constante» deben ir en mayúsculas y si cuentan con varias palabras se separan con guión bajo:

    Constantes

    Ejemplos:

    final double PI = 3.141592653;

    final int azulOficial = 0x002B7A, oroOficial = 0xD59F0F;

    final String[] dia = { "Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado" };

  • Atributos

    Los atributos son las variables que tienen el ámbito dentro de una clase, sus datos son accesibles desde cualquier parte del código de la clase. Adicionalmente, puede indicarse si son “visibles” desde el exterior de la clase, aunque por defecto la visibilidad de las declaraciones es pública, bajo el principio de encapsulamiento de la programación orientada a objetos se sugiere que sea «privada» o no accesible desde el exterior (private).

    Cada objeto de una clase una copia de todos los atributos, los cuales se conocen como “atributos de instancia”, a menos que se indique que es un elemento común para todos con la palabra “static” en cuyo caso se conocen como “atributos de clase”.

    El conjunto de atributos se conocen como el “estado del objeto” y es el conjunto de valores que almacena cada instancia en un determinado punto de la ejecución de un programa.

    Declaración

    Los atributos, también se conocen como «campos» o «fields» dentro de la documentación de Java, suelen ser sustantivos, siguen las mismas reglas de nomenclatura de las variables.

    Declaración

    Adicionalmente se sugiere que los atributos de instancia sean private (ocultos al exterior) o protected (ocultos al exterior pero accesibles directamente con sus subclases, ver Herencia y polimorfismo ) y dejar el acceso public únicamente a las constantes. Como recomendación, colocar sólo un atributo en cada declaración.

    Ejemplos:

    
                      {
                      public static double PI = 3.141592653; // Atributo público constante de clase
                      private String nombre; // atributo de clase, cada instancia tiene “nombre”
                      private int edad; // atributo de clase, cada instancia tiene “edad”
    
                      }
                      
  • Métodos

    Los métodos son definiciones de acciones que pueden realizar los objetos de una clase, el código realizado es común para todos los objetos.

    Se sugiere utilizar nombres que indiquen acciones o verbos. Siguen las mismas reglas de construcción que los atributos: utilizan letras y números, inician con minúscula y cada inicio de palabra posterior se capitaliza (la primera letra en mayúscula). Sin embargo, se agrega entre paréntesis la lista de argumentos que pueden utilizarse para comunicarse con el método, siempre se acompaña con los paréntesis aunque no haya parámetros para poder diferenciar los métodos de los atributos.

    Puede haber métodos con nombres iguales (sobrecarga) siempre que el número y tipo de los argumentos sea distinto para poder diferenciarlos.

    Declaración

    Los métodos se declaran con el tipo de acceso (visibilidad) que tienen; el cual puede ser public (por defecto), private o protected (pública dentro del mecanismo de herencia y privada hacia afuera). Siempre se sugiere declarar explícitamente el tipo de acceso. La descripción aparece en el siguiente diagrama sintáctico, se conoce como encabezado del método.

    Declaración

    Le siguen dos modificadores: static para indica que se trata de un método de clase (al cual puede utilizarse sin necesidad de una instancia) y final para indicar que no puede modificarse posteriormente en la línea de herencia. En su lugar puede utilizarse también abstract cuando se definen clases abstractas mediante el mecanismo de herencia, estos métodos deben definirse en las subclases para poder implementarse.

    El siguiente identificador que se puede colocar es el tipo de dato que regresa, el cual puede ser un dato primitivo o una clase; opcionalmente, pueden agregarse los corchetes cuadrados de apertura y cierre [] para indicar que se trata de una colección numerada o arreglo de elementos, similar a un subíndice. O bien, puede indicarse que es un método que no regresa un valor con la palabra void. Los métodos que regresan valores suelen llamarse «funciones» en otro tipo de lenguajes y los que no regresan valor como «procedimientos» o «subrutinas». Después aparecerá la «firma del método», que se integra por un identificador y entre paréntesis cero, uno o más argumentos o parámetros formales, que son variables que indican que tipo de información se puede enviar a los métodos para que hagan algo con ellos.