Beruflich Dokumente
Kultur Dokumente
Simple
Java APIs
Orientado a Objetos
Robusto
Arquitectura-neutral (portable)
Moderno
Tipado estticamente
Semi-interpretado
Gran conjunto de bibliotecas
Mquina virtual
La mquina virtual garantiza la portabilidad
del cdigo
Tipos de aplicaciones java:
Standalone (main y maquina virtual)
Applets (en la mquina virtual del navegador
Servlets J2EE (ejecutados en un servidor de
aplicaciones Web)
Programa
Java
Compilador
Programa
Java en
Bytecode
Java para
Macintosh
01010101
Java para
Windows
01010101
Java para
Linux
01010101
Aplicaciones de Java
Sistemas embebidos
Servidor
JINI
Programacin
Servlets
JavaSpaces
JNI
WWW
java.*
J2ME
Applets
JavaBeans
Java3D
Programacin grfica
Programacin UI
Java2D
Bases de datos
AW
T
JDBC
CORBA
Programacin
distribuida
Enterprise JavaBeans
RMI
SWT
Swing
Versiones de Java
1991: El proyecto secreto Green Team equipado con 13 personas, fue designado por
Sun para anticipar y planear las futuras tendencias en el mundo de la informtica. Este
proyecto a puertas cerradas fue impulsado por Patrick Naughton, Mike Sheridan y James
Gosling.
Estaban tentando a las compaas de cable con la idea de cmo se deban ver sus redes. Era
interactivo, y los usuarios podan leer y escribir informacin en el sistema. Pero las
compaas no queran perder mucho control. Era demasiado avanzado para la poca, y el
equipo de desarrollo, que para ese momento ya eran 70, todava buscaba un mercado al que
le pudiese interesar la idea.
El 22 de Marzo, Lisa Poulson coordin con el peridico San Jose Mercury News para
escribir una historia sobre la tecnologa Java basada en el lanzamiento oficial que
vendra pronto. El problema: en el artculo se mencionaba un sitio web que todava ni
exista, por lo cual el equipo tuvo que dedicarse a montar un website en pocas horas.
Hola Mundo
/*
* Example HelloWorld
* Prints the message "Hello, World!
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world.);
}
}
Palabras reservadas
abstract
boolean
break
byte
byvalue
case
cast
catch
char
class
const
continue
default
do
double
else
extends
false
final
finally
float
for
future
generic
goto
if
implements
import
inner
instanceof
int
interface
long
native
new
null
operator
outer
package
private
protected
public
rest
return
short
static
super
switch
synchronized
this
throw
throws
transient
true
try
var
void
volatile
while
Tipos Simples
Tipos
TiposSimples
Simples Tamao
Tamao
Valor
ValorMnimo
Mnimo
Valor
ValorMximo
Mximo
Tipos
TiposWrapper
Wrapper
boolean
boolean
1-bit
1-bit
--
--
Boolean
Boolean
char
char
16-bit
16-bit
Unicode
Unicode00
16
Unicode
Unicode2216-1-1
Character
Character
byte
byte
8-bit
8-bit
-128
-128
+127
+127
Byte
Byte
short
short
16-bit
16-bit
-2-21515
15
+2
+215-1-1
Short
Short
int
int
32-bit
32-bit
-2-23131
31
+2
+231-1-1
Integer
Integer
long
long
64-bit
64-bit
-2-26363
63
+2
+263-1-1
Long
Long
float
float
32-bit
32-bit
IEE754
IEE754
IEE754
IEE754
Float
Float
double
double
64-bit
64-bit
IEE754
IEE754
IEE754
IEE754
Double
Double
void
void
--
--
--
Void
Void
Sistema de tipos
Bloques
Comandos y secuenciadores
if (expressBool) {
....
} else {
....
}
switch (selector) {
case valor1: instrucci1;
break;
selector:
case valor2: ...........
char,byte,short,int
...
default: instrucciN;
}
Comandos y Secuenciadores
Bucles FOR:
for (<inicialitzaci>; <continuar si ...>;<increment>)
for (int i=0; i<10; i++) {...}
Bucles DO-WHILE
do {
...
} while (expressioBooleana);
Bucles WHILE
while (expressioBooleana) {
...
}
Clases en Java
Lenguaje tipado estticamente
Legible
No separacin en fichero interfaz e
implementacin.
Lenguaje semi-interpretado: Mquina Virtual
Java + bytecodes
Atributos y variables de clase
Mtodos de instancia y de clase
Incluye metaclases (Reflexin)
Ejemplo: Cuenta
Creacin de Objetos
Constructores: mtodos con el nombre de la clase
que no devuelven nada (void).
Acceso a las variables de instancia de la clase
mediante mtodos de instancia (set y get).
Cuenta c = new Cuenta (pedro);
c.reintegro(10000);
c.ingreso(20000);
int x = c.getSaldo();
Que ocurre ?
Propiedades de clase
No podemos acceder desde variables de
clase a variables de instancia.
// Mtodo de clase
public static int setInteres(int cantidadPts)
{
interes= cantidadPts
}
Propiedades de clase
public class HelloWorld {
public static void main(String[] args) {
Cuenta.setInteres(12);
Math.sqrt(9);
}
}
public
accesible por todas las clases
private
slo accesible por los mtodos de la clase
protected
accesible por las clases del paquete y por las
subclases
Visibilidad
publ protect packa
ed
ge
The class itself ic
Si
Si
Si
Clases del
Si
Si
Si
mismo
paquete
Subclases de
Si
Si
No
otro paquete
No-subclases
Si
No
No
de otro
paquete
priva
te
Si
No
No
No
Asignacin
variable = expresin
miObjeto= otroObjeto;
Asignacin y cloning
Point p = new Point (1,1);
Point p2 = p;
p2.setLocation(120,120);
//Aliasing
System.out.println("Valor de p:" + p.getX());
System.out.println("Valor de p2:" + p2.getX());
Point p3 = (Point)p.clone();
p3.setLocation(40,40);
System.out.println("Valor de p:" + p.getX());
System.out.println("Valor de p3:" + p3.getX());
Copia en Java
La clase Object incluye el mtodo
protected Object clone( ) {..} ..}
que implementa una copia superficial.
Para poder clonar objetos de una clase se
debe
Declarar que implementa la interfaz Cloneable
Redefinir y hacer pblico el mtodo clone()
Dejar la versin original (copia superficial) o
bien hacer una copia de mayor profundidad.
Paso de Parmetros
class PassByValue {
public static void modifyPoint(Point pt, int j)
{
pt.setLocation(5,5);
j = 15;
}
public static void main(String args[])
{
Point p = new Point(0,0);
//1
int i = 10;
modifyPoint(p, i);
//2
//3
}}
Arrays y Clases
Cuenta lista_cuentas [] = new Cuenta[10];
O bien:
Cuenta lista_cuentas[];
lista_cuentas = new Cuenta [10];
Arrays y clases
La inicializacin del array no instancia n
objetos del tipo establecido !!!
Los deja a null por defecto
Cuenta lista_cuentas [] = new Cuenta[10];
Cuenta micuenta = new Cuenta(pedro);
Cuenta sucuenta = new Cuenta(pepe);
lista_cuentas[0] = micuenta;
lista_cuentas[1] = sucuenta;
lista_cuentas[0].ingreso(100);
La clase java.lang.String
Es una clase, pero tiene facilidades con el
constructor
Si se quiere eficiencia en la concatenacin y
manejo de cadenas usar StringBuffer.
String nombre = new String(pedro);
Es equivalente a:
String nombre = pedro;
String total = nombre + garcia;
Class
getFields
getMethods
getName
(...)
package pedro.utils;
import pedro.utils.*;
import pedro.*; // No es jerrquico
import pedro.utils.Cosa;
Paquetes Java
Faculty
1
1
Address
-streetAddress : String
-city : String
-state : String
-zipCode : String
GraduateStudent
MasterStudent
PhDStudent
UndergraduateStudent
Clientela
Una Cuenta tiene un propietario de tipo Cliente:
Class Cuenta {
private Cliente propietario;
() }
Un Banco tiene N cuentas:
Class Banco {
private Cuenta lista_cuentas[];
() }
Herencia en Java
public class X extends Y {...}
Sintaxis de clase
La clase Object
protected Object clone()
Creates and returns a copy of this object.
boolean equals(Object obj)
Indicates whether some other object is "equal
to" this one.protected
void finalize()
Called by the garbage collector on an object
when garbage collection determines that there are
no more references to the object.
Class getClass()
Returns the runtime class of an object
String toString()
Returns a string representation of the object.
Object
Todas las clases heredan de Object
Class Cuenta [extends Object]
int y = 5;
if (x ==y) then ()
Ejemplo
Class Coche {
private String marca;
private int precio;
public Coche (String marca, int precio){
this.marca = marca;
this.precio = precio;
}
public int getPrecio(){
return precio;
}
Ejemplo
public String getMarca(){
return marca;
}
public boolean equals (Object obj){
Coche otro = (Coche) obj;
return
(otro.getPrecio()==this.precio)&&(otro.getMarca().equals(this.m
arca);
}
Ejemplo
protected Object clone(){
return new Coche (marca, precio);
}
public String toString (){
return (+marca+,+precio+);
}
Ejemplo
public static void main (String args[]){
Coche micoche = new Coche (bmw,100);
Coche otrocoche = new Coche (seat,10);
if (micoche.equals(otrocoche))
System.out.println(iguales);
System.out.println(micoche);
}
Tipos de herencia
Para referirse a la instancia actual usamos this y
para referirnos a nuestra clase padre usamos
super.
Herencia de redefinicin de mtodos
Refinamiento
Reemplazo
Herencia abstracta
Herencia de interfaces
Herencia de reemplazo
Herencia de refinamiento
Clases abstractas
Polimorfismo
Tipo esttico:
Tipo asociado en la declaracin
Tipo dinmico:
Tipo correspondiente a la clase del objeto conectado a
la entidad en tiempo de ejecucin
Ejemplo:
A
B
C
E
(antes)
Conexin polimorfa
(despus)
(POLIGONO)
p:POLIGONO; r:RECTANGULO
(RECTANGULO)
b) paso de parmetros:
comer (Animal a ) f es una rutina polimorfa, me puedo comer
cualquier animal (perro, gato, )
{i}
{ii}
{iii}
Ejemplo polimorfismo
Polimorfismo
Animal a = new Animal();
Perro p;
a = p;
Object x;
Perro p = new Perro();
x = p;
Perro p2 = (Perro) x;
Polimorfismo y castings
Object list [] = new Object[3];
String s = lala;
Perro p = new Perro();
list[0] = s;
list[1] = p;
Object x = list[0];
Perro p2 = (Perro) list[1];
Polimorfismo
Object list [] = new Object[3];
Integer i1 = new Integer(3);
int z = 74;
Integer i2 = new Integer(4);
list[0] = i1;
list[1] = i2;
Object x = list[0];
Integer r2 = (Integer) list[1];
int resul = z2.intValue();
Interfaces
Son clases en las que todos las propiedades son estticas y
finales y todos los mtodos son abstractos.
Permiten la herencia mltiple, y separacin de
especificacin e implementacin.
Se aplican las mismas reglas que la herencia de clases en
las asignaciones polimrficas
interface Persona
interface Perro
{
public void habla();
Interfaces y herencia
public class Mutante implements Persona, Perro
{
public void habla()
{
}
public void ladra()
{
}
}
System.out.println(GUAU);
Interfaces y polimorfismo
Mutante m = new Mutante();
Persona p = m;
p.habla();
Perro p = m;
m.ladra();
Interfaces
class Prueba
{
public static void ladra (Perro p)
{ p.ladra();
{
public static void habla(Persona p)
{ p.habla()
}
Interfaces
Mutante m = new Mutante();
Prueba.habla(m);
Prueba.ladra(m);
No podemos instanciar una interface, pero si asignarle una
instancia de una clase que implemente esta interface:
Excepciones Java
Proporcionan una manera limpia de comprobar
errores sin complicar el cdigo
Proporcionan, adems, un mecanismo para sealar
directamente los errores sin necesidad de usar
indicadores (atributos, parmetros).
Son lanzadas cuando se detectan situaciones
imprevistas de error.
Excepciones Java
BufferedReader br;
int codigoProducto = Integer.parseInt (br.readLine() )
70
Excepciones Java
Las excepciones son objetos.
Hay dos tipos:
Comprobadas
No comprobadas
Necesidad de definir subclases de Exception o
RunTimeException.
Exception
RunTimeException
No comprobadas
Comprobadas
Excepciones Comprobadas
Subclases de Exception
Un mtodo que lance una excepcin comprobada,
debe especificarlo en su signatura.
El cdigo que invoca un mtodo que puede lanzar
una excepcin comprobada debe manejarla
mediante una clusula try-catch.
Situaciones comprobadas por el compilador
Excepciones No Comprobadas
Subclases de RuntimeException
Un mtodo puede lanzar una excepcin no
comprobada, sin especificarlo en su signatura.
El cdigo que invoca un mtodo que puede lanzar
una excepcin no comprobada no debe manejarla.
Es recomendable listar todas las excepciones en la
signatura para facilitar su uso.
Cmo elegimos si una nueva excepcin es
comprobada o no comprobada?
74
Uso de Excepciones
Comprobadas
public class ClaveNoExiste extends Exception {
public ClaveNoExiste() { super(); }
}
// mtodo en TablaHash
public void cambiarValor (String clave, Object valor)
throws ClaveNoExiste
{ if (obtener(clave) == null)
throw new ClaveNoExiste ();
}
TablaHash unaTabla;
...
try { unaTabla.cambiarValor(s,v);}
catch (ClaveNoExiste e) {...}
finally {...}
75
Excepciones Comprobadas
Qu puede hacer el cliente de un mtodo
que lanza una excepcin comprobada?
1) Capturarla y manejarla
2) Capturarla y asociarla a una de las excepciones declaradas
en el mtodo.
3) Declararla en la clusula throws y no manejarla, con lo que
se propaga al mtodo que lo invoc.
Excepciones No Comprobadas
Qu puede hacer el cliente de un
mtodo que lanza una excepcin no
comprobada?
1) Si no la captura se propaga al mtodo que lo invoc.
2) Tambin puede capturarla y manejarla.
3) Capturar la excepcin y asociarla a una de las
excepciones declaradas en el mtodo.
Excepciones Java
try {
Sentencias con mensajes que pueden provocar
excepciones
} catch (unaExcepcion e) {codigo manejo excepcin
} catch (OtraExcepcion e) {codigo manejo excepcin
} finally {...} // se ejecuta se lance o no una excepcin
Excepciones en Java
den
r
o
n
an e a una
l
a
v
-Se e se ejecut
- Slo
try{
//sentencias
}catch (TipoExcepcion1 e){
//manejar excepcin
}catch (TipoExcepcion2 e){
//manejar excepcin
} ...
Una excepcin
es un objeto!
finally{
//sentencias que se ejecutan SIEMPRE
//salte o no una excepcin
}
Ejemplos
public static int factorial (int n) throws NonPositiveException
{
if (n<=0) throw new NonPositiveException (Num.factorial);
}
try { Num.factorial(y);
} catch (NonPositiveException e) { }
Ejemplos
public static int search (int [] a, int x) throws NullPointerException
NoEncontradoException
{}
try { ;
try { x = Arrays.search(v,7);}
catch (NullPointerException e) {
throw new NoEncontradoException(); }
} catch (NoEncontradoException e) {..}
Captura de excepciones no
comprobadas
try { x = y [n]; i = Arrays.search(z, x);}
catch (IndexOutOfBoundsException e) {
manejar la excepcin en el caso del acceso y[n] }
Ejemplos
public class Arrays {
public static int min (int [] a) throws NullPointerException,
EmptyException
{ // EFECTO: Si a es null lanza NullPointerException, si no si a
// est vaco lanza EmptyException, si no retorna el valor
mnimo // del array a
int m;
try { m = a[0]; }
catch (IndexOutOfBoundsException e) {
throw new EmptyException(Arrays.min); }
for (int i = 1; i < a.length; i++) if (a[i] < m) m = a[i];
return m; }
Ejemplos
public class Arrays {
public static boolean sorted (int [] a) throws
NullPointerException, EmptyException
{ // EFECTO: Si a es null lanza NullPointerException, si no retorna
// true si el array est ordenado en orden ascendente si no false
int prev;
try { prev = a[0]; }
catch (IndexOutOfBoundsException e) { return true; }
for (int i = 1; i < a.length; i++)
if (prev <= a[i]) prev = a[i]; else return false
return true; }
A r r a y L is t
A b s tra c tS e t
L in k e d L is t
A rra y S e t
H ashS et
boolean add(Object)
boolean addAll(Collection)
void clear()
boolean contains(Object)
boolean containsAll(Collection)
boolean isEmpty()
Iterator iterator()
boolean remove(Object)
boolean removeAll(Collection)
boolean retainAll(Collection)
int size()
Object[] toArray()
Iteradores
boolean hasNext()
Object next()
void remove() [implementacin opcional]
Por ejemplo:
public void escribir (Collection c) {
for (Iterator it=c.iterator(); it.hasnext();) {
System.out.println(it.next());
}
}
Genericidad y Java
Java no posee genericidad (hasta el Jdk1.5)
Necesidad de declaraciones de tipo Object
Problemas:
Necesidad de conversiones de tipo
No se asegura homogeneidad
conjFig[0]=p;
conjFig[0]=r;
conjFig[0]=c;
conjFig[0]=t;
conjFig
1
2
3
4
Ejemplo colecciones
Ejemplo HashMap
Ejemplo