Académique Documents
Professionnel Documents
Culture Documents
ndice
Introduccin a Java
Java bsico
Conceptos avanzados
INTRODUCCIN A JAVA
Historia
Caractersticas de Java
Entornos de desarrollo
Bibliografa
Java Tutorial
Thinking in Java
http://www.mindview.net/Books/TIJ/
http://java.sun.com/docs/books/tutorial/index.html
http://www.entrebits.com/descargas/programas/apre
nda-java-como-si-estuviera-en-primero/
http://www.gui.uva.es/~jal/java/index.html
Fracaso y oportunidad
Con el auge de la WWW, crearon el
navegador HotJava
Caractersticas de Java
Primero en usar applets
Caractersticas
Simple
Orientado a objetos
Distribuido
Robusto
Seguro
Independiente de la plataforma
Multihilo nativo
Simple
Sintaxis de C / C++
Orientado a objetos
Robusto
Seguro
Seguridad en ejecucin
Independiente de la plataforma
Multihilo nativo
Ediciones JAVA
Versin 1.4
Varios:
NetBeans / SunOne
Eclipse
JDeveloper / JBuilder
IBM VisualAge
Diferencias
Java 2 SDK
Java 2 JRE
El CLASSPATH
La aplicacin es javac
javac <fichero.java>
-d <destino>
-classpath <jar_o_directorio>
Simple
La aplicacin es java
java <clase>
-cp <jar_o_directorio>
-cp <jar_o_directorio>
Simple
La aplicacin es appletviewer
appletviewer <fichero.html>
PruebaApplet
Ejemplos de Applets
Duke bailando
Pintando en pantalla
http://java.sun.com/docs/books/tutorial/getStarted/index.html
http://java.sun.com/docs/books/tutorial/java/concepts/practical.html
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 dnde
reside el manifiesto (MANIFEST.MF)
http://java.sun.com/j2se/1.4.2/docs/api/index.html
JDeveloper
Gratuito
Desarrollo de aplicaciones
Depurador
Diseo de ventanas
JDeveloper
JDeveloper
Ejecutar JDeveloper
JDeveloper
JAVA BSICO
Ficheros Java
mbito y visibilidad
Operadores y expresiones
Cdigo 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
Comentarios
Comentarios
La definicin de la clase
Variables
Variables
int
anInt
i
i1
1
thing1
1thing
ONE-HUNDRED
ONE_HUNDRED
something2do
Variables
Tipos primitivos
Tipos referencia
true / false
'S', 'a'
TipoDatos
Objetos
Arrays
Instancias de clases
Coleccin de elementos del mismo tipo,
sean bsicos o complejos
Se inicializan a null
Inicializacin
Constantes
mbito
Excepciones
mbitos
Ambito
Visibilidad
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);
}
}
Cal 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);
}
}
Cal 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);
}
}
Cal es? Qu tipo tienen? Alcance
Basic
Operadores
Unarios
op1 operator
operator op1
Binarios
op1 operator op2
Ternarios
op1 operator1 op2 operator2 op3
Operadores aritmticos
Binarios
OperadoresAritmeticos
Operadores aritmticos
Operadores aritmticos
Unarios
Operadores de comparacin
Devuelven booleanos
OperadoresComparacion
Operadores de comparacin
OperadoresComparacion
Operadores booleanos
Operadores booleanos
Lo mismo con OR
Operadores de desplazamiento
OperadoresDesplazamiento
Operadores lgicos
OperadoresBinarios
Operadores de asignacin
op1 = op2
Operadores de asignacin
(a += b)
Otros operadores
?: (if-then-else)
if (a == b) then c else d;
a == b ? c : d
[] - indexacin de arrays
Casting
Expresiones
Expresiones
Expresiones
Orden de evaluacin
Orden de evaluacin
((a + b) c) * 4
* y / ms precedencia que + y -
a + b (c * 4)
Asociatividad
1 + 2 + 3 + 4 => (((1 + 2) + 3) + 4)
Asociatividad a la derecha
a = b = c => (a = (b = (c)))
Sentencias
Sentencias de declaracin
Bloque
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
If / else / else if
Switch / case
?:
Condicionales
If / else / else if
if (condicin) {
cuerpo
}
If / else / else if
If / else / else if
If / else / else if
if (condicin1) {
cuerpo1
}
else if (condicin2){
cuerpo2
}
else if (condicin3) {
cuerpo3
}
else {
cuerpo4
}
switch
case a: cuerpo1
case b: cuerpo2
default: cuerpo3
}
switch
Condicionales
Bucles
while
while (condicin) {
cuerpo
}
do while
for
for
Break
Continue
while (condicin) {
....
continue;
}
Bucles
Return
Mtodo main
Es un mtodo especial
Terminar la ejecucin
Terminar
Estado y comportamiento
Interfaces
Paquetes
Sobrecarga
Constructores y destructores
Seguridad
Casting y comparacin
Arrays y vectores
Introduccin
Objetos
Dos caractersticas
Tienen un estado
Tienen un comportamiento
Estado
Comportamiento
El comportamiento se implementa
mediante mtodos
Los mtodos son trozos de cdigo
(subrutinas) asociados con el objeto
Encapsulacin
Encapsulacin
Mensajes
Emisor
Receptor
Contenido (parmetros)
Clase
Clase
Instanciacin
Estado
Variables de instancia
Mtodos
Mtodos de instancia
Herencia
Herencia
Herencia
Herencia
Herencia
Herencia
Herencia
Herencia
Herencia
public class Padre {
public int metodo(int a) {...}
}
Herencia
this
this
super
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
Interfaces
Interfaces
ejemplo
Interfaces
Interfaces
Interfaces
Interfaz a;
Paquetes
Paquetes
Paquetes
Referencia explcita
cursillo.2004.ejemplos.Ejemplo1 a;
Importacin
import cursillo.2004.ejemplos.Ejemplo1
Ejemplo1 a;
Paquetes
import cursillo.2004.ejemplos.Ejemplo1
import cursillo.2004.ejemplos.*
Usando objetos
Declarar el objeto
<clase> <identificador>
Bicicleta miBicicleta;
Usando objetos
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
miCoche.marcha = 2;
Variables de clase
Mediante la clase
<clase>.<atributo>
Mtodos de instancia
Mtodos de clase
miCoche.getNumRuedas();
Mediante la clase
<clase>.<mtodo>(argumentos)
Coche.getNumRuedas()
Sobrecarga
Bicicleta
Constructores
<acceso><nombre_clase>(<args>)
Constructores
Bicicleta
Constructores
this(argumentos)
super(argumentos)
Limpieza de objetos
Limpieza de objetos
Destructores
No se garantiza
Bicicleta
Seguridad en acceso
Private
Seguridad en acceso
Protected
Package protected
accesores
Casting
Casting
Bicicleta a = new Bicicleta();
Tandem b = new Tandem();
a = b; // No es necesario, porque un tndem es una bicicleta
instanceof
Operadores de comparacin
Comparar objetos
Operadores de comparacin
public int hashCode() {
int h = hash;
if (h == 0) {
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
Clase Object
finalize
equals, hashCode
toString
clone
wait notify
getClass
Arrays
<tipo> <nombre>[]
int precios[];
Inicializacin:
<var> = new <tipo>[<num>]
Arrays
Arrays
Obtener el valor:
<nombre>[<posicin>]
int a = precios[8]
Guardar valor:
<nombre>[<posicin>] = valor
precios[6] = 50;
Arrays multidimensionales
<tipo> <nombre>[][]...
int precios[][];
Inicializacin:
<var> = new <tipo>[<num>][<num>]...
Arrays
Obtener el valor:
<nombre>[<posicin>][<posicin>]
int a = precios[8][10]
Guardar valor:
<nombre>[<pos>][<pos>] = valor
precios[6][12] = 50;
Arrays
ArrayIndexOutOfBoundsException
arrays
Arrays
String[] ciudades = {
"Madrid", "Barcelona", "Bilbo", "Donosti",
"Gasteiz", "Irua"
};
Cal es el ndice de Bilbo? 2
Cmo es la expresin para acceder a Bilbo? ciudades[2]
Cul es el resultado de ciudades.length? 6
Cul es el ndice del ltimo elemento? 5
Cul es el valor de la expresin ciudades[3]? Donosti
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
Es dinmico
Vectores
Iteradores
Clase Iterator
En paquete java.util
hasNext()
next()
Vectores
Cadenas de caracteres
String
Cadenas de caracteres
Cadenas de caracteres
El mtodo toString()
Definido en Object
ToString
CONCEPTOS AVANZADOS
Excepciones
Polimorfismo
Abstraccin
Excepciones
Excepciones
try {
cuerpo1
}
catch (excepcin) {
cuerpo2
}
finally {
cuerpo3
}
throw excepcin
Excepciones
Excepciones
Independientemente de si ha habido o
no excepciones, siempre se ejecuta
cuerpo4
Las excepciones son clases, como el
resto, slo que Java las trata diferente
Se crean con new y se lanzan con throw
Excepciones
Excepciones Error
No es obligatorio capturarlas
Excepciones Exception
Es obligatorio capturarlas
Error de compilacin
Excepciones RuntimeException
ArrayIndexOutOfBoundsExcepion
NullPointerException
No es obligatorio capturarlas
Pero es recomendable
No hay error de compilacin
Excepciones
Excepciones
Excepciones
public void metodo() {
try {
.....
}
catch (FileNotFoundException ex) {...}
catch (IOException ex) {...}
catch (Exception ex) {...}
catch (Throwable ex) {...}
finally {....}
}
Excepciones
Polimorfismo
Polimorfismo
public class A {
public void metodo() {
System.out.println(Soy A);
}
}
A a = new A();
B b = new B();
a.metodo(); // Soy A
b.metodo(); // Soy B
a = b;
a.metodo(); // Soy ??
Ay B
Abstraccin
Abstraccin
Introduccin a SWING
Segunda versin
Tras AWT
Independiente de la plataforma
Se ve igual en todas
En AWT, la visualizacin dependa de la
plataforma
Componentes
Contenedores
JFrame
La tradicional ventana
frame.getContentPane().add(<compo>)
JLabel
Etiqueta no modificable
Tiene un contenido
setText() / getText()
JButton
Tiene un ttulo
setText() / getText()
Tiene un comportamiento
actionPerformed()
Eventos
Sucesos asncronos
Sistema de escuchadores
El botn se pulsa
Eventos
...
JButton boton = new Jbutton(Plsame);
boton.addActionListener(new Escuchador());
...
Public class Escuchador implements ActionListener {
public void actionPerformed(ActionEvent ev) {
...
}
}
Ejemplo
Ejemplo
Clase Contador
Almacena la variable
Crea la ventana
Crea el botn
En Jdeveloper
Ejemplo
Ejemplo
Ejemplo
Poner de etiquetas
Seleccionar componente
Cambiar atributo text
En el botn, "Pnchame"
Ejemplo
Seleccionar botn
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
JTextField
Puedes teclear en l
getText() / setText()
actionPerformed
Calculadora de euros
Calculadora de euros
Calculadora de euros
Double.parseDouble(<texto>)
Lanza NumberFormatException
Si ocurre, escribir por la salida estndar