SlideShare ist ein Scribd-Unternehmen logo
1 von 203
PROGRAMACIÓN CON JAVA

                 Cursos TAG
              Alberto Tablado
                   Julio 2004
Índice
●
    Introducció n a Java
●
    Java bá
          sico
●
    Objetos con Java
●
    Conceptos avanzados
INTRODUCCIÓN A JAVA
●
    Historia
●
    Características de Java
●
    Java Development Kit
●
    Herramientas del kit
●
    Entornos de desarrollo
Bibliografía
●
    Java Tutorial
    –   http://java.sun.com/docs/books/tutorial/index.html
●
    Thinking in Java
    –   http://www.mindview.net/Books/TIJ/
●
    Aprenda Java como si estuviera en 1º
    –   http://www.entrebits.com/descargas/programas/apre
        nda-java-como-si-estuviera-en-primero/
●
    Curso de iniciació n a Java
    –   http://www.gui.uva.es/~jal/java/index.html
Una breve historia
●
    Iniciativa de Sun Microsystems en 1991
●
    Lenguaje para ser empleado en
    dispositivos pequeñ os (set top boxes)
    – Poca memoria
    – Poca potencia
    – Independencia de la plataforma
Una breve historia
●
    Fracaso y oportunidad
●
    Con el auge de la WWW, crearon el
    navegador HotJava
    – Características de Java
    – Primero en usar applets

●
    El é xito vino porque Netscape aceptó
    los applets
Características
●
    Simple
●
    Orientado a objetos
●
    Distribuido
●
    Robusto
●
    Seguro
●
    Independiente de la plataforma
●
    Multihilo nativo
Simple
●
    Sintaxis de C / C++
    –   Gran base de programadores
●
    Se eliminan sus problemas
    – Aritmé tica de punteros
    – Recolecció n de basura
Orientado a objetos
●
    Paradigma de programació n que
    basado en modelar el sistema como
    clases e instancias de las clases
●
    Evolució n del modelo imperativo
Robusto
●
    Gran cantidad de comprobaciones en
    tiempo de ejecució n
    – Límite de arrays
    – Tamañ o de la pila
    – Acceso a variables
    – Tipo de objetos
Seguro
●
    Seguridad a nivel de có digo
    –   Se comprueba que el có digo es coherente
        antes de ejecutarse
●
    Seguridad en ejecució n
    –   Gestores de seguridad limitan acceso a
        recursos
Independiente de la plataforma
●
    Java sigue la política de WORE
    – Escribe (compila) el có digo una vez y
      podrá ejecutarlo donde sea
           s
    – Multiplataforma mediante el uso de un
      có digo intermedio (bytecodes)
●
    Java Virtual Machine
    –   Interpreta el có digo bytecode
Multihilo nativo
●
    Java soporta hilos de forma nativa la
    máquina virtual
●
    Mapeados sobre el sistema operativo
    (native) o simulados (green)
Ediciones JAVA
Java Development Kit
●
    J2SE (Java 2 Standard Edition)
●
    Nivel intermedio de programació n
●
    Versió n 1.4
    – Java 2 a partir de la versió n 1.2
    – La última versió n es la 1.5
Java Development Kit
Java Development Kit
●
    No incluye entorno de edició n
●
    Varios:
    – NetBeans / SunOne
    – Eclipse
    – JDeveloper / JBuilder
    – IBM VisualAge
Java Development Kit
●
    Diferencias
●
    Java 2 SDK
    –   Incluye lo necesario para el desarrollo de
        aplicaciones
●
    Java 2 JRE
    –   Incluye só lo lo necesario para la
        ejecució n de aplicaciones
El CLASSPATH
●
    Dó nde se encuentran las clases para
    ejecutar la aplicació n
●
    Dos maneras:
    – Variable de entorno CLASSPATH
    – Argumento (-cp o -classpath)

●
    Por defecto, las clases del JDK (JRE)
Compilar con el JDK
●
    La aplicació n es javac
●
    javac <fichero.java>
    – -d <destino>
    – -classpath <jar_o_directorio>




                                      Simple
Ejecutar con el JDK
●
    La aplicació n es java
●
    java <clase>
    –   -cp <jar_o_directorio>
●
    java -jar <fichero.jar>
    –   -cp <jar_o_directorio>




                                  Simple
Ejecutar con el JDK
●
    La aplicació n es appletviewer
●
    appletviewer <fichero.html>
●
    O abrir el fichero HTML con un
    navegador




                                     PruebaApplet
Ejemplos de Applets
●
    Duke bailando
    –   http://java.sun.com/docs/books/tutorial/getStarted/index.html

●
    Pintando en pantalla
    –   http://java.sun.com/docs/books/tutorial/java/concepts/practical.html

●
    Applets de ejemplo sobre la máquina
    virtual Java
    –   http://pl.changwon.ac.kr/~pl/seminar/jvm/insidejvm/applets/
Ficheros JAR
●
    Java Archive
●
    Son ficheros ZIP que contienen clases,
    fuentes, etc.
●
    Tienen un directorio META-INF dó nde
    reside el manifiesto (MANIFEST.MF)
    –   Describe el contenido del JAR
La importancia del API
●
    Un lenguaje muere si no tiene un buen
    API (Interfaz para la programació n de
    aplicaciones)
●
    Java tiene mucha funcionalidad nativa
    –   http://java.sun.com/j2se/1.4.2/docs/api/index.html
●
    APIs para otras funcionalidades
JDeveloper
●
    Desarrollado por Oracle
    –   Empezó como fork del JBuilder
●
    Gratuito
●
    Desarrollo de aplicaciones
●
    Depurador
●
    Diseñ o de ventanas
JDeveloper
JDeveloper
●
    Ejecutar JDeveloper
●
    Abrir el fichero curso.jws
    –   File -> Open
●
    Ejemplos del curso
●
    Desarrollar nuevos ejemplos
JDeveloper
●
    File -> New
●
    General -> Simple Files -> Java Class
JAVA BÁSICO
●
    Ficheros Java
●
    Variables y tipos de datos
●
    Á
    mbito y visibilidad
●
    Operadores y expresiones
●
    Sentencias (condicionales y bucles)
●
    Comienzo y terminació n de programas
Código de ejemplo

public class Basic {
  public static void main(String[] args) {
     int sum = 0;
     for (int current = 1; current <= 10; current++) {
        sum += current;
     }
     System.out.println("Sum = " + sum);
  }
}


                                                         Basic
Ficheros JAVA
●
    Ficheros de texto
●
    Los ficheros describen clases
    –   Como mucho, una única clase pública
●
    Los ficheros deben llevar el mismo
    nombre que la clase pú blica
Comentarios
●
    Comentario de una línea: //
    –   int usu = 0; // el número de usuarios
●
    Comentario de bloque: /* .... */
    –   /* Esto no se tendrá
        en cuenta */
●
    Comentario javadoc: /** .... */
    –   Para comentar el có digo


                                                Comentarios
La definición de la clase
●
    En Java, todo son clases
●
    Así que cada fichero define una clase
    –   public class MiClase
●
    La clase tiene atributos y mé todos
●
    El mé todo main es especial
    – public static void main(String[] args) {...}
    – Es el punto de arranque de una clase
Variables
●
    Almacenan el estado de los objetos
●
    Pueden definirse en cualquier parte del
    có digo, antes de su uso
●
    Deben empezar con letra, guió n bajo
    (_) o dó lar ($)
●
    Sensible a mayúsculas/minúsculas
Variables
●
    Dí que variables son válidas
     ×   int
     √   anInt
     √   i
     √   i1
     ×   1
     √   thing1
     ×   1thing
     ×   ONE-HUNDRED
     √   ONE_HUNDRED
     √   something2do
Variables
●
    Las variables tienen un tipo que define
    el rango de valores y las operaciones
    que pueden hacerse
    –   Java es fuertemente tipado
●
    Tipos primitivos
●
    Tipos referencia
Tipos de datos primitivos
●
    Enteros (se inicializan a 0)
    – Byte: un byte con signo ((byte)12)
    – Short: dos bytes con signo ((short)1231)
    – Int: cuatros bytes con signo (1238921)
    – Long: ocho bytes con signo (728478283L)

●
    Reales (se inicializan a 0.0)
    – Float: punto flotante 32 bits (1.2342F)
    – Double: punto flotante 64 bits (123.131)
Tipos de datos primitivos
●
    Booleanos (se inicializa a false)
    –   true / false
●
    Carácter (se inicializa al carácter nulo)
    –   'S', 'a'
●
    El tamañ o de datos estádefinido y es
    independiente de la plataforma



                                                TipoDatos
Tipos de datos referencia
●
    Objetos
    –   Instancias de clases
●
    Arrays
    –   Colecció n de elementos del mismo tipo,
        sean básicos o complejos
●
    Se inicializan a null
Inicialización
●
    Las variables pueden inicializarse en la
    definició n

    int a = 2;
    char b = 'a';
    double c = 123.13123;
    Bicicleta d = new Bicicleta();
Constantes
●
    Variables que no pueden cambiar de
    valor una vez establecido
●
    Modificador final

    final int a;
    a = 12;
    final double b = 456.4546456;


                                         Constantes
Ámbito
●
    Ámbito: parte de programa en el que una
    variable estádefinida
●
    Variable miembro (de una clase)
●
    Pará
       metro (de un mé todo)
●
    Variable local (de un mé todo)
●
    Excepciones
Ámbitos




          Ambito
Visibilidad
●
    Visibilidad: parte de programa en el que
    una variable es accesible sin ser
    calificada
●
    Las variables se pueden ocultar por
    otras con el mismo nombre en á mbitos
    má anidados
       s
Visibilidad

   Int a
               Int a


   Int a      Int a

                ¿a?




                       Visibilidad
Variables

public class Basic {
  public static void main(String[] args) {
     int sum = 0;
     for (int current = 1; current <= 10; current++) {
        sum += current;
     }
     System.out.println("Sum = " + sum);
  }
}


¿Cúal es? ¿Qué tipo tienen? Alcance
                                                         Basic
Variables

public class Basic {
  public static void main(String[] args) {
     int sum = 0;
     for (int current = 1; current <= 10; current++) {
        sum += current;
     }
     System.out.println("Sum = " + sum);
  }
}


¿Cúal es? ¿Qué tipo tienen? Alcance
                                                         Basic
Variables

public class Basic {
  public static void main(String[] args) {
     int sum = 0;
     for (int current = 1; current <= 10; current++) {
        sum += current;
     }
     System.out.println("Sum = " + sum);
  }
}


¿Cúal es? ¿Qué tipo tienen? Alcance
                                                         Basic
Operadores
●
    Unarios
    op1 operator
    operator op1
●
    Binarios
    op1 operator op2
●
    Ternarios
    op1 operator1 op2 operator2 op3
Operadores aritméticos
●
    Binarios
    – Suma: op1 + op2
    – Resta: op1 – op2
    – Multiplicacion: op1 * op2
    – Divisió n: op1 / op2
    – Mó dulo: op1 % op2




                                  OperadoresAritmetico
Operadores aritméticos
●
    Operaciones con enteros y reales
●
    El resultado depende de los operadores
    – Algú double -> double
          n
    – Algú float -> float
          n
    – Algú long -> long
          n
    – Si no, int
Operadores aritméticos
●
    Unarios
    – Número negativo (-2, -123)
    – Convierte byte y short en int (+2, +65)

●
    Suma / resta unaria
    – ++op1
    – op1++
    – --op1
    – op1--
Operadores de comparación
●
    Devuelven booleanos
    – Igualdad: op1 == op2
    – Desigualdad: op1 != op2
    – Mayor que: op1 > op2
    – Mayor o igual que: op1 >= op2
    – Menor que: op1 < op2
    – Menor o igual que: op1 <= op2




                                      OperadoresComparacio
