SlideShare a Scribd company logo
1 of 163
Download to read offline
UNIVERSIDAD DE CÓRDOBA

         ESCUELA POLITÉCNICA SUPERIOR

DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO




       INTRODUCCIÓN A JAVA

             INGENIERÍA INFORMÁTICA
         PRIMER CURSO DE SEGUNDO CICLO
             SEGUNDO CUATRIMESTRE
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA



                                Observación
   •   Este documento es una adaptación del documento
        o “Resumen de JAVA para programadores de C y C++” de
          Alejandro Castán
        o que está disponible en
                     http://www.xtec.net/~acastan/textos/Java.pdf
   •   Se otorga el permiso para copiar, distribuir o modificar este
       documento bajo los términos de la licencia de documentación libre
       GNU, versión 1.2 o cualquier otra versión posterior publicada por la
       Free Software Foundation.
   •   Puedes consultar dicha licencia en
            http://www.gnu.org/copyleft/fdl.html.




                                                                                   2
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA



                            Índice (1/2)
   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …
                                                                        3
PROCESADORES DE LENGUAJES                  INTRODUCCIÓN A JAVA



                            Índice (2/2)
   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   19.INTERFACES
   20.APPLETS
   21.EXCEPCIONES


                                                                 4
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                        5
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   1. CARATERÍSTICAS BÁSICAS DE JAVA
   •   Sintaxis similar a C y C++
        o pero sin punteros: la gestión de la memoria dinámica es
          automática
   •   Interpretado
        o Un programa (.java) se compila a código bytecode (.class)
        o El código bytecode lo interpreta una máquina virtual de Java.
   •   Multiplataforma
        •   El programa de java se compila una única vez
        •   El fichero de bytecode se ejecuta igual en la máquina virtual de
            Java de cualquier plataforma.
   •   Seguro:
        •   La máquina virtual de Java impide que el programa intente
            ejecutar operaciones no permitidas sobre los recursos del
            sistema.
                                                                                    6
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   •   Utilidades de la línea de comandos:
        o Compilar
            javac [-classpath camino] [-d carpeta] [-g] nombre.java
        o Ejecutar
            java [-classpath camino] nombre_clase argumentos
        o Ejecutar applet
            appletviewer url
        •   Depurar
            jdb nombre_clase
        •   Documentación
            javadoc [-classpath camino] [-d carpeta] nombre.java



                                                                                     7
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                        8
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   2. COMENTARIOS
   •   Comentarios de varias líneas (similares a los de C y C++)
        /* Ejemplo
          maravilloso de comentario
          con varias líneas */


   •   Comentarios de una línea (similares a los del lenguaje C++)
       // Ejemplo maravilloso de comentario de una línea


   •   Comentarios de Javadoc (similares a los de doxygen)
                 /** Comentarios que generan
                  documentación automática */



                                                                                     9
PROCESADORES DE LENGUAJES                                  INTRODUCCIÓN A JAVA


   2. COMENTARIOS
   •   Más sobre sobre los comentarios que generan documentación
        o Pueden incluir etiquetas HTML
            <code> texto /code>
        o y etiquetas @ de campos de información
            @author
            @version
            @see
            @param
            @return
            @throws
            …



                                                                             10
PROCESADORES DE LENGUAJES                                                         INTRODUCCIÓN A JAVA


   2. COMENTARIOS
       /** Clase <code>Universidad</code>
            * Contiene una lista de alumnos.
            * @author Nombre
            * @version 1.0
           */
       public class Universidad {
           /** Alumnos de la universidad */
                public Vector alumnos;
                /** Método que añade un nuevo alumno a la universidad
                * @param a Alumno a añadir
                * @return Número de alumnos de la universidad
                * @throws UniversidadException Si el alumno a añadir ya existía
                */
                public int añadir(Alumno a) throws UniversidadException {
                ...
                }
       }                                                                                            11
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                    12
PROCESADORES DE LENGUAJES         INTRODUCCIÓN A JAVA


   3. DECLARACIÓN DE CONSTANTES




                                                    13
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                    14
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   4. DECLARACIÓN DE CONSTANTES
   •   Constante
        o La declaración contiene la palabra final delante:
            final <tipo_datos> <nombre_constante> = <valor>;
        o Ejemplo:
            final int MAX_ELEM = 20;
   •   Tipo enumerado (desde la versión de Java 1.5.0)
        o Java crea una nueva clase (puede tener campos y métodos)
        o Sintaxis (versión más simple):
           enum <nombre_enumeracion>
                   {<nombre_constante>, ..., <nombre_constante> }
        o Ejemplo:
            enum Estacion { PRIMAVERA, VERANO, OTOÑO, INVIERNO }
            Estacion a = Estacion.VERANO;
                                                                                 15
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                    16
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   •   Sintaxis (similar a C y C++):
            <tipo_datos> <nombre_variable>;


   •   Características del nombre de una variable
        o Empieza por una letra, _ o $
        o Puede ir seguido por cualquier carácter unicode (incluidas
          vocales con acentos y letras de otros alfabetos).
        o Distingue mayúsculas de minúsculas


   •   Tipos de datos simples (no son clases):
        <tipo_datos_simple> <nombre_variable> [= <valor>];
        o Ejemplo:
            int i = 0;
                                                                               17
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   •   Tipos de datos simples (no son clases):
           Tipo      Tamaño           Rango
        o byte:      8 bits           –128 .. 127
        o short :    16 bits          -32.768 .. 32.767
        o int:       32 bits          -2.147.483.648 .. 2.147.483.647
        o long:      64 bits
            -9.223.372.036.854.775.808 .. 9.223.372.036.854.775.807
        o float:     32 bits          -3.4x10 38 .. 3.4x10 38
                                               (mínimo 1.4x10 –45)
        o double:    64 bits          -1.8x10308 .. 1.8x10308
                                              (mínimo 4.9x10-324)
        o boolean:                    true o false
        o char:      16 bits          unicode
                                                                               18
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA


   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   •   Tipos de datos compuestos (son clases):
        o String
        o Vectores y matrices
        o Colecciones,
        o Clases
        o wrappers/envolventes
        <tipo_datos_compuesto> <nombre_variable> =
                                new <tipo_datos> (<valor_inicial>);
   •   Ejemplos
            int v[] = new int[100]; // Tipo compuesto vector
            String s = new String("Hola"); // Tipo compuesto String
            // Tipo compuesto Integer (wrapper del tipo int)
            Integer n = new Integer(10);
                                                                                  19
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   •   Ejemplos de conversión


       int i = Integer.parseInt("12"); // cadena caracteres a entero
       float f = Float.parseFloat("1.15"); // cadena caracteres a real
       String s1 = new Float(f).toString(); // real a cadena caracteres
       String s2 = new Integer(i).toString(); // entero a cadena caracteres


       // más fácil: números a cadena caracteres
       String s3 = "Números:" + i + " y " + f;


       i = (int) f; // convertir real a entero
       f = i; // convertir entero a real

                                                                                 20
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. DECLARACIÓN DE CONSTANTES
   4. PALABRAS CLAVES Y PALABRAS RESERVADAS
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                    21
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   6. EL TIPO DE DATOS CADENA DE CARACTERES
   •   String: tipo de datos cadena de caracteres
            String <nombre_variable> [= "<cadena de caracteres>"];


   •   Ejemplos:
           String s1 = "hola";
           String s2 = "adios";
           String s3 = s1 + " y " + s2 + " : " + 2004;




                                                                              22
PROCESADORES DE LENGUAJES                                          INTRODUCCIÓN A JAVA


   6. EL TIPO DE DATOS CADENA DE CARACTERES
   •   Atributos y métodos más importantes:
       string1.equals(string2) // Compara dos strings
       string1.clone() // crea una copia de un string


       string1.charAt(posicion) // retorna el carácter en una posición
       string1.concat(string2) // concatena dos strings
       string1.indexOF(caracter, posicion) // devuelve la posición de un carácter
       string1.length() // devuelve la longitud del string


       string1.replace(caracter1, caracter2) // reemplaza un carácter por otro
       string1.substring(posicion1, posicion2) // extrae una porción del string
       string1.toLowerCase() // convierte el string a minúsculas
       string1.toUpperCase() // convierte el string a mayúsculas
       string1.valueOf(numero) // convierte un número a string                       23
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                    24
PROCESADORES DE LENGUAJES                                        INTRODUCCIÓN A JAVA


   7. LOS TIPOS DE DATOS ENVOLVENTES
   •   Existe una clase equivalente para cada tipo de dato simple
            Tipo Simple                 Clase Equivalente
            byte, short, int, long      Number, Byte, Short, Integer, Long
            float, double               Number, Float, Double
            boolean                     Boolean
            char                        Character
        o Estas clases poseen constantes y métodos que pueden ser útiles


   •   Ejemplos:
            int i = 4; // "i" es una variable entera (tipo simple)


            // "j" es un objeto de la clase Integer (envolvente)
            Integer j = new Integer(5);
                                                                                   25
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                    26
PROCESADORES DE LENGUAJES                                INTRODUCCIÓN A JAVA


   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   •   Sintaxis similar a C y C++
        o Se indexa con [ ]
        o El primer elemento está en la posición 0
   •   Deferencias con C y C++
        o El número de elementos se declara dinámicamente con new
        o Se puede obtener su longitud con length




                                                                           27
PROCESADORES DE LENGUAJES                                  INTRODUCCIÓN A JAVA


   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   •   Declaración
        o Una dimensión:
           <tipo_datos> <nombre_array>[];
           <nombre_array> = new <tipo_datos>[<num_elementos>];
        o Varias dimensiones:
            <tipo_datos> <nombre_array>[][]...[] ;
            <nombre_array> = new <tipo_datos> [<n1]...[<nk>];




                                                                             28
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   •   Ejemplos:


       float v[] = new float[10]; // Una dimensión con 10 elementos
       float m[][]= new float[3][4]; // Dos dimensiones con 3x4 elementos
       // Una dimensión con dos elementos inicializados
       String s[] = {"hola", "adios"};


       for (int i = 0; i < v.length; i++)
             v[i] = i;


       for (int i = 0; i < m.length; i++)
             for (int j = 0; j < m[i].length; j++)
                         m[i][j] = 0;
                                                                               29
PROCESADORES DE LENGUAJES                          INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES, Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                     30
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   9. LAS COLECCIONES
   •   Proporcionadas por la API (Interfaz de Programación de Aplicaciones)
       de Java
        o List
        o ArrayList
        o Vector
        o Set
        o Map
        …
   •   Características
        o No forman parte del lenguaje original
        o Son clases definidas en el paquete java.util



                                                                               31
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   9. LAS COLECCIONES


   •   Ejemplo:
       ArrayList<Alumno> miclase = new ArrayList<Alumno>();


       miclase.add( new Alumno("Pepe", 5.0) );
       miclase.add( new Alumno("Alex", 4.2) );
       miclase.add( new Alumno("Pepa", 6.3) );


       for (Iterator i = miclase.iterator(); i.hasNext(); )
       {
           System.out.println( i.next() );
       }

                                                                                32
PROCESADORES DE LENGUAJES                          INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES, Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                     33
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   10.CÓDIGO


   •   Java utiliza la misma sintaxis que C y C++:
        o Una instrucción
                puede ocupar varias líneas
                acaba en punto y coma: “;”
                     instrucción;
        o Los bloques de instrucciones van entre llaves “{“ “}”:
                 {
                     instrucción1;
                     instrucción2;
                     ...
                 }

                                                                                34
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   1. CARACTERÍSTICAS BÁSICAS DE JAVA
   2. COMENTARIOS
   3. PALABRAS CLAVES Y PALABRAS RESERVADAS
   4. DECLARACIÓN DE CONSTANTES
   5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS
   6. EL TIPO DE DATOS CADENA DE CARACTERES
   7. LOS TIPOS DE DATOS ENVOLVENTES
   8. LOS TIPOS DE DATOS VECTOR Y MATRIZ
   9. LAS COLECCIONES
   10.CÓDIGO
   11.EXPRESIONES Y OPERADORES
   …



                                                                    35
PROCESADORES DE LENGUAJES                                INTRODUCCIÓN A JAVA


   11.Java utiliza los mismos operadores que C y C++:


   •   Java utiliza los mismos operadores que C y C++:
        o Asignación:
               =
        o Aritméticos:
               ++, --, +, -, *, /, %
        o Relacionales:
               ==, !=, <, <=, >, >=, !, &&, ||, ?:
        o Bits:
               &, |, ^, ~, <<, >>, >>>
        o Conversión:
               (tipo)

                                                                           36
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                          37
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   •   Sentencias de control del flujo de ejecución (igual que en C y C++):
        o Condicional simple y compuesta: if … else
        o Condicional múltiple: switch
        o Iterativa con condición inicial: while
        o Iterativa final condición final: do…while
        o Repetitiva: for
        o Otras
               break;
               continue;
               label:
               return <valor>;
               exit;

                                                                                38
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   •   Condicional simple y compuesta
                if (condición) {
                                   instrucciones;
                       }
                [else {
                                   instrucciones;
                       }]

        Ejemplo:
                if (a != 0) {
                       System.out.println("x = " + -a/b);
                       }
                   else {
                       System.out.println("Error");
                       }
                                                                              39