Operadores de comparación
●
    Mucho cuidado con la igualdad
●
    Cuando se comparan variables
    referencia, se compara si ambos
    objetos son el mismo, no si son iguales
    (tienen el mismo estado)
●
    Error típico


                                 OperadoresComparacio
Operadores booleanos
●
    Operan sobre booleanos y devuelven
    booleanos
    – AND: op1 && op2
    – OR: op1 || op2
    – NOT: !op1
    – XOR: op1 ^ op2
Operadores booleanos
●
    Java só lo evalú si es necesario
                    a
●
    Si el primer operando de un AND es
    false, no evalú el segundo y devuelve
                   a
    false
    –   Lo mismo con OR
●
    Para obligar a evaluar el segundo
    operando, usar & (AND) y | (OR)

                                   OperadoresBooleano
Operadores de desplazamiento
●
    Opera sobre enteros y devuelve enteros
    – Desplazar a izquierda: op1 << num
    – Desplazar a derecha
      op1 >> num (extiende signo)
      op1 >>> num (no extiende signo)




                                 OperadoresDesplazamient
Operadores lógicos
●
    Operan sobre bits de los enteros
    – AND: op1 & op2
    – OR: op1 | op2
    – XOR: op1 ^ op2
    – Complemento: ~op1




                                       OperadoresBinario
Operadores de asignación
●
    Asigna el valor de una variable a otra
    –   op1 = op2
●
    Deben ser compatibles en tipo
    – Enteros, reales, cará
                          cter
    – Misma clase o subclases

●
    Al asignar variables referencia, no se
    hace una copia del objeto
Operadores de asignación
●
    Asignació n con operació n

    op1 = op1 operador op2 (a = a + b)

    op1 operador= op2             (a += b)

●
    +, -, *, /, %, &, |, ^, <<, >>, >>>
Otros operadores
●
    ?: (if-then-else)
    if (a == b) then c else d;
    a == b ? c : d
●
    [] - indexació n de arrays
●
    . (punto): acceso a mé todos y variables
●
    (): para especificar los argumentos a
    mé todos
Ejercicios

   ¿Qué operadores hay?

   arrayOfInts[j] > arrayOfInts[j+1]


int i = 10;          n = 11          int i = 10;      n = 11
int n = i++%5;       i= 0            int n = ++i%5;   i= 1


 int i = 8; (1000)            int i = 17; (10001)
 i >>=2;                      i >>=1;

 i = 2 (10)                   i = 8 (1000)
Casting
●
    Cambiar el tipo de una variable
●
    Cambios de tipo automáticos
●
    De int a float, de float a int
    int a;
    float b;
    a = (int) b; // Se pierde informació n
    b = (float) a; // No es necesario

                                         CastingBasico
Expresiones
●
    Una expresió n es un conjunto de
    variables, operadores e invocaciones a
    mé todos que se evalú como un ú
                         an           nico
    resultado
    – a
    –1+2
    – 12 + a.getNumHoras() * 2
Expresiones
●
    Las expresiones, ademá de un valor,
                            s
    tienen un tipo asociado, que depende
    de las subexpresiones dentro de la
    expresió n
●
    Una expresió n se puede conjuntar con
    otras para formar una expresió n mayor
    mediante el uso de operadores
Expresiones
●
    Las expresiones se pueden emplear en
    – Asignaciones
    – Invocaciones a mé todos
    – Operandos
Orden de evaluación
●
    Las expresiones complejas pueden
    evaluarse de diferentes formas

    a+b–c*4

    ¿((a + b) – c) * 4?
    ¿((a + b) – (c * 4))?
Orden de evaluación
●
    Se pueden emplear paré ntesis para
    especificar el orden de evaluació n
    –   ((a + b) – c) * 4
●
    Existen las reglas de precedencia
    –   * y / má precedencia que + y -
               s
●
    Pero es mejor despejar la ambigüedad
    mediante el uso de paré ntesis
    –   a + b – (c * 4)
Asociatividad
●
    En operadores binarios, ¿có mo se leen
    los operadores?
●
    Asociatividad a la izquierda: suma
    –   1 + 2 + 3 + 4 => (((1 + 2) + 3) + 4)
●
    Asociatividad a la derecha
    –   a = b = c => (a = (b = (c)))
Sentencias
●
    Una sentencia es una unidad completa
    de ejecució n y termina en punto y coma
●
    Sentencias de expresió n
    –   Una expresió n terminada en ;
●
    Sentencias de declaració n
●
    Sentencias de control de flujo
Bloque
●
    Un bloque es un conjunto de cero o más
    sentencias agrupadas entre llaves
    {
      int a = 1120;
    }
●
    Un bloque es, funcionalmente, como
    una sentencia y puede aparecer dó nde
    puedan aparecer sentencias
Control de flujo
●
    Un programa es un conjunto de
    sentencias
●
    Hasta ahora, podemos hacer
    programas que usen variables, pero no
    podemos hacer nada para romper el
    hilo secuencial
Condicionales
●
    Permiten ejecutar ciertas sentencias
    dependiendo de una condició n
●
    If / else / else if
●
    Switch / case
●
    ?:



                                       Condicionales
If / else / else if
●
    Só lo ejecuta el cuerpo si la condició n
    es cierta
●
    La condició n debe ser booleana



                 if (condición) {
                       cuerpo
                 }
If / else / else if
●
    Es posible especificar qué hacer si la
    condició n no se cumple mediante el
    else

                if (condición) {
                      cuerpo1
                }
                else {
                      cuerpo2
                }
If / else / else if
●
    Se pueden encadenar varios
    condicionales
●
    Aunque má de una condició n sea
                 s
    cierta, só lo se ejecuta el cuerpo de la
    condició n que aparece la primera
●
    Si no se verifica ninguna condició n, se
    ejecuta el else final
If / else / else if
   if (condición1) {
         cuerpo1
   }
   else if (condición2){
         cuerpo2
   }
   else if (condición3) {
         cuerpo3
   }
   else {
         cuerpo4
   }
switch
●
    Modo compacto de los if else anidados
●
    Só lo permite condiciones de igualdad
    – Si la condició n es igual a 'a', se ejecuta
      cuerpo 1
    – Si ninguna se verifica
      se ejecuta 'default'              switch (condición) {
                                         case a: cuerpo1
                                         case b: cuerpo2
                                         default: cuerpo3
                                         }
switch
●
    Mucho cuidado con switch
●
    Se ejecutan las sentencias desde el
    case que verifica la condició n hasta el
    final del switch o hasta un break.




                                         Condicionales
Bucles
●
    Permiten ejecutar repetidamente un
    conjunto de sentencias (cuerpo)
    mientras la condició n de bucle se
    cumpla
●
    Tres tipos
    – while
    – do while
    – for
while
●
    while: ejecuta el cuerpo del bucle
    mientras la condició n sea cierta
●
    La condició n se evalú antes de la
                          a
    iteració n



                 while (condición) {
                      cuerpo
                 }
do while
●
    do while: ejecuta el cuerpo del bucle
    mientras la condició n sea cierta
●
    La condició n se evalú al final de la
                           a
    iteració n, con lo que siempre se ejecuta
    al menos una vez

                 do{
                     cuerpo
                 } while (condición)
for
●
    Ejecuta el cuerpo del bucle mientras la
    condició n sea cierta
●
    Antes de la primera iteració n, realiza la
    inicializació n
    –   Ámbito del cuerpo del for
●
    Tras cada iteració n, ejecuta el
    incremento
for
●
    Cualquiera de los tres puede ser vacío
          for (inicialización; condición; incremento) {
                cuerpo
          }

                   inicialización
                   while (condición) {
                         cuerpo
                         incremento
                   }
Break
●
    Rompe la ejecució n de un bucle y
    devuelve el control al exterior
●
    Puede proporcionarse una etiqueta y
    salir de bucles anidados

     while (condición) {     externo: while (condición) {
          ....                         while (condición2) {
          break;                         break externo;
     }                       }}
Continue
●
    Termina la ejecució n de una pasada del
    bucle y devuelve el control al comienzo
    –   Ejecuta el incremento del for
●
    Puede proporcionarse una etiqueta y
    terminar la iteració n de bucles anidados

while (condición) {    externo: while (condición) {
     ....                        while (condición2) {
     continue;                    continue externo;
}                      }}
                                                        Bucles
Return
●
    Termina la ejecució n del mé todo y sale
    de é l
●
    Si el mé todo tienen que devolver un
    valor, debe especificarse en la
    sentencia return (return a)
●
    Si no se especifica, al final del mé todo
    hay un return implícito
Método main
●
    Es un mé todo especial
●
    Punto de entrada del programa
●
    public static void main(String args[])
●
    args: vector de cadenas de texto que
    representa los parámetros pasados al
    programa


                                             Main
Terminar la ejecución
●
    Un programa se para cuando no existe
    ningú hilo de ejecució n
         n
●
    Tambié n se puede terminar la
    aplicació n con el mé todo
    System.exit(int)
    –   El entero es el có digo de retorno




                                             Terminar
OBJETOS CON JAVA
●
    Estado y comportamiento
●
    Clases, atributos y mé todos
●
    Herencia, this y super
●
    Interfaces
●
    Paquetes
●
    Sobrecarga
OBJETOS CON JAVA
●
    Constructores y destructores
●
    Seguridad
●
    Casting y comparació n
●
    Arrays y vectores
●
    Strings y cadenas de texto
Introducción
●
    Modelar los programas como
    interacció n entre objetos
●
    Los objetos se describen mediante
    clases
●
    Las clases se instancian para crear un
    nuevo objeto
Objetos
●
    Ejemplos a nuestro alrededor
    –   Hojas, bolígrafos, el profesor, etc...
●
    Dos características
    – Tienen un estado
    – Tienen un comportamiento

●
    Un objeto es un conjunto software de
    variables y los mé todos asociados
Estado
●
    El estado se guarda en una o más
    variables
●
    Una variable es un espacio de
    almacenamiento con un tipo de datos
    asociado que se identifica mediante un
    nombre
Comportamiento
●
    El comportamiento se implementa
    mediante mé todos
●
    Los mé todos son trozos de có digo
    (subrutinas) asociados con el objeto
Encapsulación
●
    Podemos ver los objetos java como
    unas variables que guardan el estado y
    unos mé todos que lo cambian
●
    El acceso a las variables y mé todos está
    regulado por los calificadores de acceso
Encapsulación
●
    Modularidad: el uso de la
    encapsulació n permite el desarrollo
    modular de nuestra aplicació n
●
    Ocultació n: el acceso al estado del
    objeto estáregulado por los mé todos,
    que aseguran que el estado del objeto
    es consistente
Mensajes
●
    Los objetos autó nomos no son muy
    útiles: deben cooperar
●
    Se dice que pasan mensajes
    (invocació n de mé todos)
●
    Participantes
    – Emisor
    – Receptor
    – Contenido (pará
                    metros)
Clase
●
    Cada objeto es independiente de otros
    objetos similares
●
    Pero todos comparten ciertas
    características
    – Pasan por estados similares
    – Tienen el mismo comportamiento
Clase
●
    Una clase es una plantilla, o prototipo,
    que define las variables y los mé todos
    comunes a todos los objetos de cierto
    tipo
Instanciación
●
    Cuando una clase se instancia, se crea
    un nuevo objeto en el sistema
●
    Se crea una copia de todas las
    variables de instancia para almacenar el
    estado de este objeto
Estado
●
    El estado se guarda en variables
●
    Variables de instancia
    –   Cada objeto tiene su valor propio e
        independiente del resto de los objetos
●
    Variables de clase o estáticas (static)
    –   El valor es compartido por todos los
        objetos de la clase