PROCESADORES DE LENGUAJES                           INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   •   Condicional múltiple


                switch (expresión) {
                     case <valor>: instrucciones;
                              [break;]
                     case <valor>: instrucciones;
                              [break;]
                     ...
                     [default: instrucciones;]
                     }




                                                                      40
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   •   Condicional múltiple
        o Ejemplo


            switch (opcion) {
                     case 1: x = x * Math.sqrt(y);
                                break;
                     case 2:
                     case 3: x = x / Math.log(y);
                                break;
                     default: System.out.println("Error");
            }



                                                                               41
PROCESADORES DE LENGUAJES                         INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   •   Iterativa con condición inicial:
            while (condición)
             {
                 instrucciones;
            }


        o Ejemplo
            i = 0;
            while (i < 10)
            {
                      System.out.println(v[i]);
                      i++;
            }
                                                                    42
PROCESADORES DE LENGUAJES                        INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   •   Iterativa con condición final:
             do {
               instrucciones;
            } while (condición)




        o Ejemplo
            i = 0;
            do {
                     System.out.println(v[i]);
                     i++;
            } while (i < 10)

                                                                   43
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   •   Repetitiva
                for (inicialización; comparación; incremento)
                {
                     instrucciones;
                }


        o Ejemplo:
                for (i = 0; i < 10; i++)
                {
                     System.out.println(v[i]);
                }



                                                                                  44
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   •   Repetitiva:
        o Nuevo for (desde Java 1.5.0)


                int primeros_primos[] = {1, 2, 3, 5, 7,11};


                for (int j : primeros_primos)
                     System.out.println(j);




                                                                                45
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                          46
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   13.LIBRERÍAS


   •   Creación de clases dentro de una librería
        o Al principio del fichero de la clase, se debe escribir la librería
          dónde se insertará la clase:
                  package carpeta.subcarpeta. …;


   •   Para utilizar código de otro fichero:
                import carpeta.subcarpeta. … .clase;


        o Ejemplo:
                  import java.lang.Math;
                  import java.io.*;


                                                                               47
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   13.LIBRERÍAS
   •   Librería más comunes
       o   java.lang
               Clases básicas o fundamentales del lenguaje
       o java.awt
               Permite definir interfaces gráficas
       o java.io
               Entrada/salida de datos
       o java.net
               Comunicación por red
       o java.applet
               Declaración de applets
       o java.util
               Colecciones, eventos, fecha, hora, etc.
                                                                               48