Métodos
●
    Cambian el estado del objeto
●
    Mé todos de instancia
    –   Pueden acceder a variables de instancia o
        de clase
●
    Mé todos de clase o estáticas (static)
    –   Só lo pueden acceder a variables de clase
Herencia
●
    Se pueden definir clases en funció n de
    otras clases
Herencia
●
    Superclase: clase padre
    –   Bicicleta es superclase de mountain-bike,
        tá
         ndem y carreras.
●
    Subclase: clase hija
    –   Mountain-bike, tá
                        ndem y carreras son
        subclases de bicicleta
Herencia
●
    Las subclases heredan de la superclase
    el estado y los comportamientos
    –   Mountain-bike, tándem y carreras tienen
        las variables de marcha, velocidad y
        frenos y los mé todos frenar, ....
●
    Pero pueden ser diferentes en algún
    aspecto
Herencia
●
    Las subclases pueden añ adir nuevas
    variables y comportamientos
    –   Para guardar un estado específico de la
        subclase
●
    Las subclases incluso pueden redefinir
    el comportamiento de un mé todo para
    adaptarlo al nuevo estado
Herencia
●
    La relació n superclase – clase –
    subclase forma una jerarquía
●
    Cuanto má abajo en la jerarquía, má
              s                        s
    especializada estarála clase
●
    En la cima de la jerarquía estáObject
Herencia
●
    Se define con extends
●
    Java tiene herencia simple
    –   Una clase só lo puede tener una única
        superclase
Herencia
Herencia
●
    La subclase puede redefinir lo mé todos
    de la superclase
    –   Para adaptarlos a su definició n
●
    Para redefinir un mé todo, só lo hay que
    crear un mé todo en la subclase con la
    misma firma (nombre + argumentos) el
    de la superclase
Herencia

public class Padre {
     public int metodo(int a) {...}
}



public class Hija extends Padre{
     public int metodo(int a) {...}
}
Herencia
●
    La superclase puede evitar la
    redefinició n mediante el modificador
    final

         public class Padre {
              public final int metodo(int a) {...}
         }
this
●
    Dentro de un mé todo, hace referencia
    al objeto al que se aplica el mé todo
●
    Só lo aparece en mé todos de instancia
    –   Si no hay instancia, no hay this
●
    Se puede usar para acceder a variables
    aunque esté n ocultas
this


public class Prueba {
     private int a;
     public void metodo() {
          int a = 0; // oculta la variable de instancia
          a = 3;      // accede a la variable local
          this.a = 2; // accede a la variable de instancia
     }
}
super
●
    Hace referencia a la superclase del
    objeto
●
    Muy ú al redefinir mé todos
         til
●
    En los constructores, para seleccionar
    el constructor de la superclase
super
public class Prueba {
     public void metodo() {
          System.out.println(“Hola”);
     }
}

 public class Subprueba extends Prueba {
      public void metodo() {
           super.metodo();     // Accede a la superclase
           System.out.println(“Adios”);
      }
 }
Interfaces
●
    Contrato que una clase (la que
    implementa la interfaz) se compromete
    a cumplir
●
    Seguro para los clientes, que saben
    qué comportamiento se encontrará en
                                      n
    las clases que implementan la interfaz
Interfaces
●
    Las interfaces definen constantes y
    mé todos que usará e implementará las
                        n               n
    clases
●
    Las interfaces NO DEFINEN el cuerpo
    del mé todo, só lo su firma (nombre y
    argumentos)
Interfaces




             ejemplo
Interfaces
●
    Las interfaces tambié n tienen jerarquía
●
    Una interfaz puede extender de otra
    interfaz
    –   Hereda la definició n de los mé todos y las
        constantes
●
    La subinterfaz puede añ adir nuevos
    mé todos y constantes
Interfaces
●
    Una clase implementa una interfaz
    –   public class Clase implements Interfaz
●
    La clase DEBE dar cuerpo a todos los
    mé todos definidos en la interfaz
    –   Si no, error de compilació n
Interfaces
●
    Puede haber variables con tipo de la
    interfaz
    –   Interfaz a;
●
    Pero no se puede instancia
    –   a = new Interfaz() // ERROR
●
    Se deben asignar objetos de clases que
    implementan la interfaz
Paquetes
●
    Subclases: organizació n funcional
●
    Paquetes: organizació n administrativa
●
    Agrupació n de clases a juicio del
    desarrollador
●
    Jerarquía: javax.swing.table
Paquetes
●
    Para definir a qué paquete pertenece
    una clase, usar la sentencia package
●
    Separamos subpaquetes con puntos

         package cursillo.2004.ejemplos
         public class Ejemplo extends Padre {
         ....
         }
Paquetes
●
    Para usar clases de otros paquetes
●
    Referencia explícita
    –   cursillo.2004.ejemplos.Ejemplo1 a;
●
    Importació n
    –   import cursillo.2004.ejemplos.Ejemplo1
        Ejemplo1 a;
Paquetes
●
    Se pueden importar clases específicas
    –   import cursillo.2004.ejemplos.Ejemplo1
●
    O todas las clases de un paquete
    –   import cursillo.2004.ejemplos.*
●
    El asterisco no importa subpaquetes
●
    Por defecto, se importa java.lang.*
Usando objetos
●
    Declarar el objeto
    – <clase> <identificador>
    – Bicicleta miBicicleta;

●
    Pueden usarse clases o interfaces
    – Las interfaces no se pueden instanciar
    – Se instancia una clase que la implemente
Usando objetos
●
    La variable aú no apunta a ningú
                  n                 n
    objeto
●
    Instanciar la clase
    – <identificador> = new <clase>(<args>)
    – miBicicleta = new Bicicleta();

●
    Se indica el constructor a emplear
    –   Inicializa la clase
Usando objetos

¿Qué hay mal en este programa?

public class SomethingIsWrong {
  public static void main(String[] args) {
     Rectangle myRect;
     myRect.width = 40;
     myRect.height = 50;
     System.out.println("myRect's area is " + myRect.area());
  }
}

NUNCA SE CREA UN OBJETO. myRect no apunta a nada.
Variables de instancia
●
    Acceso a variables de instancia:
    <nombre>.<atributo>
    –   int cambio = miCoche.marcha
●
    Modificar variables de instancia
    –   miCoche.marcha = 2;
Variables de clase
●
    Acceso a variables de instancia:
    <nombre>.<atributo>
    –   int cambio = miCoche.numRuedas
●
    Mediante la clase
    <clase>.<atributo>
    –   int ruedas = Coche.numRuedas
Métodos de instancia
●
    Acceso a mé todos de instancia:
    <nombre>.<mé todo>(argumentos)
    – miCoche.subirMarcha();
    – miCoche.setMarcha(2);
    – miCoche.getMatrícula();
Métodos de clase
●
    Invocació n de mé todos de clase
    <nombre>.<mé todo>(argurmentos)
    –   miCoche.getNumRuedas();
●
    Mediante la clase
    <clase>.<mé todo>(argumentos)
    –   Coche.getNumRuedas()
Sobrecarga
●
    Pueden existir varios mé todos con el
    mismo nombre, pero diferentes
    argumentos
●
    En tiempo de compilació n se elige el
    mé todo a invocar por los parámetros
    reales proporcionados



                                            Bicicleta
Constructores
●
    Mé todo especial que se invoca cuando
    alguien crea un objeto de la clase
    –   <acceso><nombre_clase>(<args>)
●
    Mismo nombre que la clase
●
    No tiene tipo de retorno
●
    Sirve para inicializar el objeto
Constructores
●
    Si no se especifica ningú constructor,
                             n
    Java crea el constructor vacío
    –   public Clase() {;}
●
    Se pueden sobrecargar los
    constructores para aceptar diferentes
    tipos de argumentos



                                             Bicicleta
Constructores
●
    Se puede invocar desde el constructor a
    otro constructor de la clase
    –   this(argumentos)
●
    Se puede invocar al constructor de la
    superclase para configurar las variables
    heredades
    –   super(argumentos)
●
    Deben ser la primera instrucció n
Limpieza de objetos
●
    Con Java no hay que liberar la memoria
    explícitamente
●
    El recolector de basura se encarga
●
    Subsistema que mira qué objetos no
    está referenciados para eliminarlos
        n
    –   Ninguna variable apunta al objeto
Limpieza de objetos
●
    Para hacer que una variable no apunte
    a un objeto
    – Asignar otro objeto (a = b)
    – Asignar el valor nulo (a = null)

●
    Antes de eliminar el objeto, se invoca el
    destructor
Limpieza de objetos

   ¿Cuántas referencias hay a los objetos?

   ...
   Point point = new Point(2,4);
   Rectangle rectangle = new Rectangle(point, 20, 20);
   point = null;
   ...

                   Point
            X
point
rectangle                              Rectangle
Destructores
●
    Mé todo public void finalize()
    –   Declarado en Object y heredado por todas
        las clases
●
    Cuerpo: liberar recursos
●
    No se garantiza
    – Ni en el momento en que se ejecuta
    – Ni que se ejecute




                                              Bicicleta
Seguridad en acceso
●
    Tanto los atributos como los mé todos
    tienen un calificador de acceso
●
    Public
    –   Pueden acceder todos los objetos
●
    Private
    –   Só lo puede acceder el có digo de la
        misma clase
Seguridad en acceso
●
    Protected
    –   Só lo puede acceder el có digo de la
        misma clase, de subclases o de clases en
        el mismo paquete
●
    Package protected
    –   Só lo puede acceder el có digo de la
        misma clase o de clases en el mismo
        paquete


                                               accesore
Casting
●
    Cambiar el tipo de un objeto
●
    No es necesario cuando es “hacia
    arriba”
●
    Obligatorio cuando es “hacia abajo”
    –   Se comprueba en tiempo de ejecució n
Casting
Bicicleta a = new Bicicleta();
Tandem b = new Tandem();

a = b; // No es necesario, porque un tándem es una bicicleta

b = (Tandem) a; // Es necesario porque a es una bicicleta, pero
                          // el compilador no sabe que hay un tande
                          // Sólo se sabe en tiempo de ejecución. As
                          // que le damos la pista al compilador. Si
                          // tiempo de ejecución no hay un Tándem
                          // habrá un error de tipos en tiempo de eje
instanceof
●
    instanceof: nos informa si una variable
    es instancia de determinada clase
    – a instanceof Clase
    – Tiene en cuenta la transitividad

●
    Interesante para evitar errores de
    conversió n (casting)
Operadores de comparación
●
    Comparar objetos
●
    Mismo objeto (=)
●
    Mismo contenido (equals)
●
    Có digo hash (hashCode)
●
    Mé todos definidos en Object y
    redefinibles en subclases
    –   = > equals > hashCode
Operadores de comparación
                                    public boolean equals(Object anObject) {
public int hashCode() {              if (this == anObject) return true;
 int h = hash;                       if (anObject instanceof String) {
                                      String anotherString = (String)anObject;
 if (h == 0) {
                                      int n = count;
  int off = offset;                   if (n == anotherString.count) {
  char val[] = value;                  char v1[] = value;
  int len = count;                     char v2[] = anotherString.value;
  for (int i = 0; i < len; i++) {      int i = offset;
                                       int j = anotherString.offset;
   h = 31*h + val[off++];
                                       while (n-- != 0) {
  }                                      if (v1[i++] != v2[j++]) return false;
   hash = h;                           }
 }                                      return true;
 return h;                             }
                                      }
}
                                      return false;
                                    }
Clase Object
●
    finalize
●
    equals, hashCode
●
    toString
●
    clone
●
    wait – notify
●
    getClass
Arrays
●
    Colecció n de elementos del mismo tipo
●
    <tipo> <nombre>[]
    –   int precios[];
●
    Inicializació n:
    <var> = new <tipo>[<num>]
    – precios = new int[80] //array de 80 precios
    – bicicletas = new Bicicletas[10];
Arrays
●
    Si los elementos del array son tipos
    primitivos, se crean y se inicializan a 0
●
    Si los elementos del array son tipos
    referencia (Clases e Interfaces), só lo se
    reserva espacio para los punteros
●
    Deberemos crear los objetos uno a uno
    para el array (con el operador new)
Arrays
●
    Obtener el valor:
    <nombre>[<posició n>]
    –   int a = precios[8]
●
    Guardar valor:
    <nombre>[<posició n>] = valor
    –   precios[6] = 50;
Arrays multidimensionales
●
    <tipo> <nombre>[][]...
    –   int precios[][];
●
    Inicializació n:
    <var> = new <tipo>[<num>][<num>]...
    –   precios = new int[80][40] //array de 80x40
Arrays
●
    Obtener el valor:
    <nombre>[<posició n>][<posició n>]
    –   int a = precios[8][10]
●
    Guardar valor:
    <nombre>[<pos>][<pos>] = valor
    –   precios[6][12] = 50;
Arrays
●
    Los arrays no son dinámicos
    –   Tienen tantos elementos como se indique
        al crearlo y no pueden cambiar
●
    Los arrays van desde 0 hasta tam – 1
●
    Para saber el tamañ o: array.length
●
    Si te pasas de índice, excepció n
    –   ArrayIndexOutOfBoundsException

                                                  arrays
Arrays

String[] ciudades = {
   "Madrid", "Barcelona", "Bilbo", "Donosti",
   "Gasteiz", "Iruña"
};

¿Cúal es el índice de Bilbo?2
¿Cómo es la expresión para acceder a Bilbo? ciudades[2]
¿Cuál es el resultado de ciudades.length?6
¿Cuál es el índice del último elemento?5
                                             Donosti
¿Cuál es el valor de la expresión ciudades[3]?
Arrays

public class WhatHappens {
  public static void main(String[] args) {
     StringBuffer[] stringBuffers = new StringBuffer[10];

        for (int i = 0; i < stringBuffers.length; i ++) {
          stringBuffers[i].append("StringBuffer at index " + i);
        }
    }
}
        Se crea espacio para el array, pero no se crean los objetos
        StringBuffer del array, por lo que todos son nulos.
Vectores
●
    Clase Vector
    –   En paquete java.util
●
    Implementa un contenedor de objetos
●
    Es diná
          mico
●
    Puedes obtener los objetos por posició n



                                          Vectores
Iteradores
●
    Clase Iterator
    –   En paquete java.util
●
    Permite recorrer secuencialmente el
    contenido de un vector
●
    hasNext()
●
    next()


                                          Vectores
Cadenas de caracteres
●
    Java proporciona una clase
    –   String
●
    Los literales cadena: “Hola a todos”
●
    Se pueden asignar cadenas a variables
    directamente
    –   String hola = “Hola mundo”;
Cadenas de caracteres
●
    El operador '+' concatena cadenas
    – “hol” + “a Mundo”: “hola Mundo”
    – String a = “Hola”;
      String b = “Mundo”;
      String c = a + ' ' + b; // “Hola Mundo”
●
    Algunos mé todos de la clase String
    – length()
    – equals()
Cadenas de caracteres
●
    El mé todo toString()
●
    Definido en Object
    –   Da el nombre de la clase y la posició n de
        memoria del objeto
●
    Se puede redefinir para que devuelva lo
    que queramos



                                                 ToString
CONCEPTOS AVANZADOS
●
    Excepciones
●
    Polimorfismo
●
    Abstracció n
Excepciones
●
    Sirven para informar que se ha
    producido una situació n extrañ a y que
    debe tratarse
●
    Se rompe la ejecució n y se salta a un
    manejador de excepciones
●
    Mejor que comprobar valores de retorno
Excepciones


try {
                                  throw excepción
      cuerpo1
}
catch (excepción) {
      cuerpo2          public class UsaExcepciones {
}                        public void metodo() throws excepción {
finally {                  ...
      cuerpo3            }
}                      }
Excepciones
●
    cuerpo1 estámonitorizado para
    excepciones
●
    Si se produjera una, se compararía la
    excepció n contra la descrita en el catch
●
    Si es asignable, se ejecuta cuerpo2
●
    Si no se gestiona, se sigue buscando un
    gestor para la excepció n
Excepciones
●
    Independientemente de si ha habido o
    no excepciones, siempre se ejecuta
    cuerpo4
●
    Las excepciones son clases, como el
    resto, só lo que Java las trata diferente
●
    Se crean con new y se lanzan con
    throw
Excepciones
●
    Las excepciones heredan de la clase
    Throwable
●
    Só lo instancias de clases que hereden
    de esa superclase pueden aparecer en
    cláusulas throw, throws o catch
●
    throws indica que el mé todo no trata la
    excepció n y que la delega hacia arriba
Excepciones Error
●
    Excepciones muy inusuales y que no se
    suelen tratar
    – VirtualMachineError
    – OutOfMemoryError
    – StackOverflowError
    – LinkageError

●
    No es obligatorio capturarlas
Excepciones Exception
●
    Excepciones que deben tratarse
    – IOException
    – RemoteException
    – NotSerializableException

●
    Es obligatorio capturarlas
    –   Error de compilació n
Excepciones RuntimeException
●
    Excepciones que derivan de
    RuntimeException
    – ArrayIndexOutOfBoundsExcepion
    – NullPointerException

●
    No es obligatorio capturarlas
    – Pero es recomendable
    – No hay error de compilació n
Excepciones
●
    Podemos crear nuestras propias
    excepciones, creando clases que
    heredan (extends) de Throwable
    –   O alguna subclase de é sta
Excepciones
●
    El control se transfiere al primer catch
    que tenga como captura la clase o
    alguna superclase de la excepció n
    lanzada
●
    Ordenar los catch de má a menos
                           s
    especificidad
Excepciones

public void metodo() {
     try {
           .....
     }
     catch (FileNotFoundException ex) {...}
     catch (IOException ex) {...}
     catch (Exception ex) {...}
     catch (Throwable ex) {...}
     finally {....}
}
Excepciones
●
    Podemos relanzar las excepciones
    dentro de los bloque catch
●
    El mé todo termina y la excepció n
    aparece en el có digo llamante

         try {
                 .....
         }
         catch (IOException ex) {throw ex;}
         finally {...}
                                              Excepciones
Polimorfismo
●
    Cualidad por la que el mé todo a
    ejecutar se resuelve en tiempo de
    ejecució n
●
    No es sencillo a primera vista saber el
    mé todo que se ejecutará
Polimorfismo
public class A {                 public class B extends A {
 public void metodo() {           public void metodo() {
  System.out.println(“Soy A”);     System.out.println(“Soy B”);
 }                                }
}                                }

                    A a = new A();
                    B b = new B();
                    a.metodo(); // Soy A
                    b.metodo(); // Soy B
                    a = b;
                    a.metodo(); // Soy ??
                                                         AyB
Abstracción
●
    Un mé todo es abstracto cuando no se
    escribe el cuerpo del mismo
    –   Se define su firma sin dar implementació n


           public abstract class Padre {
                public abstract int metodo(int a) ;
           }
Abstracción
●
    Una clase es abstracta cuando tiene
    uno o má mé todos abstractos
            s
    – No se puede instanciar
    – Puede ser abstracta sin tener mé todos
      abstractos
    – Puede haber mé todos abstractos
      mezclados con mé todos no abstractos
Abstracción & Polimorfismo


   public abstract class Hablar {
        public abstract void diHola() ;
        public void saluda(String quien) {
             this.diHola();
             System.out.println(quien);
        }
   }
Abstracción & Polimorfismo
public class Castellano extends Hablar{
     public void diHola() {System.out.print(“Hola”);}
}

public class Euskera extends Hablar{
     public void diHola() {System.out.print(“Kaixo”);}
}

        Castellano a = new Castellano();
        Euskera b = new Euskera();
        a.saluda(“Juan”); // Hola Juan
        b.saluda(“Patxi”); // Kaixo Patxi
                                                         ejemplo
Introducción a SWING
●
    Interfaces gráficas en Java
●
    Segunda versió n
    –   Tras AWT
●
    Independiente de la plataforma
    – Se ve igual en todas
    – En AWT, la visualizació n dependía de la
      plataforma
Componentes
●
    Todos y cada uno de los elementos de
    SWING
●
    Por ejemplo:
    – JFrame
    – JLabel
    – JButton
    – etc.
Contenedores
●
    Aquellos componentes que pueden
    albergar otros componentes en su
    interior
●
    Los contenedores está formados por
                         n
    uno o má componentes
            s
    – JFrame
    – JDialog
    – JPanel
JFrame
●
    La tradicional ventana
●
    Tiene un título (setText())
●
    Y luego componentes internos
    –   frame.getContentPane().add(<compo>)
●
    Pero má fá modelar con JDeveloper
           s cil
JLabel
●
    Etiqueta no modificable
●
    Tiene un contenido
    –   setText() / getText()
●
    No tiene un comportamiento destacable
JButton
●
    Presionar para realizar una acció n
●
    Tiene un título
    –   setText() / getText()
●
    Tiene un comportamiento
    –   actionPerformed()
Eventos
●
    Sucesos asíncronos
    –   No sabemos cuá
                     ndo se producen
●
    Sistema de escuchadores
    –   Listeners
●
    Un objeto dice a un componente que
    cuando pase algo, le avise
    –   El botó n se pulsa
Eventos

...
JButton boton = new Jbutton(“Púlsame”);
boton.addActionListener(new Escuchador());
...


Public class Escuchador implements ActionListener {
     public void actionPerformed(ActionEvent ev) {
          ...
     }
}
Ejemplo
●
    Mostrar en pantalla una etiqueta con un
    número
●
    Cada vez que se pulse el botó n, se
    incrementa y se muestra de nuevo
Ejemplo
●
    Clase Contador
    – Almacena la variable
    – Crea la ventana
    – Crea el botó n

●
    En Jdeveloper
    – File -> New
    – Client Tier -> SWING/AWT -> Frame
Ejemplo
Ejemplo
Ejemplo
●
    Poner de etiquetas
    – Seleccionar componente
    – Cambiar atributo text

●
    En el botó n, "Pínchame"
●
    Dejar la etiqueta a vacío
Ejemplo
●
    En el botó n, definir el comportamiento
●
    Seleccionar botó n
●
    Seleccionar "Events" en la parte de las
    propiedades
●
    Seleccionar "actionPerformed", pinchar
    en los tres puntos y dar a OK
Ejemplo
●
    Dar el comportamiento
●
    Incrementar en uno la variable del
    contador
    –   Crearla si es necesario
●
    Actualizar la etiqueta
    – Con setText(<texto>)
    – Crear un objeto String usando el entero en
      el constructor
    – La etiqueta se llama jLabel1
Ejemplo
●
    Cread un mé todo main
    –   public static void main(String[] args)
●
    Dentro del main
    – Crear un objeto de tipo Contador
    – Mostrarlo en pantalla invocando el mé todo
      show()
JTextField
●
    Puedes teclear en é l
●
    Para obtener o cambiar el contenido
    –   getText() / setText()
●
    Comportamiento si se pulsa Intro
    –   actionPerformed
Calculadora de euros
●
    Ponemos la cantidad a convertir en un
    JTextField
●
    Tendremos dos botones
    – Uno para pasar de euros a pesetas
    – Y otro para pasar de pesetas a euros

●
    Cuando se pulsa el botó n, se debe
    reflejar la conversió n en un JLabel
Calculadora de euros
Calculadora de euros
●
    Igual que el ejemplo anterior