PROCESADORES DE LENGUAJES                                  INTRODUCCIÓN A JAVA


   13.LIBRERÍAS
   •   Otras librerías
        o   java.beans
                Clases de la arquitectura JavaBeans
        o java.math
                Operaciones matemáticas.
        o java.nio
                Define buffers (contenedores de datos) y proporciona un
                acceso a otros paquetes de NIO (New Input / Output).
        o java.rmi
                El paquete RMI (Remote Method Invocation) permite acceder
                a datos o métotos “remotos”.
        o java.security
                Permite el control de seguridad.
                                                                             49
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   13.LIBRERÍAS
   •   Otras librerías
        o java.sql
                API para acceder y procesar bases de datos
        o java.text
                Maneja texto, fechas, números y mensajes independientes
                del lenguaje natural
        o javax.accessibility
                Favorece el acceso a componentes de la interfaz del usuario.
        o javax.crypto
                Permite realizar peraciones criptográficas.
        o javax.imageio
                Paquete principal para procesar entrada y salida de
                imágenes.
                                                                                50
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   13.LIBRERÍAS
   •   Otras librerías: extensiones estándares de Java


        o javax.management                o javax.sql
        o javax.naming                    o javax.swing
        o javax.print                     o javax.xml
        o javax.rmi                       o org.ietf.jgss
        o javax.security.auth             o org.omg.CORBA
        o javax.sound.midi                o org.w3c.dom
        o javax.sound.sampled             o org.xml.sax




                                                                              51
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                          52
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   14.ENTRADA Y SALIDA POR PANTALLA
   •   Lectura desde el teclado
        o Sólo se pueden leer líneas de texto, que después deben ser
          convertidas al tipo correspondiente:
           BufferedReader in =
                 new BufferedReader(new InputStreamReader(System.in));
            String s = in.readLine();
            int i = Integer.parseInt(in.readLine());


   •   Lectura más fácil con la clase java.util.Scanner (desde Java 1.5.0)
            Scanner in = new Scanner(System.in);
            String s = in.next();
            int i = in.nextInt();
            in.close();
                                                                                 53
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   14.ENTRADA Y SALIDA POR PANTALLA
   •   Escritura en la pantalla
        o Se concatenan cadenas de caracteres y variables en un único
          String:
            System.out.println("Hola " + s + i);


        o También se puede escribir texto formateado al estilo de C (desde
          la versión 1.5.0 de Java)
            System.out.printf("Hola %s %5d", s, i);




                                                                              54
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                          55
PROCESADORES DE LENGUAJES                               INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS


   • Multitud de clases para trabajar con entrada y salida de datos:
       o Clases para acceder directamente a los dispositivos:
               Teclado
               Pantalla
               Ficheros
               …
       o Clases para filtrar, acumular o comprimir los datos.




                                                                          56
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Byte Input Stream
       o InputStream:
               La superclase de todos las clases “byte input streams”.


       o BufferedInputStream                     o InflaterInputStream
       o ByteArrayInputStream                    o LineNumberReader
       o CheckedInputStream                      o ObjectInputStream
       o DataInputStream                         o PipedInputStream
       o FileInputStream                         o PushbackInputStream
       o FilterInputStream                       o SequenceInputStream
       o GZIPInputStream                         o StringBufferInputStream



                                                                                57
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Character (unicode) Input Stream
       o BufferedReader
       o CharArrayReader
       o FileReader
       o FilterReader
               La superclase de todas las clases “character input stream
               filter”.
       o InputStreamReader
       o LineNumberReader
       o PipedReader
       o PushbackReader
       o Reader
               La superclase de todas las clases “character input streams”
                                                                               58
       o StringReader
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS


   •   Byte Output Stream (1/2)
        o BufferedOutputStream
        o ByteArrayOutputStream
        o CheckedOutputStream.
        o DataOutputStream
        o DeflaterOutputStream
               Superclase de GZIPOutputStream y ZipOutputStream.
        o FileOutputStream
        o FilterOutputStream
               Superclase de todas las clases “byte output stream filters”.



                                                                                59
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS


   •    Byte Output Stream (2/2)
       o GZIPOutputStream
       o ObjectOutputStream
       o OutputStream
               Superclase de todas las clases “byte output streams”.
       o PipedOutputStream
       o PrintStream
       o ZipOutputStream




                                                                               60
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Character (unicode) Output Stream
        o BufferedWriter
        o CharArrayWriter
        o FileWriter
        o FilterWriter
            o La superclase de todas las clases “character output streams
              filters”.
        o OutputStreamWriter
        o PipedWriter
        o PrintWriter
        o StringWriter
        o Writer
            o La superclase de todas las clase “character output streams”.
                                                                              61
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Ejemplo 1
       •   Trabajar con ficheros binarios de datos “crudos” (imágenes,
           ...):


            int c;
            FileInputStream fichero1 = new FileInputStream("entrada");
            FileOutputStream fichero2 = new FileOutputStream("salida");
            while ((c = fichero1.read()) != -1)
             {
                 fichero2.write(c);
            }
            fichero1.close();
            fichero2.close();
                                                                              62
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Ejemplo 2
       •   Trabajar con ficheros binarios de tipos simples (int, float, ...) y
           acceso directo:


       RandomAccessFile fichero1= new RandomAccessFile("radio", "r");
       RandomAccessFile fichero2= new RandomAccessFile("perimetro", "w");
       try {
           while (true) {
                     fichero2.writeFloat( 2 * 3.1416 * fichero1.readFloat() );
           }
           catch (EOFException e) {
                     fichero1.close();
                     fichero2.close();
                                                                                 63
       }
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Ejemplo 3
       •   Trabajar con ficheros de texto:
            String salario;
            FileReader          fichero1 = new FileReader("salarios.txt");
            FileWriter          fichero2 = new FileWriter("salarios.new");
            BufferedReader in = new BufferedReader(fichero1);
            BufferedWriter out = new BufferedWriter(fichero2);
            while ((salario = in.readLine()) != null) {
                salario = (new Integer(Integer.parseInt(salario)*10).toString();
                out.write(salario);
            }
            fichero1.close();
            fichero2.close();
                                                                                   64
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Ejemplo 4 (1/2)
        •   Guardar y recuperar objetos (serialización):
             class Alumno implements Serializable {
                 private String nom;
                 private String id;
                 private int edad;
                 private transient double nota;
                 ...
             }
             class Grupo implements Serializable {
                 private Alumno [] alumnos = new Alumno[20];
                 ...
             }
                                                                                 65
PROCESADORES DE LENGUAJES                                          INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Ejemplo 4 (2/2)
        •     Guardar y recuperar objetos (serialización):
        Grupo a1 = new Grupo();
        a1.insertar(new Alumno("Pepe", "43510987F", 25, 8.5));
        a1.insertar(new Alumno("Pepa", "65471234H", 18, 9.3));
        ...
        ObjectOutputStream out =
               new ObjectOutputStream(new FileOutputStream("grupoA1"));
        out.writeObject(a1);
        out.close();
        Grupo a2 = new Grupo();
        ObjectInputStream in =
              new ObjectInputStream(new FileInputStream("grupoA1"));
        a2 = (Grupo) in.readObject();
        in.close();                                                                  66
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Obtener información de ficheros y directorios (1/2)
        o Métodos de la clase File para extraer cualquier tipo de información:
               canRead                            mkdirs
               canWrite                           setReadOnly
               exists                             getName
               isHidden                           getPath
               isDirectory                         toURL
               isFile                             length
                createNewFile                     lastModified,
               createTempFile                     list
               delete                             listFiles
               renameTo                           ....

                                                                                 67
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   15.ENTRADA Y SALIDA POR FICHEROS
   •   Obtener información de ficheros y directorios (2/2):
        o Ejemplo


            File raiz = new File(“./");
            String [] dir = raiz.list();


            for (i = 0; i < dir.length; i++)
               System.out.println(dir[i]);




                                                                                68
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                          69
PROCESADORES DE LENGUAJES                                 INTRODUCCIÓN A JAVA


   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   •   Programa principal en una clase Java:


            class <Nombre>
            {
                public static void main (String[] args)
                {
                     instrucciones;
                }
            }




                                                                            70
PROCESADORES DE LENGUAJES                                          INTRODUCCIÓN A JAVA


   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   •   Programa principal en una clase Java:
        o Ejemplo
            // Imprime una palabra (primer argumento)
            // un número determinado de veces (segundo argumento)
            class Mensaje {
                public static void main(String [] args) {
                    if (args.lenght == 2) {
                      for (int i = 1; i <= Integer.parseInt(args[1]); i++) {
                               System.out.println(args[0] + " : " + i);
                      }
                }
            }

                                                                                     71
PROCESADORES DE LENGUAJES                      INTRODUCCIÓN A JAVA


   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   •   Programa principal en un applet Java:


            class <Nombre> extends Applet
            {
                public void init()
                {
                     instrucciones;
                }
            }




                                                                 72
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   •   Programa principal en un applet Java:
        o Ejemplo
            import java.awt.*;
            import java.applet.*;


            public class HolaMundoApplet extends Applet {
                public void init() {
                      repaint();
                }
            public void paint(Graphics g) {
                      g.drawString("Hola Mundo!", 25, 25);
                }
            }
                                                                               73
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   •   Programa principal en un applet Java:
        o Ejemplo
               Insertar en una página web HTML el applet:
            <html>
               <body>
                      <applet code="HolaMundoApplet“
                             width=300
                              height=50>
                      </applet>
               </body>
            </html>



                                                                              74
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                          75
PROCESADORES DE LENGUAJES                                           INTRODUCCIÓN A JAVA


   17.CLASES
       class <Nombre> [extends <Nombre_clase_padre>]
       { // declaración de atributos
            visibilidad [modificadores] tipo atributo1 [= valor];
            visibilidad [modificadores] tipo atributo2 [= valor];
            ...
            // declaración de métodos
            visibilidad [modificadores] tipo metodo1(argumentos) {
                  instrucciones;
            }
            visibilidad [modificadores] tipo metodo2(argumentos) {
                       instrucciones;
            }
            ...
   }                                                                                  76
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   17.CLASES
   •   Donde:
       o visibilidad:
                public
                protected
                private
       o modificadores
                final
                static
                abstract
       o argumentos
                declaración de variables separadas por comas



                                                                                 77
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA


   17.CLASES
   •   Ejemplo (1/2)
            class Complejo
            {
                private double re, im;
                public Complejo(double re, double im) {
                    this.re = re;
                    this.im = im;
                }
                public String toString() {
                    return (new String(re + "+" + im + "i"));
                }
        …

                                                                                  78
PROCESADORES DE LENGUAJES                                INTRODUCCIÓN A JAVA


   17.CLASES
   •   Ejemplo (2/2)
       …
            public boolean equals(Complejo v) {
                return ((re == v.re) && (im == v.im));
            }
            public double modulo() {
                return (Math.sqrt(re*re + im*im));
            }
            public void suma(Complejo v) {
                re = re + v.re;
                im = im + v.im;
            }
       } // Fin de la clase Complejo
                                                                           79
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   17.CLASES
   •   Número variable de argumentos (desde la versión 1.5.0 de Java)


            visibilidad [modificadores] tipo metodo(Object ... args) {
                     instrucciones;
            }


        o Ejemplo:
            public void suma(Complejo ... args) {
                for (int i=0; i<args.length; i++) {
                     re = re + args[i].re;
                     im = im + args[i].im;
                }
            }
                                                                                80
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                          81
PROCESADORES DE LENGUAJES                           INTRODUCCIÓN A JAVA


   18.OBJETOS
   • Declaración
      <NombreClasse> <NombreObjeto>;
       <NombreObjeto> = new <NombreClase>(inicialización);
       ...


   • Acceso a un atributo
             NombreObjeto.atributo


   • Llamada a un método de la clase de objeto
             NombreObjeto.metodo(argumentos);


                                                                      82
PROCESADORES DE LENGUAJES                                 INTRODUCCIÓN A JAVA


   18.OBJETOS
   • Ejemplo:


       Complejo z, w;


       z = new Complejo(-1.5, 3.0);
       w = new Complejo(-1.2, 2.4);


       z.suma(w);


       System.out.println("Complejo: " + z.toString());
       System.out.println("Modulo: " + z.modulo());
                                                                            83
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                          84
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                      85
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                      86
PROCESADORES DE LENGUAJES                                  INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
            o Dos o más métodos con el mismo nombre dentro de la
              misma clase.
            o Se diferencian en los parámetros
            class nombre_clase {
                public tipo_retorno nombre_método(parámetros) {
                      código;
                }
                public tipo_retorno nombre_método(otros parámetros) {
                      otro código;
                }
                ...
            }
                                                                             87
PROCESADORES DE LENGUAJES                               INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
            o Ejemplo (1/3)


            class Complejo {
                private double re, im;
                public Complejo(double r, double i) {
                    re = r;
                    im = i;
                }
                …




                                                                          88
PROCESADORES DE LENGUAJES                                        INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
            o Ejemplo (2/3)
            …
                    public Complejo sumar (Complejo c) {
                        return new Complejo(re + c.re, im + c.im);
                    }
                public Complejo sumar (double r, double i) {
                         return new Complejo(re + r, im + i);
                }
                public String toString() {
                         return re + " + " + im + "i";
                }
            } // Fin de la clase Complejo
                                                                                   89
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
            o Ejemplo (1/3)


                Complejo c1 = new Complejo(1, 3);
                Complejo c2 = new Complejo(-4, 3.5);


                c2 = c1.sumar(c2);
                c2 = c2.sumar(0.5, -4);


                System.out.println(c1 + "n" + c2 + "n");




                                                                               90
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                      91
PROCESADORES DE LENGUAJES                                         INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   CONSTRUCTORES
            o Se ejecuta automáticamente cuando se declara un objeto de
              una clase.
            o Tiene el mismo nombre que la clase.
            o Una clase puede tener más de un constructor (sobrecarga).
            o Por defecto,
                    toda clase tiene un constructor sin parámetros y sin
                    código,
                    que desaparece una vez se           escribe     un   método
                    constructor para dicha clase.
            o Por defecto, en las clases con herencia
                    antes de ejecutarse todo constructor, llama al código del
                    constructor sin parámetros de la clase padre.
                    Se puede cambiar escribiendo como primera línea de
                    código del constructor: super(parámetros).                      92
PROCESADORES DE LENGUAJES                                  INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   CONSTRUCTORES
            o Sintaxis
            class nombre_clase {
                public nombre_clase(parámetros) {
                      código;
                }
                public nombre_clase(otros parámetros) {
                      código;
                }
                ...
            }
            nombre_clase objeto =
                      new nombre_clase(parámetros_constructor);
                                                                             93
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   CONSTRUCTORES
            o Ejemplo 1


                class Complejo {
                    private double re, im;


                    public Complejo(double r, double i) {
                             re = r;
                             im = i;
                    }
                }



                                                                              94
PROCESADORES DE LENGUAJES                                          INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   CONSTRUCTORES
            o Ejemplo 2: se imprimirá por pantalla AB:
            class A {
                public A() { System.out.print("A"); }
            }
            class B extends A {
                        public B() { System.out.print("B");}
            }
            class Principal {
                        public static void main(String[] args) {
                        B b = new B();
                        }
            }
                                                                                     95
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                      96
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   THIS
            o Se utiliza como referencia del objeto actual que está
              ejecutando el método.
            o Es útil para
                  o diferenciar los atributos de la clase de los parámetros,
                    cuando éstos tengan el mismo nombre
                  o y también cuando haya que llamar a un método pasando
                    como referencia el objeto actual que está ejecutando
                    el código.




                                                                                97
PROCESADORES DE LENGUAJES                                           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   THIS
            o Ejemplo 1:


                  class Complejo {
                      private double re, im;
                      public Complejo(double re, double im) {
                          // this.re es el atributo, y re es el parámetro
                          this.re = re;
                      // this.im es el atributo, e im es el parámetro
                          this.im = im;
                      }
                  }

                                                                                      98
PROCESADORES DE LENGUAJES                                         INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   THIS
            o Ejemplo 2:


                  class Actor {
                      private Vector peliculas;
                      public void incluirPelicula(Pelicula p) {
                                  peliculas.add(p);
                                  p.incluirActor(this);
                      }
                  }




                                                                                    99
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                     100
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   HERENCIA (1/4)
            o Una clase puede heredar o derivar de otra
                    Pasa a disponer automáticamente de todos los métodos y
                    atributos de esta otra clase como si fueran propios.
                    La clase que hereda se llama “hija” y la clase de la cual
                    hereda se llama “padre”.
            o Por defecto,
                    toda clase hereda de la clase Object,
                    a menos que especifiquemos que hereda de otra clase
                    mediante la palabra extends:
                     class clase_hija extends clase_padre {
                         ...
                     }

                                                                                101
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   HERENCIA (2/4)
            o La clase hija puede redefinir los métodos heredados de la
              clase padre.


            o Un método de la clase hija puede llamar al código de un
              método de la clase padre mediante la palabra “super”:


                   tipo_retorno metodo_clase_hija(argumentos) {
                      ...
                      ... super. metodo_clase_padre(argumentos) …
                      ...
               }


                                                                               102
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   HERENCIA (3/4)
            o Un objeto de la clase hija es del tipo de la clase hija, pero
              también del
                    tipo de la clase padre
                    y del tipo de todos sus antecesores.


            o Operador lógico instanceof:
                    Permite preguntar por el tipo de un objeto
                     objeto instanceof nombre_clase


            o Se puede cambiar el tipo        de un objeto escribiendo
              previamente su nuevo tipo entre paréntesis:
                     (nueva_clase) objeto
                                                                              103
PROCESADORES DE LENGUAJES                               INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   HERENCIA (4/4)
            o   Una clase sólo puede heredar
                    de otra clase
                    y de varias interfaces.


            o En Java no existe la herencia múltiple.




                                                                         104
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   Ejemplo de sobrecarga, constructor, herencia, this y super:
            class Persona {
                private String nombre;
                private int edad;


                public Persona() {
                }


                public Persona(String nombre, int edad) {
                     this.nombre = nombre;
                     this.edad = edad;
            }
            …
                                                                               105
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   Ejemplo de sobrecarga, constructor, herencia, this y super:
            …
            public String toString() {
                return "Nombre: " + nombre + "n" + "Edad: " + edad + "n";
                }
            }
            class Alumno extends Persona {
                private double nota;
                public Alumno(String nombre, int edad, double nota) {
                     super(nombre, edad);
                     this.nota = nota;
                }
            …
                                                                                106
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   Ejemplo de sobrecarga, constructor, herencia, this y super:
            …
            public String toString() {
                return super.toString() + "Nota: " + nota + "n";
                }
            } // Fin de la clase Persona
            Persona p1 = new Persona();
            Persona p2 = new Persona("Alex", 22);
            Alumno a1 = new Alumno("Pepe", 20, 8.5);
            System.out.println(p1 + "n" + p2 + "n" + a1);
            System.out.println(p2 instanceof Alumno);
            System.out.println(a1 instanceof Persona);
            System.out.println((Persona) a1);
                                                                                 107
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                     108
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   VISIBILIDAD


            o public
                    La accesibilidad de los métodos y atributos de una clase
                    son accesibles para cualquier clase


            o private
                    los métodos y atributos sólo son accesibles para la clase
                    que los ha declarado


            o protected
                    los métodos y atributos son accesibles para la clase que
                    los ha declarado y para sus clases hijas o descendientes

                                                                                109
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                     110
PROCESADORES DE LENGUAJES                                  INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   FINAL
            o   Se utiliza para
                    declarar una constante, cuando lo encontramos delante
                    de un atributo
                     final double PI = 3.141592;
                    un método que no se podrá redefinir, cuando lo
                    encontramos delante de un método
                     final bool par () { … }
                    o una clase de la que ya no se podrá heredar, cuando
                    lo encontramos delante de una clase.
                    final class Estudiante{ … }




                                                                            111
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                     112
PROCESADORES DE LENGUAJES                                  INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   ABSTRACT


            o Denota un método que no va a tener código.


            o Las clases con métodos abstractos
                    no se pueden instanciar
                    y sus clases herederas deberán escribir el código de
                    sus métodos abstractos si se quiere crear alguna
                    instancia suya.




                                                                            113
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                     114
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   STATIC


            o Se aplica a los atributos y métodos de una clase que pueden
              utilizarse sin crear un objeto que instancie dicha clase.


            o El valor de un atributo estático es compartido por todos los
              objetos de dicha clase.




                                                                             115
PROCESADORES DE LENGUAJES                               INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   STATIC
            •   Ejemplo (1/2)
                 class Persona {
                     private String nombre;
                     public static int num = 0;
                     public Persona(String nombre) {
                                this.nombre = nombre;
                                num++;
                     }
                     public static int cuantos() {
                         return num;
                     }
                 …
                                                                         116
PROCESADORES DE LENGUAJES                                            INTRODUCCIÓN A JAVA

   19.MÁS SOBRE CLASES Y OBJETOS:
       •   STATIC
            o Ejemplo (2/2)
                   public void finalize() throws Throwable {
                      num--;
                      super.finalize();
                      }
                   } // Fin de la clase Persona
               class C {
                          public static void main(String[] args) {
                                   Persona p1 = new Persona("Maria");
                                   Persona p2 = new Persona("Alex");
                                   System.out.println(Persona.cuantos());
                          }
                                                                                      117
               }
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                     118
PROCESADORES DE LENGUAJES                                  INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   EQUALS Y CLONE
            o   Variables simples
                    El nombre de una variable de tipo simple indica la
                    dirección de memoria que contiene el valor de la
                    variable (referencia directa).
                     int a, b;
                    Operador “==”: permite comparar valores de variables
                    simples
                                 … (a == 3) …
                                 … (a == b) …
                    Operador “=”: permite asignar un valor a una variable
                    simple
                                 a = 3;
                                 a = b;
                                                                            119
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   EQUALS Y CLONE
            o Objetos
                    El nombre de un objeto
                        no contiene los valores de los atributos,
                        sino la posición de memoria donde residen dichos
                        valores de los atributos (referencia indirecta)
                     Complejo w, z;
                    Operador “==”: permite comparar si dos objetos ocupan
                    la misma posición (comprueba si son el mismo objeto)
                             … (w == z) …
                    Método “equals”: permite comprobar si dos objetos
                    poseen atributos con los mismos valores (compara los
                    contenidos)
                             w.equals (z)
                                                                                120
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   EQUALS Y CLONE
            o Objetos
                    Operador “=”: “asigna” un objeto a otro objeto que ya
                    existe (serán el mismo objeto)

                            Complejo w, z;
                            w = z;
                    A partir de este instante, “w” ocupa la misma posición
                    de memoria que “z”.


                    Método clone: crea una copia de un objeto determinado
                    y la asigna a otro.


                     Complejo w = (Complejo) z.clone ();
                                                                             121
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   EQUALS Y CLONE
            o Ejemplo (1/2)


                class Student {
                    public String name;
                    public double test1, test2, test3;


                    public double getAverage() {
                        return (test1 + test2 + test3) / 3.0;
                    }
                }



                                                                                 122
PROCESADORES DE LENGUAJES                        INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   EQUALS Y CLONE
            o Ejemplo (2/2)


                Student std, std1, std2, std3;


                std = new Student();
                std1 = new Student();


                std2 = std1;
                std3 = null;


                std.name = "John Smith";
                std1.name = "Mary Jones";
                                                                  123
PROCESADORES DE LENGUAJES            INTRODUCCIÓN A JAVA


    19.MÁS SOBRE CLASES Y OBJETOS:
        •   EQUALS Y CLONE




                                                      124
PROCESADORES DE LENGUAJES           INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   SOBRECARGA
       •   CONSTRUCTORES
       •   THIS
       •   HERENCIA
       •   SUPER
       •   INSTANCEOF
       •   CONVERSIÓN
       •   VISIBILIDAD
       •   FINAL
       •   ABSTRACT
       •   STATIC
       •   EQUALS Y CLONE
       •   POLIMORFISMO
                                                     125
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   POLIMORFISMO


            o Se puede declarar un objeto de una clase,
                    pero instanciarlo como un descendiente de dicha clase
                    lo contrario no es posible


            clase_padre objeto =
                     new clase_descendiente(parámetros_constructor);




                                                                              126
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   POLIMORFISMO
            o Ejemplo (1/4)
                class Complex {
                    double re, im;
                    public Complex(double re, double im) {
                        this.re = re;
                        this.im = im;
                    }
       // Lo siguiente también podría ser "abstract public void imprimir();"
                    public void imprimir() {
                        System.out.println(re + " " + im);
                    };
                } // Fin de la clase Persona
                                                                               127
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   POLIMORFISMO
            o Ejemplo (2/4)


                class Complex1 extends Complex {
                    public Complex1(double re, double im) {
                             super(re, im);
                    }
                    public void imprimir() {
                             System.out.println(re + "+" + im + "i");
                    }
                }



                                                                                128
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   POLIMORFISMO
            o Ejemplo (3/4)


                class Complex2 extends Complex {
                    public Complex2(double re, double im) {
                             super(re, im);
                    }


                    public void imprimir() {
                             System.out.println("(" + re + "," + im + ")");
                    }
                }

                                                                                 129
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   19.MÁS SOBRE CLASES Y OBJETOS:
       •   POLIMORFISMO
            o Ejemplo (4/4)
                class Principal {
                    public static void main(String[] args) {
                        Complex v[] = new Complex[2];
                        v[0] = new Complex1(5, 4);
                        v[1] = new Complex2(1, 3);


                        for (int i = 0; i < v.length; i++) {
                                  v[i].imprimir();
                        }
                    }
                }
                                                                                130
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                         131
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA


   20.INTERFACES


   •   Interfaz: clase completamente abstracta.
        o Ninguno de sus métodos tiene código.
        o Puede incluir atributos “constantes”
               Todos los atributos de una interface son públicos y estáticos
               Por tanto es redundante escribir public static


   •   Java no posee herencia múltiple,
        o Pero una clase puede implementar una o más interfaces,
          debiendo definir sus métodos.




                                                                                 132
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   20.INTERFACES
   •   Sintaxis
   interface <Nombre_interface> [extends < Nombre_interface_padre>] {
       [public static] final int CONSTANTE 1 = valor 1;
       [public static] final int CONSTANTE 2 = valor 2;
       …
       visibilidad [modificadores] tipo metodo1(argumentos);
       visibilidad [modificadores] tipo metodo2(argumentos);
        ...
   }
   class <Nombre_clase> extends <clase_padre> implements <interface1>,
      <interface2>, ...
   {
        ...
                                                                                133
   }
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   20.INTERFACES
   •   Ejemplo (1/7)
        o Se desea crear una clase llamada Vector:
               sus elementos pueden ser de cualquier tipo,
               Sus elementos se han de poder
                    ordenar con un método de la clase Vector
                    imprimir con un método de la clase Vector




                                                                                134
PROCESADORES DE LENGUAJES              INTRODUCCIÓN A JAVA


   20.INTERFACES
   •   Ejemplo (2/7)


        interface Comparable {
            int compareTo(Object o);
        }


        interface Imprimible {
            String toString();
        }




                                                        135
PROCESADORES DE LENGUAJES                               INTRODUCCIÓN A JAVA


   20.INTERFACES
   •   Ejemplo (3/7)
        class MiVector {
                Object elementos[];
                int num;
                public MiVector(int capacidad) {
                   elementos = new Object[capacidad];
                   num = 0;
            }
            public void añadir(Object o) {
                if (num < elementos.length)
                           elementos[num++] = o;
            }
        …
                                                                         136
PROCESADORES DE LENGUAJES                                     INTRODUCCIÓN A JAVA


   20.INTERFACES
   •   Ejemplo (4/7)
        …
        public void ordenar() {
            Object aux;
            for (int i = 0; i < num-1; i++)
                for (int j = i+1; j < num; j++)
                 if (((Comparable)elementos[i]).compareTo(elementos[j]) > 0) {
                       aux = elementos[i];
                       elementos[i] = elementos[j];
                       elementos[j] = aux;
            }
        }

                                                                                 137
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   20.INTERFACES
   •   Ejemplo (5/7)
        …
            public void imprimir() {
                       for (int i = 0; i < num; i++)
                       System.out.println((Imprimible)elementos[i]);
            }
        } // Fin de la clase MiVector




                                                                                138
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   20.INTERFACES
   •   Ejemplo (6/7)
        class Persona {
                public String nom;
        }
        class Alumno extends Persona implements Comparable, Imprimible {
                public double nota;
                public int compareTo(Object o) {
                        return nom.compareTo(((Alumno)o).nom);
            }
            public String toString() {
                        return nom + " " + nota;
                }
        }
                                                                              139
PROCESADORES DE LENGUAJES                              INTRODUCCIÓN A JAVA
   20.INTERFACES
   •   Ejemplo (7/7)
        class Principal {
            public static void main(String[] args) {
                MiVector v = new MiVector(5);
                Alumno a = new Alumno();
                         a.nom = "Pepe";
                         a.nota = 6.7;
                         v.añadir(a);
                Alumno b = new Alumno();
                         b.nom = "Pepa";
                         b.nota = 7.6;
                         v.añadir(b);
                         v.ordenar();
                         v.imprimir();
            }
                                                                        140
        }
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                         141
PROCESADORES DE LENGUAJES                            INTRODUCCIÓN A JAVA


   21.APPLETS
       •   Definición de applet
            o Programa diseñado para ser ejecutado dentro de otra
              aplicación, como, por ejemplo, un navegador web




                                                                      142
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   21.APPLETS
       •   Sintaxis (1/3)
            import java.awt.*;
            import java.applet.*;
            class <Nombre> extends Applet {
                 // declaración de atributos
                 visibilidad [modificadores] tipo atributo1 [= valor];
                 visibilidad [modificadores] tipo atributo2 [= valor];
                 ...
                 // declaración de métodos
                 visibilidad [modificadores] tipo metodo1(argumentos) {
                       instrucciones;
                 }
             …
                                                                                143
PROCESADORES DE LENGUAJES                             INTRODUCCIÓN A JAVA


   21.APPLETS
       •   Sintaxis (2/3)
            …
            // método de inicialización (principal)
            public void init() {
                instrucciones;
            }
            // método de visualización (dibujar)
            public void paint(Graphics g) {
                instrucciones;
            }
            …



                                                                       144
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA

   21.APPLETS
       •   Sintaxis (3/3)
                // método de activación (-> visible)
                public void start() {
                instrucciones;
                }
                // método de desactivación (-> invisible)
                public void stop() {
                     instrucciones;
                }
                // método de destrucción
                public void destroy() {
                     instrucciones;
                }
            … } // Fin de la declaración del “applet” <Nombre>               145
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   21.APPLETS
       •   Inserción de un applet en una página web (HTML)
            <html>
            <body>
                ...
            <applet code="nombre_applet" atributos>
                <param nombre_parametro = "valor">
                <param nombre_parametro = "valor">
                ...
                código HTML si el navegador no puede ejecutar Java
            </applet>
            </body>
            </html>

                                                                              146
PROCESADORES DE LENGUAJES                              INTRODUCCIÓN A JAVA


   21.APPLETS
       •   Ejemplo (1/4)


            import java.awt.*;
            import java.applet.*;


            public class PruebaApplet extends Applet
            {
                Image logo;
                AudioClip melodia;
                TextField cuadroTexto;


            …

                                                                        147
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA

   21.APPLETS
       •   Ejemplo (2/4)
       …
            public void init()
            {
                logo = getImage(getDocumentBase(), "imágenesLogotipo.png");
                melodia = getAudioClip(getDocumentBase(), "Melodia.au");
                cuadroTexto = new TextField(20);
                cuadroTexto.setText("Aquí puedes escribir");
                add(cuadroTexto);
            }
            public void start()
            {
                melodia.loop();
            }                                                                   148
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA

   21.APPLETS
       •   Ejemplo (3/4)
            public void paint(Graphics g)
            {
                 g.drawImage(logo, 0, 0, this);
                 g.drawString(cuadroTexto.getText(), 25, 25);
            }
            public void stop()
            {
                 melodia.stop();
            }
            public void destroy()
            {
             }
       } // Fin de la declaración del applet                                     149
PROCESADORES DE LENGUAJES                     INTRODUCCIÓN A JAVA

   21.APPLETS
       •   Ejemplo (4/4)
           HTML Applet:


            <html>
            <body>
                <applet code="PruebaApplet"
                        width=300
                        height=50
                        align=middle>
                </applet>
            </body>
            </html>


                                                               150
PROCESADORES DE LENGUAJES               INTRODUCCIÓN A JAVA


   12.SENTENCIAS
   13.LIBRERÍAS
   14.ENTRADA Y SALIDA POR PANTALLA
   15.ENTRADA Y SALIDA POR FICHEROS
   16.PROGRAMA PRINCIPAL Y ARGUMENTOS
   17.CLASES
   18.OBJETOS
   19.MÁS SOBRE CLASES Y OBJETOS
   20.INTERFACES
   21.APPLETS
   22.EXCEPCIONES




                                                         151
PROCESADORES DE LENGUAJES                                       INTRODUCCIÓN A JAVA

   22.EXCEPCIONES
       •     Permiten controlar posibles situaciones de error
       try {
             código donde se pueden producir excepciones
       }
       catch (TipoExcepcion1 NombreExcepcion) {
             Código a ejecutar si se produce una excepción del tipo TipoExcepcion1
       }
       catch (TipoExcepcion2 NombreExcepcion) {
             Código a ejecutar si se produce una excepción del tipo TipoExcepcion1
       }
       ...
       finally {
             Código a ejecutar tanto si se produce una excepción como si no
                                                                                 152
       }
PROCESADORES DE LENGUAJES                                         INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
       •   Ejemplo (1/2)


       String salario;
       BufferedReader fichero1 = null;
       BufferedWriter fichero2 = null;
       try {
           fichero1 = new BufferedReader(new FileReader(“salarios.txt"));
           fichero2 = new BufferedWriter(new FileWriter(“salarios.new"));
           while ((salario = fichero1.readLine()) != null) {
               salario = (new Integer(Integer.parseInt(salario)*10).toString());
               fichero2.write(salario+"n");
           }
       }
                                                                                   153
PROCESADORES DE LENGUAJES                           INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
       •   Ejemplo (2/2)


       catch (IOException e) {
           System.err.println(e);
       }
       catch (NumberFormatException e) {
           System.err.println("No es un número");
       }
       finally {
           fichero1.close();
           fichero2.close();
       }

                                                                     154
PROCESADORES DE LENGUAJES                                   INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
       •   Java posee multitud de excepciones agrupadas por familias.
            o ArithmeticException
            o IOException
            o EOFException
            o FileNotFoundException
            o NullPointerException
            o NegativeArraySizeException
            o ArrayIndexOutOfBoundsException
            o SecurityException
            o NumberFormatException
            o ...



                                                                             155
PROCESADORES DE LENGUAJES   INTRODUCCIÓN A JAVA


   22.EXCEPCIONES




                                             156
PROCESADORES DE LENGUAJES                                    INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
       •   Java posee multitud de “errores”
            o Fallos de la máquina virtual que es mejor que no los gestione la
              aplicación.
            o Por ejemplo:
                o OutOfMemoryError
                o InternalError
                o StackOverflowError
                o UnknownError
                o NoClassDefFoundError,
                o …




                                                                              157
PROCESADORES DE LENGUAJES                                 INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
       •   Creación de una nueva excepción
       public class NombreNuevaExcepcion extends NombreExcepcion {
           atributos y métodos
       }
       •   Para declarar que un método que lanza excepciones:
       visibilidad [modificadores] tipo método(argumentos) throws
          NombreExcepcion1,
           NombreExcepcion2, ... {
           ...
           ... throw new NombreExcepcion1(parámetros);
           ...
           ... throw new NombreExcepcion2(parámetros);
           ...
                                                                           158
       }
PROCESADORES DE LENGUAJES                                      INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
       •    Ejemplo (1/4)


       class CoeficientZeroException extends ArithmeticException {
            public CoeficientZeroException(String mensaje) {
                     super(mensaje);
            }
       };




                                                                                159
PROCESADORES DE LENGUAJES                                            INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
            •    Ejemplo (2/4)
   // Clase que representa una ecuación de primer grado: a x + b = 0
   class Ecuacion {
        private double a, b;
        public Ecuacion(double coef1, double coef0) {
                           a = coef1;
                           b = coef0;
        }
       public double Raiz() throws CoeficientZeroException {
            if (a == 0)
                throw new CoeficientZeroException("La ecuación no es de primer grado");
        else return -b/a;
        }
   }                                                                                  160
PROCESADORES DE LENGUAJES                                         INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
       •   Ejemplo (3/4)
       class Principal {
           public static void main(String[] args) throws Exception {
            try {
            BufferedReader in =
                     new BufferedReader(new InputStreamReader(System.in));
           System.out.print("Introduzca el coeficiente del término de grado 1:");
           double c1 = Integer.parseInt(in.readLine());
           System.out.print("Introduzca el coeficiente del término de grado 0:");
           double c2 = Integer.parseInt(in.readLine());
           Ecuacion eq = new Ecuacion(c1, c2);
           System.out.println("La solución es : " + eq.Raiz());
       }
                                                                                   161
PROCESADORES DE LENGUAJES                                          INTRODUCCIÓN A JAVA


   22.EXCEPCIONES
          •   Ejemplo (4/4)
              catch (CoeficientZeroException e) {
                             System.err.println(e);
              }
              catch (NumberFormatException e) {
                     System.err.println("Número incorrecto ... " + e.getMessage());
              }
              catch (Exception e) {
                  System.err.println("Excepción desconocida");
                  throw e;
              }
          }
      }
                                                                                      162
Muchas gracias

More Related Content

What's hot

Introduccion a la algoritmia 2011-i
Introduccion a la algoritmia   2011-iIntroduccion a la algoritmia   2011-i
Introduccion a la algoritmia 2011-iEnrique Vargas
 
CUESTIONARIO JAVA
CUESTIONARIO JAVACUESTIONARIO JAVA
CUESTIONARIO JAVAjesanchez5
 
Introducción a la algoritmia
Introducción a la algoritmiaIntroducción a la algoritmia
Introducción a la algoritmiapierre R.
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosDoris Aguagallo
 
Cuestionario java
Cuestionario javaCuestionario java
Cuestionario javajaky9727
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1armando_cardenas
 
Curso Java Avanzado 0 Conceptos Basicos
Curso Java Avanzado   0 Conceptos BasicosCurso Java Avanzado   0 Conceptos Basicos
Curso Java Avanzado 0 Conceptos BasicosEmilio Aviles Avila
 
Ejercicios de test - desarrollo y programación
Ejercicios de test  -  desarrollo y programaciónEjercicios de test  -  desarrollo y programación
Ejercicios de test - desarrollo y programaciónoposicionestic
 
Introduccion java
Introduccion javaIntroduccion java
Introduccion javaals_8
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 
Lenguaje de Programación Java
Lenguaje de Programación JavaLenguaje de Programación Java
Lenguaje de Programación JavaDuvan Zuluaga
 

What's hot (17)

Introduccion a la algoritmia 2011-i
Introduccion a la algoritmia   2011-iIntroduccion a la algoritmia   2011-i
Introduccion a la algoritmia 2011-i
 
CUESTIONARIO JAVA
CUESTIONARIO JAVACUESTIONARIO JAVA
CUESTIONARIO JAVA
 
Curso Java Inacap
Curso Java InacapCurso Java Inacap
Curso Java Inacap
 
Introducción a la algoritmia
Introducción a la algoritmiaIntroducción a la algoritmia
Introducción a la algoritmia
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetos
 
Ppt java
Ppt javaPpt java
Ppt java
 
Cuestionario java
Cuestionario javaCuestionario java
Cuestionario java
 
Programacion en java
Programacion en javaProgramacion en java
Programacion en java
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Curso Java Avanzado 0 Conceptos Basicos
Curso Java Avanzado   0 Conceptos BasicosCurso Java Avanzado   0 Conceptos Basicos
Curso Java Avanzado 0 Conceptos Basicos
 
Ejercicios de test - desarrollo y programación
Ejercicios de test  -  desarrollo y programaciónEjercicios de test  -  desarrollo y programación
Ejercicios de test - desarrollo y programación
 
Introduccion java
Introduccion javaIntroduccion java
Introduccion java
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
Lenguaje de Programación Java
Lenguaje de Programación JavaLenguaje de Programación Java
Lenguaje de Programación Java
 
Programación en java
Programación en javaProgramación en java
Programación en java
 

Viewers also liked

Manual para crear una aplicación movil en java
Manual para crear una aplicación movil en javaManual para crear una aplicación movil en java
Manual para crear una aplicación movil en javaWenNdy AlmaZza
 
6724640 matrices-java
6724640 matrices-java6724640 matrices-java
6724640 matrices-javabeqa_gothic
 
Ejercicios matrices 2sem 2013
Ejercicios matrices 2sem 2013Ejercicios matrices 2sem 2013
Ejercicios matrices 2sem 2013Sergio Meneses
 
DESARROLLO DE OBJETOS DE APRENDIZAJE PARA LA ENSEÑANZA DE ACTUALIZACIÓN, BÚSQ...
DESARROLLO DE OBJETOS DE APRENDIZAJE PARA LA ENSEÑANZA DE ACTUALIZACIÓN, BÚSQ...DESARROLLO DE OBJETOS DE APRENDIZAJE PARA LA ENSEÑANZA DE ACTUALIZACIÓN, BÚSQ...
DESARROLLO DE OBJETOS DE APRENDIZAJE PARA LA ENSEÑANZA DE ACTUALIZACIÓN, BÚSQ...Alejandro Bolivar
 
DESARROLLO DE UNA BIBLIOTECA DE CLASES EN JAVA PARA RESOLVER PROBLEMAS DE COM...
DESARROLLO DE UNA BIBLIOTECA DE CLASES EN JAVA PARA RESOLVER PROBLEMAS DE COM...DESARROLLO DE UNA BIBLIOTECA DE CLASES EN JAVA PARA RESOLVER PROBLEMAS DE COM...
DESARROLLO DE UNA BIBLIOTECA DE CLASES EN JAVA PARA RESOLVER PROBLEMAS DE COM...Alejandro Bolivar
 
Presentacion Aplicacion Con Matrices
Presentacion Aplicacion Con MatricesPresentacion Aplicacion Con Matrices
Presentacion Aplicacion Con Matriceskruskaya salazar
 
Arreglo multidimensional
Arreglo multidimensionalArreglo multidimensional
Arreglo multidimensionalJesús Navarro
 
Arreglos en java v01
Arreglos en java v01Arreglos en java v01
Arreglos en java v01Emerson Garay
 
Tipos De Datos En Java
Tipos De Datos En JavaTipos De Datos En Java
Tipos De Datos En Javapointpower
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansDaniel Gómez
 

Viewers also liked (20)

Manual para crear una aplicación movil en java
Manual para crear una aplicación movil en javaManual para crear una aplicación movil en java
Manual para crear una aplicación movil en java
 
Ch14
Ch14Ch14
Ch14
 
6724640 matrices-java
6724640 matrices-java6724640 matrices-java
6724640 matrices-java
 
Ejercicios matrices 2sem 2013
Ejercicios matrices 2sem 2013Ejercicios matrices 2sem 2013
Ejercicios matrices 2sem 2013
 
Interfaz de programación de aplicaciones
Interfaz de programación de aplicacionesInterfaz de programación de aplicaciones
Interfaz de programación de aplicaciones
 
Matrices
MatricesMatrices
Matrices
 
Matrices en java
Matrices en javaMatrices en java
Matrices en java
 
Act 4
Act 4Act 4
Act 4
 
Config metodo tabular
Config   metodo tabularConfig   metodo tabular
Config metodo tabular
 
Lenguaje de alto nivel (II Bimestre)
Lenguaje de alto nivel (II Bimestre)Lenguaje de alto nivel (II Bimestre)
Lenguaje de alto nivel (II Bimestre)
 
Arreglos java
Arreglos javaArreglos java
Arreglos java
 
DESARROLLO DE OBJETOS DE APRENDIZAJE PARA LA ENSEÑANZA DE ACTUALIZACIÓN, BÚSQ...
DESARROLLO DE OBJETOS DE APRENDIZAJE PARA LA ENSEÑANZA DE ACTUALIZACIÓN, BÚSQ...DESARROLLO DE OBJETOS DE APRENDIZAJE PARA LA ENSEÑANZA DE ACTUALIZACIÓN, BÚSQ...
DESARROLLO DE OBJETOS DE APRENDIZAJE PARA LA ENSEÑANZA DE ACTUALIZACIÓN, BÚSQ...
 
DESARROLLO DE UNA BIBLIOTECA DE CLASES EN JAVA PARA RESOLVER PROBLEMAS DE COM...
DESARROLLO DE UNA BIBLIOTECA DE CLASES EN JAVA PARA RESOLVER PROBLEMAS DE COM...DESARROLLO DE UNA BIBLIOTECA DE CLASES EN JAVA PARA RESOLVER PROBLEMAS DE COM...
DESARROLLO DE UNA BIBLIOTECA DE CLASES EN JAVA PARA RESOLVER PROBLEMAS DE COM...
 
Presentacion Aplicacion Con Matrices
Presentacion Aplicacion Con MatricesPresentacion Aplicacion Con Matrices
Presentacion Aplicacion Con Matrices
 
Arreglo multidimensional
Arreglo multidimensionalArreglo multidimensional
Arreglo multidimensional
 
Arreglos Java
Arreglos JavaArreglos Java
Arreglos Java
 
Arreglos en java v01
Arreglos en java v01Arreglos en java v01
Arreglos en java v01
 
Tipos De Datos En Java
Tipos De Datos En JavaTipos De Datos En Java
Tipos De Datos En Java
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeans
 
Análisis de la capacidad de un proceso
Análisis de la capacidad de un procesoAnálisis de la capacidad de un proceso
Análisis de la capacidad de un proceso
 

Similar to IntroJava

Introducción a JAVA
Introducción a JAVAIntroducción a JAVA
Introducción a JAVAjohitafresh
 
Java script tarea
Java script tareaJava script tarea
Java script tareasaullopes24
 
Curso javabasico
Curso javabasicoCurso javabasico
Curso javabasicosergioap40
 
[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma JavaEudris Cabrera
 
Clasen1java
Clasen1javaClasen1java
Clasen1javajbersosa
 
Prog_BasicaJava (1).pptx
Prog_BasicaJava (1).pptxProg_BasicaJava (1).pptx
Prog_BasicaJava (1).pptxSANTOS400018
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 javajbersosa
 
Java Sobrecarga y Recursividad
Java Sobrecarga y RecursividadJava Sobrecarga y Recursividad
Java Sobrecarga y Recursividadpbcanessa
 
2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programaciónoviedospablo
 
iNTRODUCCION AL LENGUAJE JAVA
iNTRODUCCION AL LENGUAJE  JAVAiNTRODUCCION AL LENGUAJE  JAVA
iNTRODUCCION AL LENGUAJE JAVAJesus Alex Haro
 
AITEC -Curso introducción al desarrollo de aplicaciones con java
AITEC -Curso introducción al desarrollo de aplicaciones con javaAITEC -Curso introducción al desarrollo de aplicaciones con java
AITEC -Curso introducción al desarrollo de aplicaciones con javaFranklin David Moya Dávila
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Samuel Marrero
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java jmosorio777
 

Similar to IntroJava (20)

Tema 1-origen-java1
Tema 1-origen-java1Tema 1-origen-java1
Tema 1-origen-java1
 
Introducción a JAVA
Introducción a JAVAIntroducción a JAVA
Introducción a JAVA
 
Introducción a la algoritmia
Introducción a la algoritmiaIntroducción a la algoritmia
Introducción a la algoritmia
 
Introducción a la algoritmia
Introducción a la algoritmiaIntroducción a la algoritmia
Introducción a la algoritmia
 
Java script tarea
Java script tareaJava script tarea
Java script tarea
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
Curso javabasico
Curso javabasicoCurso javabasico
Curso javabasico
 
[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java
 
Clasen1java
Clasen1javaClasen1java
Clasen1java
 
Prog_BasicaJava (1).pptx
Prog_BasicaJava (1).pptxProg_BasicaJava (1).pptx
Prog_BasicaJava (1).pptx
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 java
 
Java Sobrecarga y Recursividad
Java Sobrecarga y RecursividadJava Sobrecarga y Recursividad
Java Sobrecarga y Recursividad
 
Java basico
Java basicoJava basico
Java basico
 
Java
JavaJava
Java
 
2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación
 
iNTRODUCCION AL LENGUAJE JAVA
iNTRODUCCION AL LENGUAJE  JAVAiNTRODUCCION AL LENGUAJE  JAVA
iNTRODUCCION AL LENGUAJE JAVA
 
r124736.PPT
r124736.PPTr124736.PPT
r124736.PPT
 
AITEC -Curso introducción al desarrollo de aplicaciones con java
AITEC -Curso introducción al desarrollo de aplicaciones con javaAITEC -Curso introducción al desarrollo de aplicaciones con java
AITEC -Curso introducción al desarrollo de aplicaciones con java
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java
 

IntroJava

  • 1. UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO INTRODUCCIÓN A JAVA INGENIERÍA INFORMÁTICA PRIMER CURSO DE SEGUNDO CICLO SEGUNDO CUATRIMESTRE
  • 2. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA Observación • Este documento es una adaptación del documento o “Resumen de JAVA para programadores de C y C++” de Alejandro Castán o que está disponible en http://www.xtec.net/~acastan/textos/Java.pdf • Se otorga el permiso para copiar, distribuir o modificar este documento bajo los términos de la licencia de documentación libre GNU, versión 1.2 o cualquier otra versión posterior publicada por la Free Software Foundation. • Puedes consultar dicha licencia en http://www.gnu.org/copyleft/fdl.html. 2
  • 3. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA Índice (1/2) 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 3
  • 4. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA Índice (2/2) 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 19.INTERFACES 20.APPLETS 21.EXCEPCIONES 4
  • 5. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 5
  • 6. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARATERÍSTICAS BÁSICAS DE JAVA • Sintaxis similar a C y C++ o pero sin punteros: la gestión de la memoria dinámica es automática • Interpretado o Un programa (.java) se compila a código bytecode (.class) o El código bytecode lo interpreta una máquina virtual de Java. • Multiplataforma • El programa de java se compila una única vez • El fichero de bytecode se ejecuta igual en la máquina virtual de Java de cualquier plataforma. • Seguro: • La máquina virtual de Java impide que el programa intente ejecutar operaciones no permitidas sobre los recursos del sistema. 6
  • 7. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA • Utilidades de la línea de comandos: o Compilar javac [-classpath camino] [-d carpeta] [-g] nombre.java o Ejecutar java [-classpath camino] nombre_clase argumentos o Ejecutar applet appletviewer url • Depurar jdb nombre_clase • Documentación javadoc [-classpath camino] [-d carpeta] nombre.java 7
  • 8. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 8
  • 9. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 2. COMENTARIOS • Comentarios de varias líneas (similares a los de C y C++) /* Ejemplo maravilloso de comentario con varias líneas */ • Comentarios de una línea (similares a los del lenguaje C++) // Ejemplo maravilloso de comentario de una línea • Comentarios de Javadoc (similares a los de doxygen) /** Comentarios que generan documentación automática */ 9
  • 10. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 2. COMENTARIOS • Más sobre sobre los comentarios que generan documentación o Pueden incluir etiquetas HTML <code> texto /code> o y etiquetas @ de campos de información @author @version @see @param @return @throws … 10
  • 11. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 2. COMENTARIOS /** Clase <code>Universidad</code> * Contiene una lista de alumnos. * @author Nombre * @version 1.0 */ public class Universidad { /** Alumnos de la universidad */ public Vector alumnos; /** Método que añade un nuevo alumno a la universidad * @param a Alumno a añadir * @return Número de alumnos de la universidad * @throws UniversidadException Si el alumno a añadir ya existía */ public int añadir(Alumno a) throws UniversidadException { ... } } 11
  • 12. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 12
  • 13. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 3. DECLARACIÓN DE CONSTANTES 13
  • 14. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 14
  • 15. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 4. DECLARACIÓN DE CONSTANTES • Constante o La declaración contiene la palabra final delante: final <tipo_datos> <nombre_constante> = <valor>; o Ejemplo: final int MAX_ELEM = 20; • Tipo enumerado (desde la versión de Java 1.5.0) o Java crea una nueva clase (puede tener campos y métodos) o Sintaxis (versión más simple): enum <nombre_enumeracion> {<nombre_constante>, ..., <nombre_constante> } o Ejemplo: enum Estacion { PRIMAVERA, VERANO, OTOÑO, INVIERNO } Estacion a = Estacion.VERANO; 15
  • 16. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 16
  • 17. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS • Sintaxis (similar a C y C++): <tipo_datos> <nombre_variable>; • Características del nombre de una variable o Empieza por una letra, _ o $ o Puede ir seguido por cualquier carácter unicode (incluidas vocales con acentos y letras de otros alfabetos). o Distingue mayúsculas de minúsculas • Tipos de datos simples (no son clases): <tipo_datos_simple> <nombre_variable> [= <valor>]; o Ejemplo: int i = 0; 17
  • 18. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS • Tipos de datos simples (no son clases): Tipo Tamaño Rango o byte: 8 bits –128 .. 127 o short : 16 bits -32.768 .. 32.767 o int: 32 bits -2.147.483.648 .. 2.147.483.647 o long: 64 bits -9.223.372.036.854.775.808 .. 9.223.372.036.854.775.807 o float: 32 bits -3.4x10 38 .. 3.4x10 38 (mínimo 1.4x10 –45) o double: 64 bits -1.8x10308 .. 1.8x10308 (mínimo 4.9x10-324) o boolean: true o false o char: 16 bits unicode 18
  • 19. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS • Tipos de datos compuestos (son clases): o String o Vectores y matrices o Colecciones, o Clases o wrappers/envolventes <tipo_datos_compuesto> <nombre_variable> = new <tipo_datos> (<valor_inicial>); • Ejemplos int v[] = new int[100]; // Tipo compuesto vector String s = new String("Hola"); // Tipo compuesto String // Tipo compuesto Integer (wrapper del tipo int) Integer n = new Integer(10); 19
  • 20. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS • Ejemplos de conversión int i = Integer.parseInt("12"); // cadena caracteres a entero float f = Float.parseFloat("1.15"); // cadena caracteres a real String s1 = new Float(f).toString(); // real a cadena caracteres String s2 = new Integer(i).toString(); // entero a cadena caracteres // más fácil: números a cadena caracteres String s3 = "Números:" + i + " y " + f; i = (int) f; // convertir real a entero f = i; // convertir entero a real 20
  • 21. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. DECLARACIÓN DE CONSTANTES 4. PALABRAS CLAVES Y PALABRAS RESERVADAS 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 21
  • 22. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 6. EL TIPO DE DATOS CADENA DE CARACTERES • String: tipo de datos cadena de caracteres String <nombre_variable> [= "<cadena de caracteres>"]; • Ejemplos: String s1 = "hola"; String s2 = "adios"; String s3 = s1 + " y " + s2 + " : " + 2004; 22
  • 23. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 6. EL TIPO DE DATOS CADENA DE CARACTERES • Atributos y métodos más importantes: string1.equals(string2) // Compara dos strings string1.clone() // crea una copia de un string string1.charAt(posicion) // retorna el carácter en una posición string1.concat(string2) // concatena dos strings string1.indexOF(caracter, posicion) // devuelve la posición de un carácter string1.length() // devuelve la longitud del string string1.replace(caracter1, caracter2) // reemplaza un carácter por otro string1.substring(posicion1, posicion2) // extrae una porción del string string1.toLowerCase() // convierte el string a minúsculas string1.toUpperCase() // convierte el string a mayúsculas string1.valueOf(numero) // convierte un número a string 23
  • 24. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 24
  • 25. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 7. LOS TIPOS DE DATOS ENVOLVENTES • Existe una clase equivalente para cada tipo de dato simple Tipo Simple Clase Equivalente byte, short, int, long Number, Byte, Short, Integer, Long float, double Number, Float, Double boolean Boolean char Character o Estas clases poseen constantes y métodos que pueden ser útiles • Ejemplos: int i = 4; // "i" es una variable entera (tipo simple) // "j" es un objeto de la clase Integer (envolvente) Integer j = new Integer(5); 25
  • 26. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 26
  • 27. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ • Sintaxis similar a C y C++ o Se indexa con [ ] o El primer elemento está en la posición 0 • Deferencias con C y C++ o El número de elementos se declara dinámicamente con new o Se puede obtener su longitud con length 27
  • 28. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ • Declaración o Una dimensión: <tipo_datos> <nombre_array>[]; <nombre_array> = new <tipo_datos>[<num_elementos>]; o Varias dimensiones: <tipo_datos> <nombre_array>[][]...[] ; <nombre_array> = new <tipo_datos> [<n1]...[<nk>]; 28
  • 29. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ • Ejemplos: float v[] = new float[10]; // Una dimensión con 10 elementos float m[][]= new float[3][4]; // Dos dimensiones con 3x4 elementos // Una dimensión con dos elementos inicializados String s[] = {"hola", "adios"}; for (int i = 0; i < v.length; i++) v[i] = i; for (int i = 0; i < m.length; i++) for (int j = 0; j < m[i].length; j++) m[i][j] = 0; 29
  • 30. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES, Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 30
  • 31. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 9. LAS COLECCIONES • Proporcionadas por la API (Interfaz de Programación de Aplicaciones) de Java o List o ArrayList o Vector o Set o Map … • Características o No forman parte del lenguaje original o Son clases definidas en el paquete java.util 31
  • 32. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 9. LAS COLECCIONES • Ejemplo: ArrayList<Alumno> miclase = new ArrayList<Alumno>(); miclase.add( new Alumno("Pepe", 5.0) ); miclase.add( new Alumno("Alex", 4.2) ); miclase.add( new Alumno("Pepa", 6.3) ); for (Iterator i = miclase.iterator(); i.hasNext(); ) { System.out.println( i.next() ); } 32
  • 33. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES, Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 33
  • 34. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 10.CÓDIGO • Java utiliza la misma sintaxis que C y C++: o Una instrucción puede ocupar varias líneas acaba en punto y coma: “;” instrucción; o Los bloques de instrucciones van entre llaves “{“ “}”: { instrucción1; instrucción2; ... } 34
  • 35. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 1. CARACTERÍSTICAS BÁSICAS DE JAVA 2. COMENTARIOS 3. PALABRAS CLAVES Y PALABRAS RESERVADAS 4. DECLARACIÓN DE CONSTANTES 5. DECLARACIÓN DE VARIABLES Y TIPOS DE DATOS 6. EL TIPO DE DATOS CADENA DE CARACTERES 7. LOS TIPOS DE DATOS ENVOLVENTES 8. LOS TIPOS DE DATOS VECTOR Y MATRIZ 9. LAS COLECCIONES 10.CÓDIGO 11.EXPRESIONES Y OPERADORES … 35
  • 36. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 11.Java utiliza los mismos operadores que C y C++: • Java utiliza los mismos operadores que C y C++: o Asignación: = o Aritméticos: ++, --, +, -, *, /, % o Relacionales: ==, !=, <, <=, >, >=, !, &&, ||, ?: o Bits: &, |, ^, ~, <<, >>, >>> o Conversión: (tipo) 36
  • 37. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 37
  • 38. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS • Sentencias de control del flujo de ejecución (igual que en C y C++): o Condicional simple y compuesta: if … else o Condicional múltiple: switch o Iterativa con condición inicial: while o Iterativa final condición final: do…while o Repetitiva: for o Otras break; continue; label: return <valor>; exit; 38
  • 39. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS • Condicional simple y compuesta if (condición) { instrucciones; } [else { instrucciones; }] Ejemplo: if (a != 0) { System.out.println("x = " + -a/b); } else { System.out.println("Error"); } 39
  • 40. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS • Condicional múltiple switch (expresión) { case <valor>: instrucciones; [break;] case <valor>: instrucciones; [break;] ... [default: instrucciones;] } 40
  • 41. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS • Condicional múltiple o Ejemplo switch (opcion) { case 1: x = x * Math.sqrt(y); break; case 2: case 3: x = x / Math.log(y); break; default: System.out.println("Error"); } 41
  • 42. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS • Iterativa con condición inicial: while (condición) { instrucciones; } o Ejemplo i = 0; while (i < 10) { System.out.println(v[i]); i++; } 42
  • 43. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS • Iterativa con condición final: do { instrucciones; } while (condición) o Ejemplo i = 0; do { System.out.println(v[i]); i++; } while (i < 10) 43
  • 44. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS • Repetitiva for (inicialización; comparación; incremento) { instrucciones; } o Ejemplo: for (i = 0; i < 10; i++) { System.out.println(v[i]); } 44
  • 45. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS • Repetitiva: o Nuevo for (desde Java 1.5.0) int primeros_primos[] = {1, 2, 3, 5, 7,11}; for (int j : primeros_primos) System.out.println(j); 45
  • 46. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 46
  • 47. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 13.LIBRERÍAS • Creación de clases dentro de una librería o Al principio del fichero de la clase, se debe escribir la librería dónde se insertará la clase: package carpeta.subcarpeta. …; • Para utilizar código de otro fichero: import carpeta.subcarpeta. … .clase; o Ejemplo: import java.lang.Math; import java.io.*; 47
  • 48. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 13.LIBRERÍAS • Librería más comunes o java.lang Clases básicas o fundamentales del lenguaje o java.awt Permite definir interfaces gráficas o java.io Entrada/salida de datos o java.net Comunicación por red o java.applet Declaración de applets o java.util Colecciones, eventos, fecha, hora, etc. 48
  • 49. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 13.LIBRERÍAS • Otras librerías o java.beans Clases de la arquitectura JavaBeans o java.math Operaciones matemáticas. o java.nio Define buffers (contenedores de datos) y proporciona un acceso a otros paquetes de NIO (New Input / Output). o java.rmi El paquete RMI (Remote Method Invocation) permite acceder a datos o métotos “remotos”. o java.security Permite el control de seguridad. 49
  • 50. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 13.LIBRERÍAS • Otras librerías o java.sql API para acceder y procesar bases de datos o java.text Maneja texto, fechas, números y mensajes independientes del lenguaje natural o javax.accessibility Favorece el acceso a componentes de la interfaz del usuario. o javax.crypto Permite realizar peraciones criptográficas. o javax.imageio Paquete principal para procesar entrada y salida de imágenes. 50
  • 51. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 13.LIBRERÍAS • Otras librerías: extensiones estándares de Java o javax.management o javax.sql o javax.naming o javax.swing o javax.print o javax.xml o javax.rmi o org.ietf.jgss o javax.security.auth o org.omg.CORBA o javax.sound.midi o org.w3c.dom o javax.sound.sampled o org.xml.sax 51
  • 52. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 52
  • 53. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 14.ENTRADA Y SALIDA POR PANTALLA • Lectura desde el teclado o Sólo se pueden leer líneas de texto, que después deben ser convertidas al tipo correspondiente: BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s = in.readLine(); int i = Integer.parseInt(in.readLine()); • Lectura más fácil con la clase java.util.Scanner (desde Java 1.5.0) Scanner in = new Scanner(System.in); String s = in.next(); int i = in.nextInt(); in.close(); 53
  • 54. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 14.ENTRADA Y SALIDA POR PANTALLA • Escritura en la pantalla o Se concatenan cadenas de caracteres y variables en un único String: System.out.println("Hola " + s + i); o También se puede escribir texto formateado al estilo de C (desde la versión 1.5.0 de Java) System.out.printf("Hola %s %5d", s, i); 54
  • 55. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 55
  • 56. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Multitud de clases para trabajar con entrada y salida de datos: o Clases para acceder directamente a los dispositivos: Teclado Pantalla Ficheros … o Clases para filtrar, acumular o comprimir los datos. 56
  • 57. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Byte Input Stream o InputStream: La superclase de todos las clases “byte input streams”. o BufferedInputStream o InflaterInputStream o ByteArrayInputStream o LineNumberReader o CheckedInputStream o ObjectInputStream o DataInputStream o PipedInputStream o FileInputStream o PushbackInputStream o FilterInputStream o SequenceInputStream o GZIPInputStream o StringBufferInputStream 57
  • 58. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Character (unicode) Input Stream o BufferedReader o CharArrayReader o FileReader o FilterReader La superclase de todas las clases “character input stream filter”. o InputStreamReader o LineNumberReader o PipedReader o PushbackReader o Reader La superclase de todas las clases “character input streams” 58 o StringReader
  • 59. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Byte Output Stream (1/2) o BufferedOutputStream o ByteArrayOutputStream o CheckedOutputStream. o DataOutputStream o DeflaterOutputStream Superclase de GZIPOutputStream y ZipOutputStream. o FileOutputStream o FilterOutputStream Superclase de todas las clases “byte output stream filters”. 59
  • 60. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Byte Output Stream (2/2) o GZIPOutputStream o ObjectOutputStream o OutputStream Superclase de todas las clases “byte output streams”. o PipedOutputStream o PrintStream o ZipOutputStream 60
  • 61. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Character (unicode) Output Stream o BufferedWriter o CharArrayWriter o FileWriter o FilterWriter o La superclase de todas las clases “character output streams filters”. o OutputStreamWriter o PipedWriter o PrintWriter o StringWriter o Writer o La superclase de todas las clase “character output streams”. 61
  • 62. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Ejemplo 1 • Trabajar con ficheros binarios de datos “crudos” (imágenes, ...): int c; FileInputStream fichero1 = new FileInputStream("entrada"); FileOutputStream fichero2 = new FileOutputStream("salida"); while ((c = fichero1.read()) != -1) { fichero2.write(c); } fichero1.close(); fichero2.close(); 62
  • 63. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Ejemplo 2 • Trabajar con ficheros binarios de tipos simples (int, float, ...) y acceso directo: RandomAccessFile fichero1= new RandomAccessFile("radio", "r"); RandomAccessFile fichero2= new RandomAccessFile("perimetro", "w"); try { while (true) { fichero2.writeFloat( 2 * 3.1416 * fichero1.readFloat() ); } catch (EOFException e) { fichero1.close(); fichero2.close(); 63 }
  • 64. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Ejemplo 3 • Trabajar con ficheros de texto: String salario; FileReader fichero1 = new FileReader("salarios.txt"); FileWriter fichero2 = new FileWriter("salarios.new"); BufferedReader in = new BufferedReader(fichero1); BufferedWriter out = new BufferedWriter(fichero2); while ((salario = in.readLine()) != null) { salario = (new Integer(Integer.parseInt(salario)*10).toString(); out.write(salario); } fichero1.close(); fichero2.close(); 64
  • 65. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Ejemplo 4 (1/2) • Guardar y recuperar objetos (serialización): class Alumno implements Serializable { private String nom; private String id; private int edad; private transient double nota; ... } class Grupo implements Serializable { private Alumno [] alumnos = new Alumno[20]; ... } 65
  • 66. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Ejemplo 4 (2/2) • Guardar y recuperar objetos (serialización): Grupo a1 = new Grupo(); a1.insertar(new Alumno("Pepe", "43510987F", 25, 8.5)); a1.insertar(new Alumno("Pepa", "65471234H", 18, 9.3)); ... ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("grupoA1")); out.writeObject(a1); out.close(); Grupo a2 = new Grupo(); ObjectInputStream in = new ObjectInputStream(new FileInputStream("grupoA1")); a2 = (Grupo) in.readObject(); in.close(); 66
  • 67. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Obtener información de ficheros y directorios (1/2) o Métodos de la clase File para extraer cualquier tipo de información: canRead mkdirs canWrite setReadOnly exists getName isHidden getPath isDirectory toURL isFile length createNewFile lastModified, createTempFile list delete listFiles renameTo .... 67
  • 68. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 15.ENTRADA Y SALIDA POR FICHEROS • Obtener información de ficheros y directorios (2/2): o Ejemplo File raiz = new File(“./"); String [] dir = raiz.list(); for (i = 0; i < dir.length; i++) System.out.println(dir[i]); 68
  • 69. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 69
  • 70. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 16.PROGRAMA PRINCIPAL Y ARGUMENTOS • Programa principal en una clase Java: class <Nombre> { public static void main (String[] args) { instrucciones; } } 70
  • 71. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 16.PROGRAMA PRINCIPAL Y ARGUMENTOS • Programa principal en una clase Java: o Ejemplo // Imprime una palabra (primer argumento) // un número determinado de veces (segundo argumento) class Mensaje { public static void main(String [] args) { if (args.lenght == 2) { for (int i = 1; i <= Integer.parseInt(args[1]); i++) { System.out.println(args[0] + " : " + i); } } } 71
  • 72. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 16.PROGRAMA PRINCIPAL Y ARGUMENTOS • Programa principal en un applet Java: class <Nombre> extends Applet { public void init() { instrucciones; } } 72
  • 73. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 16.PROGRAMA PRINCIPAL Y ARGUMENTOS • Programa principal en un applet Java: o Ejemplo import java.awt.*; import java.applet.*; public class HolaMundoApplet extends Applet { public void init() { repaint(); } public void paint(Graphics g) { g.drawString("Hola Mundo!", 25, 25); } } 73
  • 74. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 16.PROGRAMA PRINCIPAL Y ARGUMENTOS • Programa principal en un applet Java: o Ejemplo Insertar en una página web HTML el applet: <html> <body> <applet code="HolaMundoApplet“ width=300 height=50> </applet> </body> </html> 74
  • 75. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 75
  • 76. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 17.CLASES class <Nombre> [extends <Nombre_clase_padre>] { // declaración de atributos visibilidad [modificadores] tipo atributo1 [= valor]; visibilidad [modificadores] tipo atributo2 [= valor]; ... // declaración de métodos visibilidad [modificadores] tipo metodo1(argumentos) { instrucciones; } visibilidad [modificadores] tipo metodo2(argumentos) { instrucciones; } ... } 76
  • 77. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 17.CLASES • Donde: o visibilidad: public protected private o modificadores final static abstract o argumentos declaración de variables separadas por comas 77
  • 78. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 17.CLASES • Ejemplo (1/2) class Complejo { private double re, im; public Complejo(double re, double im) { this.re = re; this.im = im; } public String toString() { return (new String(re + "+" + im + "i")); } … 78
  • 79. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 17.CLASES • Ejemplo (2/2) … public boolean equals(Complejo v) { return ((re == v.re) && (im == v.im)); } public double modulo() { return (Math.sqrt(re*re + im*im)); } public void suma(Complejo v) { re = re + v.re; im = im + v.im; } } // Fin de la clase Complejo 79
  • 80. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 17.CLASES • Número variable de argumentos (desde la versión 1.5.0 de Java) visibilidad [modificadores] tipo metodo(Object ... args) { instrucciones; } o Ejemplo: public void suma(Complejo ... args) { for (int i=0; i<args.length; i++) { re = re + args[i].re; im = im + args[i].im; } } 80
  • 81. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 81
  • 82. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 18.OBJETOS • Declaración <NombreClasse> <NombreObjeto>; <NombreObjeto> = new <NombreClase>(inicialización); ... • Acceso a un atributo NombreObjeto.atributo • Llamada a un método de la clase de objeto NombreObjeto.metodo(argumentos); 82
  • 83. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 18.OBJETOS • Ejemplo: Complejo z, w; z = new Complejo(-1.5, 3.0); w = new Complejo(-1.2, 2.4); z.suma(w); System.out.println("Complejo: " + z.toString()); System.out.println("Modulo: " + z.modulo()); 83
  • 84. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 84
  • 85. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 85
  • 86. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 86
  • 87. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA o Dos o más métodos con el mismo nombre dentro de la misma clase. o Se diferencian en los parámetros class nombre_clase { public tipo_retorno nombre_método(parámetros) { código; } public tipo_retorno nombre_método(otros parámetros) { otro código; } ... } 87
  • 88. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA o Ejemplo (1/3) class Complejo { private double re, im; public Complejo(double r, double i) { re = r; im = i; } … 88
  • 89. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA o Ejemplo (2/3) … public Complejo sumar (Complejo c) { return new Complejo(re + c.re, im + c.im); } public Complejo sumar (double r, double i) { return new Complejo(re + r, im + i); } public String toString() { return re + " + " + im + "i"; } } // Fin de la clase Complejo 89
  • 90. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA o Ejemplo (1/3) Complejo c1 = new Complejo(1, 3); Complejo c2 = new Complejo(-4, 3.5); c2 = c1.sumar(c2); c2 = c2.sumar(0.5, -4); System.out.println(c1 + "n" + c2 + "n"); 90
  • 91. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 91
  • 92. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • CONSTRUCTORES o Se ejecuta automáticamente cuando se declara un objeto de una clase. o Tiene el mismo nombre que la clase. o Una clase puede tener más de un constructor (sobrecarga). o Por defecto, toda clase tiene un constructor sin parámetros y sin código, que desaparece una vez se escribe un método constructor para dicha clase. o Por defecto, en las clases con herencia antes de ejecutarse todo constructor, llama al código del constructor sin parámetros de la clase padre. Se puede cambiar escribiendo como primera línea de código del constructor: super(parámetros). 92
  • 93. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • CONSTRUCTORES o Sintaxis class nombre_clase { public nombre_clase(parámetros) { código; } public nombre_clase(otros parámetros) { código; } ... } nombre_clase objeto = new nombre_clase(parámetros_constructor); 93
  • 94. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • CONSTRUCTORES o Ejemplo 1 class Complejo { private double re, im; public Complejo(double r, double i) { re = r; im = i; } } 94
  • 95. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • CONSTRUCTORES o Ejemplo 2: se imprimirá por pantalla AB: class A { public A() { System.out.print("A"); } } class B extends A { public B() { System.out.print("B");} } class Principal { public static void main(String[] args) { B b = new B(); } } 95
  • 96. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 96
  • 97. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • THIS o Se utiliza como referencia del objeto actual que está ejecutando el método. o Es útil para o diferenciar los atributos de la clase de los parámetros, cuando éstos tengan el mismo nombre o y también cuando haya que llamar a un método pasando como referencia el objeto actual que está ejecutando el código. 97
  • 98. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • THIS o Ejemplo 1: class Complejo { private double re, im; public Complejo(double re, double im) { // this.re es el atributo, y re es el parámetro this.re = re; // this.im es el atributo, e im es el parámetro this.im = im; } } 98
  • 99. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • THIS o Ejemplo 2: class Actor { private Vector peliculas; public void incluirPelicula(Pelicula p) { peliculas.add(p); p.incluirActor(this); } } 99
  • 100. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 100
  • 101. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • HERENCIA (1/4) o Una clase puede heredar o derivar de otra Pasa a disponer automáticamente de todos los métodos y atributos de esta otra clase como si fueran propios. La clase que hereda se llama “hija” y la clase de la cual hereda se llama “padre”. o Por defecto, toda clase hereda de la clase Object, a menos que especifiquemos que hereda de otra clase mediante la palabra extends: class clase_hija extends clase_padre { ... } 101
  • 102. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • HERENCIA (2/4) o La clase hija puede redefinir los métodos heredados de la clase padre. o Un método de la clase hija puede llamar al código de un método de la clase padre mediante la palabra “super”: tipo_retorno metodo_clase_hija(argumentos) { ... ... super. metodo_clase_padre(argumentos) … ... } 102
  • 103. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • HERENCIA (3/4) o Un objeto de la clase hija es del tipo de la clase hija, pero también del tipo de la clase padre y del tipo de todos sus antecesores. o Operador lógico instanceof: Permite preguntar por el tipo de un objeto objeto instanceof nombre_clase o Se puede cambiar el tipo de un objeto escribiendo previamente su nuevo tipo entre paréntesis: (nueva_clase) objeto 103
  • 104. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • HERENCIA (4/4) o Una clase sólo puede heredar de otra clase y de varias interfaces. o En Java no existe la herencia múltiple. 104
  • 105. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • Ejemplo de sobrecarga, constructor, herencia, this y super: class Persona { private String nombre; private int edad; public Persona() { } public Persona(String nombre, int edad) { this.nombre = nombre; this.edad = edad; } … 105
  • 106. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • Ejemplo de sobrecarga, constructor, herencia, this y super: … public String toString() { return "Nombre: " + nombre + "n" + "Edad: " + edad + "n"; } } class Alumno extends Persona { private double nota; public Alumno(String nombre, int edad, double nota) { super(nombre, edad); this.nota = nota; } … 106
  • 107. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • Ejemplo de sobrecarga, constructor, herencia, this y super: … public String toString() { return super.toString() + "Nota: " + nota + "n"; } } // Fin de la clase Persona Persona p1 = new Persona(); Persona p2 = new Persona("Alex", 22); Alumno a1 = new Alumno("Pepe", 20, 8.5); System.out.println(p1 + "n" + p2 + "n" + a1); System.out.println(p2 instanceof Alumno); System.out.println(a1 instanceof Persona); System.out.println((Persona) a1); 107
  • 108. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 108
  • 109. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • VISIBILIDAD o public La accesibilidad de los métodos y atributos de una clase son accesibles para cualquier clase o private los métodos y atributos sólo son accesibles para la clase que los ha declarado o protected los métodos y atributos son accesibles para la clase que los ha declarado y para sus clases hijas o descendientes 109
  • 110. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 110
  • 111. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • FINAL o Se utiliza para declarar una constante, cuando lo encontramos delante de un atributo final double PI = 3.141592; un método que no se podrá redefinir, cuando lo encontramos delante de un método final bool par () { … } o una clase de la que ya no se podrá heredar, cuando lo encontramos delante de una clase. final class Estudiante{ … } 111
  • 112. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 112
  • 113. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • ABSTRACT o Denota un método que no va a tener código. o Las clases con métodos abstractos no se pueden instanciar y sus clases herederas deberán escribir el código de sus métodos abstractos si se quiere crear alguna instancia suya. 113
  • 114. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 114
  • 115. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • STATIC o Se aplica a los atributos y métodos de una clase que pueden utilizarse sin crear un objeto que instancie dicha clase. o El valor de un atributo estático es compartido por todos los objetos de dicha clase. 115
  • 116. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • STATIC • Ejemplo (1/2) class Persona { private String nombre; public static int num = 0; public Persona(String nombre) { this.nombre = nombre; num++; } public static int cuantos() { return num; } … 116
  • 117. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • STATIC o Ejemplo (2/2) public void finalize() throws Throwable { num--; super.finalize(); } } // Fin de la clase Persona class C { public static void main(String[] args) { Persona p1 = new Persona("Maria"); Persona p2 = new Persona("Alex"); System.out.println(Persona.cuantos()); } 117 }
  • 118. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 118
  • 119. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • EQUALS Y CLONE o Variables simples El nombre de una variable de tipo simple indica la dirección de memoria que contiene el valor de la variable (referencia directa). int a, b; Operador “==”: permite comparar valores de variables simples … (a == 3) … … (a == b) … Operador “=”: permite asignar un valor a una variable simple a = 3; a = b; 119
  • 120. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • EQUALS Y CLONE o Objetos El nombre de un objeto no contiene los valores de los atributos, sino la posición de memoria donde residen dichos valores de los atributos (referencia indirecta) Complejo w, z; Operador “==”: permite comparar si dos objetos ocupan la misma posición (comprueba si son el mismo objeto) … (w == z) … Método “equals”: permite comprobar si dos objetos poseen atributos con los mismos valores (compara los contenidos) w.equals (z) 120
  • 121. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • EQUALS Y CLONE o Objetos Operador “=”: “asigna” un objeto a otro objeto que ya existe (serán el mismo objeto) Complejo w, z; w = z; A partir de este instante, “w” ocupa la misma posición de memoria que “z”. Método clone: crea una copia de un objeto determinado y la asigna a otro. Complejo w = (Complejo) z.clone (); 121
  • 122. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • EQUALS Y CLONE o Ejemplo (1/2) class Student { public String name; public double test1, test2, test3; public double getAverage() { return (test1 + test2 + test3) / 3.0; } } 122
  • 123. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • EQUALS Y CLONE o Ejemplo (2/2) Student std, std1, std2, std3; std = new Student(); std1 = new Student(); std2 = std1; std3 = null; std.name = "John Smith"; std1.name = "Mary Jones"; 123
  • 124. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • EQUALS Y CLONE 124
  • 125. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • SOBRECARGA • CONSTRUCTORES • THIS • HERENCIA • SUPER • INSTANCEOF • CONVERSIÓN • VISIBILIDAD • FINAL • ABSTRACT • STATIC • EQUALS Y CLONE • POLIMORFISMO 125
  • 126. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • POLIMORFISMO o Se puede declarar un objeto de una clase, pero instanciarlo como un descendiente de dicha clase lo contrario no es posible clase_padre objeto = new clase_descendiente(parámetros_constructor); 126
  • 127. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • POLIMORFISMO o Ejemplo (1/4) class Complex { double re, im; public Complex(double re, double im) { this.re = re; this.im = im; } // Lo siguiente también podría ser "abstract public void imprimir();" public void imprimir() { System.out.println(re + " " + im); }; } // Fin de la clase Persona 127
  • 128. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • POLIMORFISMO o Ejemplo (2/4) class Complex1 extends Complex { public Complex1(double re, double im) { super(re, im); } public void imprimir() { System.out.println(re + "+" + im + "i"); } } 128
  • 129. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • POLIMORFISMO o Ejemplo (3/4) class Complex2 extends Complex { public Complex2(double re, double im) { super(re, im); } public void imprimir() { System.out.println("(" + re + "," + im + ")"); } } 129
  • 130. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 19.MÁS SOBRE CLASES Y OBJETOS: • POLIMORFISMO o Ejemplo (4/4) class Principal { public static void main(String[] args) { Complex v[] = new Complex[2]; v[0] = new Complex1(5, 4); v[1] = new Complex2(1, 3); for (int i = 0; i < v.length; i++) { v[i].imprimir(); } } } 130
  • 131. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 131
  • 132. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Interfaz: clase completamente abstracta. o Ninguno de sus métodos tiene código. o Puede incluir atributos “constantes” Todos los atributos de una interface son públicos y estáticos Por tanto es redundante escribir public static • Java no posee herencia múltiple, o Pero una clase puede implementar una o más interfaces, debiendo definir sus métodos. 132
  • 133. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Sintaxis interface <Nombre_interface> [extends < Nombre_interface_padre>] { [public static] final int CONSTANTE 1 = valor 1; [public static] final int CONSTANTE 2 = valor 2; … visibilidad [modificadores] tipo metodo1(argumentos); visibilidad [modificadores] tipo metodo2(argumentos); ... } class <Nombre_clase> extends <clase_padre> implements <interface1>, <interface2>, ... { ... 133 }
  • 134. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Ejemplo (1/7) o Se desea crear una clase llamada Vector: sus elementos pueden ser de cualquier tipo, Sus elementos se han de poder ordenar con un método de la clase Vector imprimir con un método de la clase Vector 134
  • 135. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Ejemplo (2/7) interface Comparable { int compareTo(Object o); } interface Imprimible { String toString(); } 135
  • 136. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Ejemplo (3/7) class MiVector { Object elementos[]; int num; public MiVector(int capacidad) { elementos = new Object[capacidad]; num = 0; } public void añadir(Object o) { if (num < elementos.length) elementos[num++] = o; } … 136
  • 137. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Ejemplo (4/7) … public void ordenar() { Object aux; for (int i = 0; i < num-1; i++) for (int j = i+1; j < num; j++) if (((Comparable)elementos[i]).compareTo(elementos[j]) > 0) { aux = elementos[i]; elementos[i] = elementos[j]; elementos[j] = aux; } } 137
  • 138. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Ejemplo (5/7) … public void imprimir() { for (int i = 0; i < num; i++) System.out.println((Imprimible)elementos[i]); } } // Fin de la clase MiVector 138
  • 139. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Ejemplo (6/7) class Persona { public String nom; } class Alumno extends Persona implements Comparable, Imprimible { public double nota; public int compareTo(Object o) { return nom.compareTo(((Alumno)o).nom); } public String toString() { return nom + " " + nota; } } 139
  • 140. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 20.INTERFACES • Ejemplo (7/7) class Principal { public static void main(String[] args) { MiVector v = new MiVector(5); Alumno a = new Alumno(); a.nom = "Pepe"; a.nota = 6.7; v.añadir(a); Alumno b = new Alumno(); b.nom = "Pepa"; b.nota = 7.6; v.añadir(b); v.ordenar(); v.imprimir(); } 140 }
  • 141. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 141
  • 142. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Definición de applet o Programa diseñado para ser ejecutado dentro de otra aplicación, como, por ejemplo, un navegador web 142
  • 143. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Sintaxis (1/3) import java.awt.*; import java.applet.*; class <Nombre> extends Applet { // declaración de atributos visibilidad [modificadores] tipo atributo1 [= valor]; visibilidad [modificadores] tipo atributo2 [= valor]; ... // declaración de métodos visibilidad [modificadores] tipo metodo1(argumentos) { instrucciones; } … 143
  • 144. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Sintaxis (2/3) … // método de inicialización (principal) public void init() { instrucciones; } // método de visualización (dibujar) public void paint(Graphics g) { instrucciones; } … 144
  • 145. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Sintaxis (3/3) // método de activación (-> visible) public void start() { instrucciones; } // método de desactivación (-> invisible) public void stop() { instrucciones; } // método de destrucción public void destroy() { instrucciones; } … } // Fin de la declaración del “applet” <Nombre> 145
  • 146. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Inserción de un applet en una página web (HTML) <html> <body> ... <applet code="nombre_applet" atributos> <param nombre_parametro = "valor"> <param nombre_parametro = "valor"> ... código HTML si el navegador no puede ejecutar Java </applet> </body> </html> 146
  • 147. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Ejemplo (1/4) import java.awt.*; import java.applet.*; public class PruebaApplet extends Applet { Image logo; AudioClip melodia; TextField cuadroTexto; … 147
  • 148. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Ejemplo (2/4) … public void init() { logo = getImage(getDocumentBase(), "imágenesLogotipo.png"); melodia = getAudioClip(getDocumentBase(), "Melodia.au"); cuadroTexto = new TextField(20); cuadroTexto.setText("Aquí puedes escribir"); add(cuadroTexto); } public void start() { melodia.loop(); } 148
  • 149. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Ejemplo (3/4) public void paint(Graphics g) { g.drawImage(logo, 0, 0, this); g.drawString(cuadroTexto.getText(), 25, 25); } public void stop() { melodia.stop(); } public void destroy() { } } // Fin de la declaración del applet 149
  • 150. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 21.APPLETS • Ejemplo (4/4) HTML Applet: <html> <body> <applet code="PruebaApplet" width=300 height=50 align=middle> </applet> </body> </html> 150
  • 151. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 12.SENTENCIAS 13.LIBRERÍAS 14.ENTRADA Y SALIDA POR PANTALLA 15.ENTRADA Y SALIDA POR FICHEROS 16.PROGRAMA PRINCIPAL Y ARGUMENTOS 17.CLASES 18.OBJETOS 19.MÁS SOBRE CLASES Y OBJETOS 20.INTERFACES 21.APPLETS 22.EXCEPCIONES 151
  • 152. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Permiten controlar posibles situaciones de error try { código donde se pueden producir excepciones } catch (TipoExcepcion1 NombreExcepcion) { Código a ejecutar si se produce una excepción del tipo TipoExcepcion1 } catch (TipoExcepcion2 NombreExcepcion) { Código a ejecutar si se produce una excepción del tipo TipoExcepcion1 } ... finally { Código a ejecutar tanto si se produce una excepción como si no 152 }
  • 153. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Ejemplo (1/2) String salario; BufferedReader fichero1 = null; BufferedWriter fichero2 = null; try { fichero1 = new BufferedReader(new FileReader(“salarios.txt")); fichero2 = new BufferedWriter(new FileWriter(“salarios.new")); while ((salario = fichero1.readLine()) != null) { salario = (new Integer(Integer.parseInt(salario)*10).toString()); fichero2.write(salario+"n"); } } 153
  • 154. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Ejemplo (2/2) catch (IOException e) { System.err.println(e); } catch (NumberFormatException e) { System.err.println("No es un número"); } finally { fichero1.close(); fichero2.close(); } 154
  • 155. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Java posee multitud de excepciones agrupadas por familias. o ArithmeticException o IOException o EOFException o FileNotFoundException o NullPointerException o NegativeArraySizeException o ArrayIndexOutOfBoundsException o SecurityException o NumberFormatException o ... 155
  • 156. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES 156
  • 157. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Java posee multitud de “errores” o Fallos de la máquina virtual que es mejor que no los gestione la aplicación. o Por ejemplo: o OutOfMemoryError o InternalError o StackOverflowError o UnknownError o NoClassDefFoundError, o … 157
  • 158. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Creación de una nueva excepción public class NombreNuevaExcepcion extends NombreExcepcion { atributos y métodos } • Para declarar que un método que lanza excepciones: visibilidad [modificadores] tipo método(argumentos) throws NombreExcepcion1, NombreExcepcion2, ... { ... ... throw new NombreExcepcion1(parámetros); ... ... throw new NombreExcepcion2(parámetros); ... 158 }
  • 159. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Ejemplo (1/4) class CoeficientZeroException extends ArithmeticException { public CoeficientZeroException(String mensaje) { super(mensaje); } }; 159
  • 160. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Ejemplo (2/4) // Clase que representa una ecuación de primer grado: a x + b = 0 class Ecuacion { private double a, b; public Ecuacion(double coef1, double coef0) { a = coef1; b = coef0; } public double Raiz() throws CoeficientZeroException { if (a == 0) throw new CoeficientZeroException("La ecuación no es de primer grado"); else return -b/a; } } 160
  • 161. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Ejemplo (3/4) class Principal { public static void main(String[] args) throws Exception { try { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Introduzca el coeficiente del término de grado 1:"); double c1 = Integer.parseInt(in.readLine()); System.out.print("Introduzca el coeficiente del término de grado 0:"); double c2 = Integer.parseInt(in.readLine()); Ecuacion eq = new Ecuacion(c1, c2); System.out.println("La solución es : " + eq.Raiz()); } 161
  • 162. PROCESADORES DE LENGUAJES INTRODUCCIÓN A JAVA 22.EXCEPCIONES • Ejemplo (4/4) catch (CoeficientZeroException e) { System.err.println(e); } catch (NumberFormatException e) { System.err.println("Número incorrecto ... " + e.getMessage()); } catch (Exception e) { System.err.println("Excepción desconocida"); throw e; } } } 162