●
    Recoger el valor del JTextField
    – Con getText()
    – Devuelve un String

●
    Para pasar de String a real
    – Double.parseDouble(<texto>)
    – Lanza NumberFormatException
    – Si ocurre, escribir por la salida está
                                           ndar

Weitere ähnliche Inhalte

Was ist angesagt?

Scala: un vistazo general
Scala: un vistazo generalScala: un vistazo general
Scala: un vistazo generalMiguel Pastor
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Eudris Cabrera
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 javajbersosa
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 
Estructura basica de un programa
Estructura basica de un programaEstructura basica de un programa
Estructura basica de un programaRay-kun Olivera
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Eudris Cabrera
 
iNTRODUCCION AL LENGUAJE JAVA
iNTRODUCCION AL LENGUAJE  JAVAiNTRODUCCION AL LENGUAJE  JAVA
iNTRODUCCION AL LENGUAJE JAVAJesus Alex Haro
 
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
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc X
 
Fundamentos de Java II
Fundamentos de Java IIFundamentos de Java II
Fundamentos de Java IImartosfre
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup
 

Was ist angesagt? (19)

Scala: un vistazo general
Scala: un vistazo generalScala: un vistazo general
Scala: un vistazo general
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
 
S4-POO-2.2 Tipos de Clases
S4-POO-2.2 Tipos de ClasesS4-POO-2.2 Tipos de Clases
S4-POO-2.2 Tipos de Clases
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 java
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
Estructura basica de un programa
Estructura basica de un programaEstructura basica de un programa
Estructura basica de un programa
 
Grupo1
Grupo1Grupo1
Grupo1
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018
 
S4-Tipos De Clases
S4-Tipos De ClasesS4-Tipos De Clases
S4-Tipos De Clases
 
iNTRODUCCION AL LENGUAJE JAVA
iNTRODUCCION AL LENGUAJE  JAVAiNTRODUCCION AL LENGUAJE  JAVA
iNTRODUCCION AL LENGUAJE 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
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Ppt java
Ppt javaPpt java
Ppt java
 
Clase 3
Clase 3Clase 3
Clase 3
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salida
 
Fundamentos de Java II
Fundamentos de Java IIFundamentos de Java II
Fundamentos de Java II
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
9-Unidad 3: Encapsulamiento y modularidad
9-Unidad 3: Encapsulamiento y modularidad9-Unidad 3: Encapsulamiento y modularidad
9-Unidad 3: Encapsulamiento y modularidad
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 

Ähnlich wie Java12

Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Javapbcanessa
 
[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
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011Jano González
 
Información básica Java
Información básica JavaInformación básica Java
Información básica JavaFordBull2er
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Samuel Marrero
 
Java para android developers
Java para android developersJava para android developers
Java para android developersjose diaz
 
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
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1armando_cardenas
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosFranklin Parrales Bravo
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...Eudris Cabrera
 
001 JAVA PDF.pptx
001 JAVA PDF.pptx001 JAVA PDF.pptx
001 JAVA PDF.pptxSoftnet
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJano González
 

Ähnlich wie Java12 (20)

Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
[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
 
Programación con java en Eclipse
Programación con java en EclipseProgramación con java en Eclipse
Programación con java en Eclipse
 
S01.s1 - Lenguaje Java-1.pdf
S01.s1 - Lenguaje Java-1.pdfS01.s1 - Lenguaje Java-1.pdf
S01.s1 - Lenguaje Java-1.pdf
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
 
Información básica Java
Información básica JavaInformación básica Java
Información básica Java
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006
 
Prog_BasicaJava.pdf
Prog_BasicaJava.pdfProg_BasicaJava.pdf
Prog_BasicaJava.pdf
 
Java para android developers
Java para android developersJava para android developers
Java para android developers
 
Javajulian
JavajulianJavajulian
Javajulian
 
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
 
Tema2
Tema2Tema2
Tema2
 
Diapositivas de JAVA
Diapositivas de JAVADiapositivas de JAVA
Diapositivas de JAVA
 
Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1Fund progbd 3_u1_lenguajeprogramacionjava1
Fund progbd 3_u1_lenguajeprogramacionjava1
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
 
001 JAVA PDF.pptx
001 JAVA PDF.pptx001 JAVA PDF.pptx
001 JAVA PDF.pptx
 
Jano Gonzalez - jruby
Jano Gonzalez - jrubyJano Gonzalez - jruby
Jano Gonzalez - jruby
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
 
Introduccion programacion en java
Introduccion programacion en javaIntroduccion programacion en java
Introduccion programacion en java
 

Kürzlich hochgeladen

Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 

Kürzlich hochgeladen (20)

Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 

Java12

  • 1. PROGRAMACIÓN CON JAVA Cursos TAG Alberto Tablado Julio 2004
  • 2. Índice ● Introducció n a Java ● Java bá sico ● Objetos con Java ● Conceptos avanzados
  • 3. INTRODUCCIÓN A JAVA ● Historia ● Características de Java ● Java Development Kit ● Herramientas del kit ● Entornos de desarrollo
  • 4. Bibliografía ● Java Tutorial – http://java.sun.com/docs/books/tutorial/index.html ● Thinking in Java – http://www.mindview.net/Books/TIJ/ ● Aprenda Java como si estuviera en 1º – http://www.entrebits.com/descargas/programas/apre nda-java-como-si-estuviera-en-primero/ ● Curso de iniciació n a Java – http://www.gui.uva.es/~jal/java/index.html
  • 5. Una breve historia ● Iniciativa de Sun Microsystems en 1991 ● Lenguaje para ser empleado en dispositivos pequeñ os (set top boxes) – Poca memoria – Poca potencia – Independencia de la plataforma
  • 6. Una breve historia ● Fracaso y oportunidad ● Con el auge de la WWW, crearon el navegador HotJava – Características de Java – Primero en usar applets ● El é xito vino porque Netscape aceptó los applets
  • 7. Características ● Simple ● Orientado a objetos ● Distribuido ● Robusto ● Seguro ● Independiente de la plataforma ● Multihilo nativo
  • 8. Simple ● Sintaxis de C / C++ – Gran base de programadores ● Se eliminan sus problemas – Aritmé tica de punteros – Recolecció n de basura
  • 9. Orientado a objetos ● Paradigma de programació n que basado en modelar el sistema como clases e instancias de las clases ● Evolució n del modelo imperativo
  • 10. Robusto ● Gran cantidad de comprobaciones en tiempo de ejecució n – Límite de arrays – Tamañ o de la pila – Acceso a variables – Tipo de objetos
  • 11. Seguro ● Seguridad a nivel de có digo – Se comprueba que el có digo es coherente antes de ejecutarse ● Seguridad en ejecució n – Gestores de seguridad limitan acceso a recursos
  • 12. Independiente de la plataforma ● Java sigue la política de WORE – Escribe (compila) el có digo una vez y podrá ejecutarlo donde sea s – Multiplataforma mediante el uso de un có digo intermedio (bytecodes) ● Java Virtual Machine – Interpreta el có digo bytecode
  • 13. Multihilo nativo ● Java soporta hilos de forma nativa la máquina virtual ● Mapeados sobre el sistema operativo (native) o simulados (green)
  • 15. Java Development Kit ● J2SE (Java 2 Standard Edition) ● Nivel intermedio de programació n ● Versió n 1.4 – Java 2 a partir de la versió n 1.2 – La última versió n es la 1.5
  • 17. Java Development Kit ● No incluye entorno de edició n ● Varios: – NetBeans / SunOne – Eclipse – JDeveloper / JBuilder – IBM VisualAge
  • 18. Java Development Kit ● Diferencias ● Java 2 SDK – Incluye lo necesario para el desarrollo de aplicaciones ● Java 2 JRE – Incluye só lo lo necesario para la ejecució n de aplicaciones
  • 19. El CLASSPATH ● Dó nde se encuentran las clases para ejecutar la aplicació n ● Dos maneras: – Variable de entorno CLASSPATH – Argumento (-cp o -classpath) ● Por defecto, las clases del JDK (JRE)
  • 20. Compilar con el JDK ● La aplicació n es javac ● javac <fichero.java> – -d <destino> – -classpath <jar_o_directorio> Simple
  • 21. Ejecutar con el JDK ● La aplicació n es java ● java <clase> – -cp <jar_o_directorio> ● java -jar <fichero.jar> – -cp <jar_o_directorio> Simple
  • 22. Ejecutar con el JDK ● La aplicació n es appletviewer ● appletviewer <fichero.html> ● O abrir el fichero HTML con un navegador PruebaApplet
  • 23. Ejemplos de Applets ● Duke bailando – http://java.sun.com/docs/books/tutorial/getStarted/index.html ● Pintando en pantalla – http://java.sun.com/docs/books/tutorial/java/concepts/practical.html ● Applets de ejemplo sobre la máquina virtual Java – http://pl.changwon.ac.kr/~pl/seminar/jvm/insidejvm/applets/
  • 24. Ficheros JAR ● Java Archive ● Son ficheros ZIP que contienen clases, fuentes, etc. ● Tienen un directorio META-INF dó nde reside el manifiesto (MANIFEST.MF) – Describe el contenido del JAR
  • 25. La importancia del API ● Un lenguaje muere si no tiene un buen API (Interfaz para la programació n de aplicaciones) ● Java tiene mucha funcionalidad nativa – http://java.sun.com/j2se/1.4.2/docs/api/index.html ● APIs para otras funcionalidades
  • 26. JDeveloper ● Desarrollado por Oracle – Empezó como fork del JBuilder ● Gratuito ● Desarrollo de aplicaciones ● Depurador ● Diseñ o de ventanas
  • 28. JDeveloper ● Ejecutar JDeveloper ● Abrir el fichero curso.jws – File -> Open ● Ejemplos del curso ● Desarrollar nuevos ejemplos
  • 29. JDeveloper ● File -> New ● General -> Simple Files -> Java Class
  • 30. JAVA BÁSICO ● Ficheros Java ● Variables y tipos de datos ● Á mbito y visibilidad ● Operadores y expresiones ● Sentencias (condicionales y bucles) ● Comienzo y terminació n de programas
  • 31. Código de ejemplo public class Basic { public static void main(String[] args) { int sum = 0; for (int current = 1; current <= 10; current++) { sum += current; } System.out.println("Sum = " + sum); } } Basic
  • 32. Ficheros JAVA ● Ficheros de texto ● Los ficheros describen clases – Como mucho, una única clase pública ● Los ficheros deben llevar el mismo nombre que la clase pú blica
  • 33. Comentarios ● Comentario de una línea: // – int usu = 0; // el número de usuarios ● Comentario de bloque: /* .... */ – /* Esto no se tendrá en cuenta */ ● Comentario javadoc: /** .... */ – Para comentar el có digo Comentarios
  • 34. La definición de la clase ● En Java, todo son clases ● Así que cada fichero define una clase – public class MiClase ● La clase tiene atributos y mé todos ● El mé todo main es especial – public static void main(String[] args) {...} – Es el punto de arranque de una clase
  • 35. Variables ● Almacenan el estado de los objetos ● Pueden definirse en cualquier parte del có digo, antes de su uso ● Deben empezar con letra, guió n bajo (_) o dó lar ($) ● Sensible a mayúsculas/minúsculas
  • 36. Variables ● Dí que variables son válidas × int √ anInt √ i √ i1 × 1 √ thing1 × 1thing × ONE-HUNDRED √ ONE_HUNDRED √ something2do
  • 37. Variables ● Las variables tienen un tipo que define el rango de valores y las operaciones que pueden hacerse – Java es fuertemente tipado ● Tipos primitivos ● Tipos referencia
  • 38. Tipos de datos primitivos ● Enteros (se inicializan a 0) – Byte: un byte con signo ((byte)12) – Short: dos bytes con signo ((short)1231) – Int: cuatros bytes con signo (1238921) – Long: ocho bytes con signo (728478283L) ● Reales (se inicializan a 0.0) – Float: punto flotante 32 bits (1.2342F) – Double: punto flotante 64 bits (123.131)
  • 39. Tipos de datos primitivos ● Booleanos (se inicializa a false) – true / false ● Carácter (se inicializa al carácter nulo) – 'S', 'a' ● El tamañ o de datos estádefinido y es independiente de la plataforma TipoDatos
  • 40. Tipos de datos referencia ● Objetos – Instancias de clases ● Arrays – Colecció n de elementos del mismo tipo, sean básicos o complejos ● Se inicializan a null
  • 41. Inicialización ● Las variables pueden inicializarse en la definició n int a = 2; char b = 'a'; double c = 123.13123; Bicicleta d = new Bicicleta();
  • 42. Constantes ● Variables que no pueden cambiar de valor una vez establecido ● Modificador final final int a; a = 12; final double b = 456.4546456; Constantes
  • 43. Ámbito ● Ámbito: parte de programa en el que una variable estádefinida ● Variable miembro (de una clase) ● Pará metro (de un mé todo) ● Variable local (de un mé todo) ● Excepciones
  • 44. Ámbitos Ambito
  • 45. Visibilidad ● Visibilidad: parte de programa en el que una variable es accesible sin ser calificada ● Las variables se pueden ocultar por otras con el mismo nombre en á mbitos má anidados s
  • 46. Visibilidad Int a Int a Int a Int a ¿a? Visibilidad
  • 47. Variables public class Basic { public static void main(String[] args) { int sum = 0; for (int current = 1; current <= 10; current++) { sum += current; } System.out.println("Sum = " + sum); } } ¿Cúal es? ¿Qué tipo tienen? Alcance Basic
  • 48. Variables public class Basic { public static void main(String[] args) { int sum = 0; for (int current = 1; current <= 10; current++) { sum += current; } System.out.println("Sum = " + sum); } } ¿Cúal es? ¿Qué tipo tienen? Alcance Basic
  • 49. Variables public class Basic { public static void main(String[] args) { int sum = 0; for (int current = 1; current <= 10; current++) { sum += current; } System.out.println("Sum = " + sum); } } ¿Cúal es? ¿Qué tipo tienen? Alcance Basic
  • 50. Operadores ● Unarios op1 operator operator op1 ● Binarios op1 operator op2 ● Ternarios op1 operator1 op2 operator2 op3
  • 51. Operadores aritméticos ● Binarios – Suma: op1 + op2 – Resta: op1 – op2 – Multiplicacion: op1 * op2 – Divisió n: op1 / op2 – Mó dulo: op1 % op2 OperadoresAritmetico
  • 52. Operadores aritméticos ● Operaciones con enteros y reales ● El resultado depende de los operadores – Algú double -> double n – Algú float -> float n – Algú long -> long n – Si no, int
  • 53. Operadores aritméticos ● Unarios – Número negativo (-2, -123) – Convierte byte y short en int (+2, +65) ● Suma / resta unaria – ++op1 – op1++ – --op1 – op1--
  • 54. Operadores de comparación ● Devuelven booleanos – Igualdad: op1 == op2 – Desigualdad: op1 != op2 – Mayor que: op1 > op2 – Mayor o igual que: op1 >= op2 – Menor que: op1 < op2 – Menor o igual que: op1 <= op2 OperadoresComparacio
  • 55. Operadores de comparación ● Mucho cuidado con la igualdad ● Cuando se comparan variables referencia, se compara si ambos objetos son el mismo, no si son iguales (tienen el mismo estado) ● Error típico OperadoresComparacio
  • 56. Operadores booleanos ● Operan sobre booleanos y devuelven booleanos – AND: op1 && op2 – OR: op1 || op2 – NOT: !op1 – XOR: op1 ^ op2
  • 57. Operadores booleanos ● Java só lo evalú si es necesario a ● Si el primer operando de un AND es false, no evalú el segundo y devuelve a false – Lo mismo con OR ● Para obligar a evaluar el segundo operando, usar & (AND) y | (OR) OperadoresBooleano
  • 58. Operadores de desplazamiento ● Opera sobre enteros y devuelve enteros – Desplazar a izquierda: op1 << num – Desplazar a derecha op1 >> num (extiende signo) op1 >>> num (no extiende signo) OperadoresDesplazamient
  • 59. Operadores lógicos ● Operan sobre bits de los enteros – AND: op1 & op2 – OR: op1 | op2 – XOR: op1 ^ op2 – Complemento: ~op1 OperadoresBinario
  • 60. Operadores de asignación ● Asigna el valor de una variable a otra – op1 = op2 ● Deben ser compatibles en tipo – Enteros, reales, cará cter – Misma clase o subclases ● Al asignar variables referencia, no se hace una copia del objeto
  • 61. Operadores de asignación ● Asignació n con operació n op1 = op1 operador op2 (a = a + b) op1 operador= op2 (a += b) ● +, -, *, /, %, &, |, ^, <<, >>, >>>
  • 62. Otros operadores ● ?: (if-then-else) if (a == b) then c else d; a == b ? c : d ● [] - indexació n de arrays ● . (punto): acceso a mé todos y variables ● (): para especificar los argumentos a mé todos
  • 63. Ejercicios ¿Qué operadores hay? arrayOfInts[j] > arrayOfInts[j+1] int i = 10; n = 11 int i = 10; n = 11 int n = i++%5; i= 0 int n = ++i%5; i= 1 int i = 8; (1000) int i = 17; (10001) i >>=2; i >>=1; i = 2 (10) i = 8 (1000)
  • 64. Casting ● Cambiar el tipo de una variable ● Cambios de tipo automáticos ● De int a float, de float a int int a; float b; a = (int) b; // Se pierde informació n b = (float) a; // No es necesario CastingBasico
  • 65. Expresiones ● Una expresió n es un conjunto de variables, operadores e invocaciones a mé todos que se evalú como un ú an nico resultado – a –1+2 – 12 + a.getNumHoras() * 2
  • 66. Expresiones ● Las expresiones, ademá de un valor, s tienen un tipo asociado, que depende de las subexpresiones dentro de la expresió n ● Una expresió n se puede conjuntar con otras para formar una expresió n mayor mediante el uso de operadores
  • 67. Expresiones ● Las expresiones se pueden emplear en – Asignaciones – Invocaciones a mé todos – Operandos
  • 68. Orden de evaluación ● Las expresiones complejas pueden evaluarse de diferentes formas a+b–c*4 ¿((a + b) – c) * 4? ¿((a + b) – (c * 4))?
  • 69. Orden de evaluación ● Se pueden emplear paré ntesis para especificar el orden de evaluació n – ((a + b) – c) * 4 ● Existen las reglas de precedencia – * y / má precedencia que + y - s ● Pero es mejor despejar la ambigüedad mediante el uso de paré ntesis – a + b – (c * 4)
  • 70. Asociatividad ● En operadores binarios, ¿có mo se leen los operadores? ● Asociatividad a la izquierda: suma – 1 + 2 + 3 + 4 => (((1 + 2) + 3) + 4) ● Asociatividad a la derecha – a = b = c => (a = (b = (c)))
  • 71. Sentencias ● Una sentencia es una unidad completa de ejecució n y termina en punto y coma ● Sentencias de expresió n – Una expresió n terminada en ; ● Sentencias de declaració n ● Sentencias de control de flujo
  • 72. Bloque ● Un bloque es un conjunto de cero o más sentencias agrupadas entre llaves { int a = 1120; } ● Un bloque es, funcionalmente, como una sentencia y puede aparecer dó nde puedan aparecer sentencias
  • 73. Control de flujo ● Un programa es un conjunto de sentencias ● Hasta ahora, podemos hacer programas que usen variables, pero no podemos hacer nada para romper el hilo secuencial
  • 74. Condicionales ● Permiten ejecutar ciertas sentencias dependiendo de una condició n ● If / else / else if ● Switch / case ● ?: Condicionales
  • 75. If / else / else if ● Só lo ejecuta el cuerpo si la condició n es cierta ● La condició n debe ser booleana if (condición) { cuerpo }
  • 76. If / else / else if ● Es posible especificar qué hacer si la condició n no se cumple mediante el else if (condición) { cuerpo1 } else { cuerpo2 }
  • 77. If / else / else if ● Se pueden encadenar varios condicionales ● Aunque má de una condició n sea s cierta, só lo se ejecuta el cuerpo de la condició n que aparece la primera ● Si no se verifica ninguna condició n, se ejecuta el else final
  • 78. If / else / else if if (condición1) { cuerpo1 } else if (condición2){ cuerpo2 } else if (condición3) { cuerpo3 } else { cuerpo4 }
  • 79. switch ● Modo compacto de los if else anidados ● Só lo permite condiciones de igualdad – Si la condició n es igual a 'a', se ejecuta cuerpo 1 – Si ninguna se verifica se ejecuta 'default' switch (condición) { case a: cuerpo1 case b: cuerpo2 default: cuerpo3 }
  • 80. switch ● Mucho cuidado con switch ● Se ejecutan las sentencias desde el case que verifica la condició n hasta el final del switch o hasta un break. Condicionales
  • 81. Bucles ● Permiten ejecutar repetidamente un conjunto de sentencias (cuerpo) mientras la condició n de bucle se cumpla ● Tres tipos – while – do while – for
  • 82. while ● while: ejecuta el cuerpo del bucle mientras la condició n sea cierta ● La condició n se evalú antes de la a iteració n while (condición) { cuerpo }
  • 83. do while ● do while: ejecuta el cuerpo del bucle mientras la condició n sea cierta ● La condició n se evalú al final de la a iteració n, con lo que siempre se ejecuta al menos una vez do{ cuerpo } while (condición)
  • 84. for ● Ejecuta el cuerpo del bucle mientras la condició n sea cierta ● Antes de la primera iteració n, realiza la inicializació n – Ámbito del cuerpo del for ● Tras cada iteració n, ejecuta el incremento
  • 85. for ● Cualquiera de los tres puede ser vacío for (inicialización; condición; incremento) { cuerpo } inicialización while (condición) { cuerpo incremento }
  • 86. Break ● Rompe la ejecució n de un bucle y devuelve el control al exterior ● Puede proporcionarse una etiqueta y salir de bucles anidados while (condición) { externo: while (condición) { .... while (condición2) { break; break externo; } }}
  • 87. Continue ● Termina la ejecució n de una pasada del bucle y devuelve el control al comienzo – Ejecuta el incremento del for ● Puede proporcionarse una etiqueta y terminar la iteració n de bucles anidados while (condición) { externo: while (condición) { .... while (condición2) { continue; continue externo; } }} Bucles
  • 88. Return ● Termina la ejecució n del mé todo y sale de é l ● Si el mé todo tienen que devolver un valor, debe especificarse en la sentencia return (return a) ● Si no se especifica, al final del mé todo hay un return implícito
  • 89. Método main ● Es un mé todo especial ● Punto de entrada del programa ● public static void main(String args[]) ● args: vector de cadenas de texto que representa los parámetros pasados al programa Main
  • 90. Terminar la ejecución ● Un programa se para cuando no existe ningú hilo de ejecució n n ● Tambié n se puede terminar la aplicació n con el mé todo System.exit(int) – El entero es el có digo de retorno Terminar
  • 91. OBJETOS CON JAVA ● Estado y comportamiento ● Clases, atributos y mé todos ● Herencia, this y super ● Interfaces ● Paquetes ● Sobrecarga
  • 92. OBJETOS CON JAVA ● Constructores y destructores ● Seguridad ● Casting y comparació n ● Arrays y vectores ● Strings y cadenas de texto
  • 93. Introducción ● Modelar los programas como interacció n entre objetos ● Los objetos se describen mediante clases ● Las clases se instancian para crear un nuevo objeto
  • 94. Objetos ● Ejemplos a nuestro alrededor – Hojas, bolígrafos, el profesor, etc... ● Dos características – Tienen un estado – Tienen un comportamiento ● Un objeto es un conjunto software de variables y los mé todos asociados
  • 95. Estado ● El estado se guarda en una o más variables ● Una variable es un espacio de almacenamiento con un tipo de datos asociado que se identifica mediante un nombre
  • 96. Comportamiento ● El comportamiento se implementa mediante mé todos ● Los mé todos son trozos de có digo (subrutinas) asociados con el objeto
  • 97. Encapsulación ● Podemos ver los objetos java como unas variables que guardan el estado y unos mé todos que lo cambian ● El acceso a las variables y mé todos está regulado por los calificadores de acceso
  • 98. Encapsulación ● Modularidad: el uso de la encapsulació n permite el desarrollo modular de nuestra aplicació n ● Ocultació n: el acceso al estado del objeto estáregulado por los mé todos, que aseguran que el estado del objeto es consistente
  • 99. Mensajes ● Los objetos autó nomos no son muy útiles: deben cooperar ● Se dice que pasan mensajes (invocació n de mé todos) ● Participantes – Emisor – Receptor – Contenido (pará metros)
  • 100. Clase ● Cada objeto es independiente de otros objetos similares ● Pero todos comparten ciertas características – Pasan por estados similares – Tienen el mismo comportamiento
  • 101. Clase ● Una clase es una plantilla, o prototipo, que define las variables y los mé todos comunes a todos los objetos de cierto tipo
  • 102. Instanciación ● Cuando una clase se instancia, se crea un nuevo objeto en el sistema ● Se crea una copia de todas las variables de instancia para almacenar el estado de este objeto
  • 103. Estado ● El estado se guarda en variables ● Variables de instancia – Cada objeto tiene su valor propio e independiente del resto de los objetos ● Variables de clase o estáticas (static) – El valor es compartido por todos los objetos de la clase
  • 104. Métodos ● Cambian el estado del objeto ● Mé todos de instancia – Pueden acceder a variables de instancia o de clase ● Mé todos de clase o estáticas (static) – Só lo pueden acceder a variables de clase
  • 105. Herencia ● Se pueden definir clases en funció n de otras clases
  • 106. Herencia ● Superclase: clase padre – Bicicleta es superclase de mountain-bike, tá ndem y carreras. ● Subclase: clase hija – Mountain-bike, tá ndem y carreras son subclases de bicicleta
  • 107. Herencia ● Las subclases heredan de la superclase el estado y los comportamientos – Mountain-bike, tándem y carreras tienen las variables de marcha, velocidad y frenos y los mé todos frenar, .... ● Pero pueden ser diferentes en algún aspecto
  • 108. Herencia ● Las subclases pueden añ adir nuevas variables y comportamientos – Para guardar un estado específico de la subclase ● Las subclases incluso pueden redefinir el comportamiento de un mé todo para adaptarlo al nuevo estado
  • 109. Herencia ● La relació n superclase – clase – subclase forma una jerarquía ● Cuanto má abajo en la jerarquía, má s s especializada estarála clase ● En la cima de la jerarquía estáObject
  • 110. Herencia ● Se define con extends ● Java tiene herencia simple – Una clase só lo puede tener una única superclase
  • 112. Herencia ● La subclase puede redefinir lo mé todos de la superclase – Para adaptarlos a su definició n ● Para redefinir un mé todo, só lo hay que crear un mé todo en la subclase con la misma firma (nombre + argumentos) el de la superclase
  • 113. Herencia public class Padre { public int metodo(int a) {...} } public class Hija extends Padre{ public int metodo(int a) {...} }
  • 114. Herencia ● La superclase puede evitar la redefinició n mediante el modificador final public class Padre { public final int metodo(int a) {...} }
  • 115. this ● Dentro de un mé todo, hace referencia al objeto al que se aplica el mé todo ● Só lo aparece en mé todos de instancia – Si no hay instancia, no hay this ● Se puede usar para acceder a variables aunque esté n ocultas
  • 116. this public class Prueba { private int a; public void metodo() { int a = 0; // oculta la variable de instancia a = 3; // accede a la variable local this.a = 2; // accede a la variable de instancia } }
  • 117. super ● Hace referencia a la superclase del objeto ● Muy ú al redefinir mé todos til ● En los constructores, para seleccionar el constructor de la superclase
  • 118. super public class Prueba { public void metodo() { System.out.println(“Hola”); } } public class Subprueba extends Prueba { public void metodo() { super.metodo(); // Accede a la superclase System.out.println(“Adios”); } }
  • 119. Interfaces ● Contrato que una clase (la que implementa la interfaz) se compromete a cumplir ● Seguro para los clientes, que saben qué comportamiento se encontrará en n las clases que implementan la interfaz
  • 120. Interfaces ● Las interfaces definen constantes y mé todos que usará e implementará las n n clases ● Las interfaces NO DEFINEN el cuerpo del mé todo, só lo su firma (nombre y argumentos)
  • 121. Interfaces ejemplo
  • 122. Interfaces ● Las interfaces tambié n tienen jerarquía ● Una interfaz puede extender de otra interfaz – Hereda la definició n de los mé todos y las constantes ● La subinterfaz puede añ adir nuevos mé todos y constantes
  • 123. Interfaces ● Una clase implementa una interfaz – public class Clase implements Interfaz ● La clase DEBE dar cuerpo a todos los mé todos definidos en la interfaz – Si no, error de compilació n
  • 124. Interfaces ● Puede haber variables con tipo de la interfaz – Interfaz a; ● Pero no se puede instancia – a = new Interfaz() // ERROR ● Se deben asignar objetos de clases que implementan la interfaz
  • 125. Paquetes ● Subclases: organizació n funcional ● Paquetes: organizació n administrativa ● Agrupació n de clases a juicio del desarrollador ● Jerarquía: javax.swing.table
  • 126. Paquetes ● Para definir a qué paquete pertenece una clase, usar la sentencia package ● Separamos subpaquetes con puntos package cursillo.2004.ejemplos public class Ejemplo extends Padre { .... }
  • 127. Paquetes ● Para usar clases de otros paquetes ● Referencia explícita – cursillo.2004.ejemplos.Ejemplo1 a; ● Importació n – import cursillo.2004.ejemplos.Ejemplo1 Ejemplo1 a;
  • 128. Paquetes ● Se pueden importar clases específicas – import cursillo.2004.ejemplos.Ejemplo1 ● O todas las clases de un paquete – import cursillo.2004.ejemplos.* ● El asterisco no importa subpaquetes ● Por defecto, se importa java.lang.*
  • 129. Usando objetos ● Declarar el objeto – <clase> <identificador> – Bicicleta miBicicleta; ● Pueden usarse clases o interfaces – Las interfaces no se pueden instanciar – Se instancia una clase que la implemente
  • 130. Usando objetos ● La variable aú no apunta a ningú n n objeto ● Instanciar la clase – <identificador> = new <clase>(<args>) – miBicicleta = new Bicicleta(); ● Se indica el constructor a emplear – Inicializa la clase
  • 131. Usando objetos ¿Qué hay mal en este programa? public class SomethingIsWrong { public static void main(String[] args) { Rectangle myRect; myRect.width = 40; myRect.height = 50; System.out.println("myRect's area is " + myRect.area()); } } NUNCA SE CREA UN OBJETO. myRect no apunta a nada.
  • 132. Variables de instancia ● Acceso a variables de instancia: <nombre>.<atributo> – int cambio = miCoche.marcha ● Modificar variables de instancia – miCoche.marcha = 2;
  • 133. Variables de clase ● Acceso a variables de instancia: <nombre>.<atributo> – int cambio = miCoche.numRuedas ● Mediante la clase <clase>.<atributo> – int ruedas = Coche.numRuedas
  • 134. Métodos de instancia ● Acceso a mé todos de instancia: <nombre>.<mé todo>(argumentos) – miCoche.subirMarcha(); – miCoche.setMarcha(2); – miCoche.getMatrícula();
  • 135. Métodos de clase ● Invocació n de mé todos de clase <nombre>.<mé todo>(argurmentos) – miCoche.getNumRuedas(); ● Mediante la clase <clase>.<mé todo>(argumentos) – Coche.getNumRuedas()
  • 136. Sobrecarga ● Pueden existir varios mé todos con el mismo nombre, pero diferentes argumentos ● En tiempo de compilació n se elige el mé todo a invocar por los parámetros reales proporcionados Bicicleta
  • 137. Constructores ● Mé todo especial que se invoca cuando alguien crea un objeto de la clase – <acceso><nombre_clase>(<args>) ● Mismo nombre que la clase ● No tiene tipo de retorno ● Sirve para inicializar el objeto
  • 138. Constructores ● Si no se especifica ningú constructor, n Java crea el constructor vacío – public Clase() {;} ● Se pueden sobrecargar los constructores para aceptar diferentes tipos de argumentos Bicicleta
  • 139. Constructores ● Se puede invocar desde el constructor a otro constructor de la clase – this(argumentos) ● Se puede invocar al constructor de la superclase para configurar las variables heredades – super(argumentos) ● Deben ser la primera instrucció n
  • 140. Limpieza de objetos ● Con Java no hay que liberar la memoria explícitamente ● El recolector de basura se encarga ● Subsistema que mira qué objetos no está referenciados para eliminarlos n – Ninguna variable apunta al objeto
  • 141. Limpieza de objetos ● Para hacer que una variable no apunte a un objeto – Asignar otro objeto (a = b) – Asignar el valor nulo (a = null) ● Antes de eliminar el objeto, se invoca el destructor
  • 142. Limpieza de objetos ¿Cuántas referencias hay a los objetos? ... Point point = new Point(2,4); Rectangle rectangle = new Rectangle(point, 20, 20); point = null; ... Point X point rectangle Rectangle
  • 143. Destructores ● Mé todo public void finalize() – Declarado en Object y heredado por todas las clases ● Cuerpo: liberar recursos ● No se garantiza – Ni en el momento en que se ejecuta – Ni que se ejecute Bicicleta
  • 144. Seguridad en acceso ● Tanto los atributos como los mé todos tienen un calificador de acceso ● Public – Pueden acceder todos los objetos ● Private – Só lo puede acceder el có digo de la misma clase
  • 145. Seguridad en acceso ● Protected – Só lo puede acceder el có digo de la misma clase, de subclases o de clases en el mismo paquete ● Package protected – Só lo puede acceder el có digo de la misma clase o de clases en el mismo paquete accesore
  • 146. Casting ● Cambiar el tipo de un objeto ● No es necesario cuando es “hacia arriba” ● Obligatorio cuando es “hacia abajo” – Se comprueba en tiempo de ejecució n
  • 147. Casting Bicicleta a = new Bicicleta(); Tandem b = new Tandem(); a = b; // No es necesario, porque un tándem es una bicicleta b = (Tandem) a; // Es necesario porque a es una bicicleta, pero // el compilador no sabe que hay un tande // Sólo se sabe en tiempo de ejecución. As // que le damos la pista al compilador. Si // tiempo de ejecución no hay un Tándem // habrá un error de tipos en tiempo de eje
  • 148. instanceof ● instanceof: nos informa si una variable es instancia de determinada clase – a instanceof Clase – Tiene en cuenta la transitividad ● Interesante para evitar errores de conversió n (casting)
  • 149. Operadores de comparación ● Comparar objetos ● Mismo objeto (=) ● Mismo contenido (equals) ● Có digo hash (hashCode) ● Mé todos definidos en Object y redefinibles en subclases – = > equals > hashCode
  • 150. Operadores de comparación public boolean equals(Object anObject) { public int hashCode() { if (this == anObject) return true; int h = hash; if (anObject instanceof String) { String anotherString = (String)anObject; if (h == 0) { int n = count; int off = offset; if (n == anotherString.count) { char val[] = value; char v1[] = value; int len = count; char v2[] = anotherString.value; for (int i = 0; i < len; i++) { int i = offset; int j = anotherString.offset; h = 31*h + val[off++]; while (n-- != 0) { } if (v1[i++] != v2[j++]) return false; hash = h; } } return true; return h; } } } return false; }
  • 151. Clase Object ● finalize ● equals, hashCode ● toString ● clone ● wait – notify ● getClass
  • 152. Arrays ● Colecció n de elementos del mismo tipo ● <tipo> <nombre>[] – int precios[]; ● Inicializació n: <var> = new <tipo>[<num>] – precios = new int[80] //array de 80 precios – bicicletas = new Bicicletas[10];
  • 153. Arrays ● Si los elementos del array son tipos primitivos, se crean y se inicializan a 0 ● Si los elementos del array son tipos referencia (Clases e Interfaces), só lo se reserva espacio para los punteros ● Deberemos crear los objetos uno a uno para el array (con el operador new)
  • 154. Arrays ● Obtener el valor: <nombre>[<posició n>] – int a = precios[8] ● Guardar valor: <nombre>[<posició n>] = valor – precios[6] = 50;
  • 155. Arrays multidimensionales ● <tipo> <nombre>[][]... – int precios[][]; ● Inicializació n: <var> = new <tipo>[<num>][<num>]... – precios = new int[80][40] //array de 80x40
  • 156. Arrays ● Obtener el valor: <nombre>[<posició n>][<posició n>] – int a = precios[8][10] ● Guardar valor: <nombre>[<pos>][<pos>] = valor – precios[6][12] = 50;
  • 157. Arrays ● Los arrays no son dinámicos – Tienen tantos elementos como se indique al crearlo y no pueden cambiar ● Los arrays van desde 0 hasta tam – 1 ● Para saber el tamañ o: array.length ● Si te pasas de índice, excepció n – ArrayIndexOutOfBoundsException arrays
  • 158. Arrays String[] ciudades = { "Madrid", "Barcelona", "Bilbo", "Donosti", "Gasteiz", "Iruña" }; ¿Cúal es el índice de Bilbo?2 ¿Cómo es la expresión para acceder a Bilbo? ciudades[2] ¿Cuál es el resultado de ciudades.length?6 ¿Cuál es el índice del último elemento?5 Donosti ¿Cuál es el valor de la expresión ciudades[3]?
  • 159. Arrays public class WhatHappens { public static void main(String[] args) { StringBuffer[] stringBuffers = new StringBuffer[10]; for (int i = 0; i < stringBuffers.length; i ++) { stringBuffers[i].append("StringBuffer at index " + i); } } } Se crea espacio para el array, pero no se crean los objetos StringBuffer del array, por lo que todos son nulos.
  • 160. Vectores ● Clase Vector – En paquete java.util ● Implementa un contenedor de objetos ● Es diná mico ● Puedes obtener los objetos por posició n Vectores
  • 161. Iteradores ● Clase Iterator – En paquete java.util ● Permite recorrer secuencialmente el contenido de un vector ● hasNext() ● next() Vectores
  • 162. Cadenas de caracteres ● Java proporciona una clase – String ● Los literales cadena: “Hola a todos” ● Se pueden asignar cadenas a variables directamente – String hola = “Hola mundo”;
  • 163. Cadenas de caracteres ● El operador '+' concatena cadenas – “hol” + “a Mundo”: “hola Mundo” – String a = “Hola”; String b = “Mundo”; String c = a + ' ' + b; // “Hola Mundo” ● Algunos mé todos de la clase String – length() – equals()
  • 164. Cadenas de caracteres ● El mé todo toString() ● Definido en Object – Da el nombre de la clase y la posició n de memoria del objeto ● Se puede redefinir para que devuelva lo que queramos ToString
  • 165. CONCEPTOS AVANZADOS ● Excepciones ● Polimorfismo ● Abstracció n
  • 166. Excepciones ● Sirven para informar que se ha producido una situació n extrañ a y que debe tratarse ● Se rompe la ejecució n y se salta a un manejador de excepciones ● Mejor que comprobar valores de retorno
  • 167. Excepciones try { throw excepción cuerpo1 } catch (excepción) { cuerpo2 public class UsaExcepciones { } public void metodo() throws excepción { finally { ... cuerpo3 } } }
  • 168. Excepciones ● cuerpo1 estámonitorizado para excepciones ● Si se produjera una, se compararía la excepció n contra la descrita en el catch ● Si es asignable, se ejecuta cuerpo2 ● Si no se gestiona, se sigue buscando un gestor para la excepció n
  • 169. Excepciones ● Independientemente de si ha habido o no excepciones, siempre se ejecuta cuerpo4 ● Las excepciones son clases, como el resto, só lo que Java las trata diferente ● Se crean con new y se lanzan con throw
  • 170. Excepciones ● Las excepciones heredan de la clase Throwable ● Só lo instancias de clases que hereden de esa superclase pueden aparecer en cláusulas throw, throws o catch ● throws indica que el mé todo no trata la excepció n y que la delega hacia arriba
  • 171. Excepciones Error ● Excepciones muy inusuales y que no se suelen tratar – VirtualMachineError – OutOfMemoryError – StackOverflowError – LinkageError ● No es obligatorio capturarlas
  • 172. Excepciones Exception ● Excepciones que deben tratarse – IOException – RemoteException – NotSerializableException ● Es obligatorio capturarlas – Error de compilació n
  • 173. Excepciones RuntimeException ● Excepciones que derivan de RuntimeException – ArrayIndexOutOfBoundsExcepion – NullPointerException ● No es obligatorio capturarlas – Pero es recomendable – No hay error de compilació n
  • 174. Excepciones ● Podemos crear nuestras propias excepciones, creando clases que heredan (extends) de Throwable – O alguna subclase de é sta
  • 175. Excepciones ● El control se transfiere al primer catch que tenga como captura la clase o alguna superclase de la excepció n lanzada ● Ordenar los catch de má a menos s especificidad
  • 176. Excepciones public void metodo() { try { ..... } catch (FileNotFoundException ex) {...} catch (IOException ex) {...} catch (Exception ex) {...} catch (Throwable ex) {...} finally {....} }
  • 177. Excepciones ● Podemos relanzar las excepciones dentro de los bloque catch ● El mé todo termina y la excepció n aparece en el có digo llamante try { ..... } catch (IOException ex) {throw ex;} finally {...} Excepciones
  • 178. Polimorfismo ● Cualidad por la que el mé todo a ejecutar se resuelve en tiempo de ejecució n ● No es sencillo a primera vista saber el mé todo que se ejecutará
  • 179. Polimorfismo public class A { public class B extends A { public void metodo() { public void metodo() { System.out.println(“Soy A”); System.out.println(“Soy B”); } } } } A a = new A(); B b = new B(); a.metodo(); // Soy A b.metodo(); // Soy B a = b; a.metodo(); // Soy ?? AyB
  • 180. Abstracción ● Un mé todo es abstracto cuando no se escribe el cuerpo del mismo – Se define su firma sin dar implementació n public abstract class Padre { public abstract int metodo(int a) ; }
  • 181. Abstracción ● Una clase es abstracta cuando tiene uno o má mé todos abstractos s – No se puede instanciar – Puede ser abstracta sin tener mé todos abstractos – Puede haber mé todos abstractos mezclados con mé todos no abstractos
  • 182. Abstracción & Polimorfismo public abstract class Hablar { public abstract void diHola() ; public void saluda(String quien) { this.diHola(); System.out.println(quien); } }
  • 183. Abstracción & Polimorfismo public class Castellano extends Hablar{ public void diHola() {System.out.print(“Hola”);} } public class Euskera extends Hablar{ public void diHola() {System.out.print(“Kaixo”);} } Castellano a = new Castellano(); Euskera b = new Euskera(); a.saluda(“Juan”); // Hola Juan b.saluda(“Patxi”); // Kaixo Patxi ejemplo
  • 184. Introducción a SWING ● Interfaces gráficas en Java ● Segunda versió n – Tras AWT ● Independiente de la plataforma – Se ve igual en todas – En AWT, la visualizació n dependía de la plataforma
  • 185. Componentes ● Todos y cada uno de los elementos de SWING ● Por ejemplo: – JFrame – JLabel – JButton – etc.
  • 186. Contenedores ● Aquellos componentes que pueden albergar otros componentes en su interior ● Los contenedores está formados por n uno o má componentes s – JFrame – JDialog – JPanel
  • 187. JFrame ● La tradicional ventana ● Tiene un título (setText()) ● Y luego componentes internos – frame.getContentPane().add(<compo>) ● Pero má fá modelar con JDeveloper s cil
  • 188. JLabel ● Etiqueta no modificable ● Tiene un contenido – setText() / getText() ● No tiene un comportamiento destacable
  • 189. JButton ● Presionar para realizar una acció n ● Tiene un título – setText() / getText() ● Tiene un comportamiento – actionPerformed()
  • 190. Eventos ● Sucesos asíncronos – No sabemos cuá ndo se producen ● Sistema de escuchadores – Listeners ● Un objeto dice a un componente que cuando pase algo, le avise – El botó n se pulsa
  • 191. Eventos ... JButton boton = new Jbutton(“Púlsame”); boton.addActionListener(new Escuchador()); ... Public class Escuchador implements ActionListener { public void actionPerformed(ActionEvent ev) { ... } }
  • 192. Ejemplo ● Mostrar en pantalla una etiqueta con un número ● Cada vez que se pulse el botó n, se incrementa y se muestra de nuevo
  • 193. Ejemplo ● Clase Contador – Almacena la variable – Crea la ventana – Crea el botó n ● En Jdeveloper – File -> New – Client Tier -> SWING/AWT -> Frame
  • 196. Ejemplo ● Poner de etiquetas – Seleccionar componente – Cambiar atributo text ● En el botó n, "Pínchame" ● Dejar la etiqueta a vacío
  • 197. Ejemplo ● En el botó n, definir el comportamiento ● Seleccionar botó n ● Seleccionar "Events" en la parte de las propiedades ● Seleccionar "actionPerformed", pinchar en los tres puntos y dar a OK
  • 198. Ejemplo ● Dar el comportamiento ● Incrementar en uno la variable del contador – Crearla si es necesario ● Actualizar la etiqueta – Con setText(<texto>) – Crear un objeto String usando el entero en el constructor – La etiqueta se llama jLabel1
  • 199. Ejemplo ● Cread un mé todo main – public static void main(String[] args) ● Dentro del main – Crear un objeto de tipo Contador – Mostrarlo en pantalla invocando el mé todo show()
  • 200. JTextField ● Puedes teclear en é l ● Para obtener o cambiar el contenido – getText() / setText() ● Comportamiento si se pulsa Intro – actionPerformed
  • 201. Calculadora de euros ● Ponemos la cantidad a convertir en un JTextField ● Tendremos dos botones – Uno para pasar de euros a pesetas – Y otro para pasar de pesetas a euros ● Cuando se pulsa el botó n, se debe reflejar la conversió n en un JLabel
  • 203. Calculadora de euros ● Igual que el ejemplo anterior ● Recoger el valor del JTextField – Con getText() – Devuelve un String ● Para pasar de String a real – Double.parseDouble(<texto>) – Lanza NumberFormatException – Si ocurre, escribir por la salida está ndar