Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
ndice
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
introduccin a Java
pregunta
introduccin a Java
breve historia
Simple
El cdigo es autocontenido y no son necesarios ficheros de cabecera o IDLs
Se han eliminado elementos poco tiles de C++ como macros, herencia
mltiple, operadores de acceso diferentes del punto (.) , etc.
Slo posee 53 palabras reservadas.
Robusto
Se eliminan los causantes de la mayora de errores en C++: los punteros y su
aritmtica.
Se realizan mltiples comprobaciones en tiempo de ejecucin como los
accesos fuera de rango y la corrupcin de memoria.
La gestin de excepciones es mucho ms robusta que en C++.
introduccin a Java
caractersticas de Java
Multiplataforma y portable
Java es interpretado. Genera archivos bytecode que se ejecutan bajo una
mquina virtual. El mismo cdigo sirve para varios entornos.
Actualmente existen intrpretes de Java bajo Windows, Linux, MacOS y
Solaris.
El tamao de los tipos bsicos es fijo e independiente del
compilador y mquina.
Abstrae utilidades dependientes de cada plataforma: GUI
(ventanas, mens), E/S (gestin de ficheros), protocolos
TCP/IP, etc.
introduccin a Java
caractersticas de Java
Orientado a objetos
Se basa en los tres pilares del paradigma de orientacin a objetos:
encapsulacin, herencia y polimorfismo.
Multitarea
Java dispone del uso de hilos, que
permiten la ejecucin de dos
fragmentos de cdigo de forma
concurrente y compartiendo recursos.
Ligero
Las aplicaciones ocupan muy poco espacio de disco.
El intrprete y las bibliotecas bsicas ocupan unos 200 KB.
introduccin a Java
mquina virtual (JVM)
Ficheros bytecode
(.class)
Lenguaje
mquina JVM (java)
introduccin a Java
tipos de aplicaciones
Applets
Aplicaciones Java que un navegador web descarga de un servidor
Se ejecutan en la mquina cliente con restricciones
Aplicaciones JEE
Programas gestionados por un servidor de aplicaciones y por un servidor web
conjuntamente
Se ejecutan en la mquina servidor
Aplicaciones JME
Aplicaciones para dispositivos mviles y PDA
Se ejecutan en entorno reducido con pocos recursos
introduccin a Java
siglas java
Java Enterprise
JEE Edition
Java Statandard
JSE Edition
Java
JDK Development Kit
Java Runtime
JRE Environment
Java Virtual
JVM Machine
introduccin a Java
primera aplicacin en Java
Usar un editor de textos (por ejemplo, Bloc de notas) para escribir el cdigo y
guardarlo como texto plano en un fichero llamado HelloWorld.java.
Para compilarlo basta con abrir una ventana de consola (MS-DOS en Windows),
colocarse en su directorio y escribir:
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
sintaxis bsica
identificadores
Operadores de asignacin
El operador bsico es (=) que, a parte de asignar, devuelve el valor asignado.
La asignacin es asociativa por la derecha.
Operadores compuestos: realizan una operacin y asignan el resultado.
Existen para la suma (+=), resta (-=), producto (*=), divisin (/=), mdulo (%=),
las operaciones bit a bit de and (&=), or (|=), xor (^=) y los desplazamientos de
bits (<<=, >>= y >>>=)
Operadores incrementales: realizan un incremento (++) o decremento (--)
de una unidad en una variable. Si el operador se coloca antes del nombre de la
variable devuelve el valor de la variable antes de incrementarla; si se hace
despus, se incrementa y devuelve el valor ya incrementado
sintaxis bsica
operadores
Ejemplos de asignacin:
Operador condicional
Es el nico de Java con tres operandos, cuya sintaxis es:
<condicin> ? <expresin1> : <expresin2>
Se evala <condicin>. Si es cierta se devuelve el resultado de evaluar
<expresin1> y si es falsa, <expresin2>
Ejemplo: max = (a>b)?a:b; pregunta si a es mayor que b y devuelve a en
caso afirmativo y b en caso contrario.
No confundirlo con una sentencia ifelse ya que el operador condicional
siempre devuelve un valor, pero ifelse no (aunque se puede usar de forma
similar).
sintaxis bsica
instrucciones de control de flujo
Sentencia condicional if
if(<condicin>){ if(<condicin1>){
<instrucciones> <instrucciones>
}else { } else if(<condicin2>) {
<instrucciones> <instrucciones>
} }
switch(<expresin>){ Ejemplo:
case <literal1>:
<instrucciones> switch(estado){
break; case 0:
case <literal2>: System.out.println(Estoy triste);
<instrucciones> break;
break; case 1:
//N valores System.out.println(Estoy serio);
case <literalN>: break;
<instrucciones> case 2:
break; System.out.println(Estoy feliz);
default: break;
<instrucciones> default:
} System.out.println(No estoy);
}
sintaxis bsica
instrucciones de control de flujo
while(<condicin>){ do{
<instrucciones> <instrucciones>
} while(<condicin>);
Ejemplo: Ejemplo:
Ejemplo: Ejemplo:
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
arrays
concepto y declaracin
Un array o tabla es un conjunto ordenado de objetos del mismo tipo, tamao fijo y
se almacena en posiciones consecutivas de memoria. Se tratan como objetos.
Se declara con la siguiente sintaxis:
<tipoDatos> []<nombreTabla>;
Ejemplo: una tabla que almacenase enteros se declarara as
int []miTabla; o bien int miTabla[];
No obstante, esta tabla no almacena nada ya que su valor es null. Si se desea de
verdad que almacene objetos hay que indicar cul es su tamao (cuntos objetos
podr almacenar), que se hace con la siguiente sintaxis:
<tipoDatos> []<nombreTabla> = new <tipoDatos>[<nmDatos>]
int miTabla[] = new int[50];
arrays
concepto y declaracin
Si declaramos un array con los valores de forma simplificada (sin new), slo se
permite la declaracin en una nica instruccin.
Incorrecto: int miArray[]; miArray[] = {1,2,3};
Correcto: int miArray[] = {1,2,3};
Si declaramos un array con new, siempre se ha
de especificar su tamao.
Incorrecto: int miArray[] = new int[];
Correcto: int miArray[] = new int[3];
Si declaramos un array con new y valores no se permite especificar el tamao.
Incorrecto: int miArray[] = new int[3]{1,2,3};
Correcto: int miArray[] = new int[]{1,2,3};
arrays
acceso a elementos
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
orientacin a objetos
concepto de clase y objeto
class <nombreClase> {
<atributo/mtodo 1>
<atributo/mtodo 2>
<>
<atributo/mtodo N>
}
Ejemplo:
class MiClase {
int a;
double b;
public void f(int i){
a = i;
}
//ms atributos y mtodos
}
orientacin a objetos
atributos
Los constructores tienen una sintaxis muy parecida a los mtodos, salvo que el
nombre ha de ser el mismo que el de la clase y nunca tienen valor de retorno (ni
void):
<nombreTipo> ([<parmetros>]) {
<instrucciones>
}
Ejemplo:
Persona(String nombre){
System.out.println(nombre);
}
Al constructor se le llama en el momento de creacin del objeto usando la directiva
new:
Persona p = new Persona(David);
orientacin a objetos
constructor por defecto
Se pueden definir varios constructores para una clase siempre y cuando difieran
en nmero de parmetros y/o en tipos (por ejemplo no podemos tener dos
constructores cuyos parmetros sean int e int respectivamente).
Tambin se pueden realizar llamadas desde un constructor a otros constructores
usando la partcula this() como primera instruccin (usar esta instruccin en otro
orden genera un error de compilacin):
class A {
A (){
this(0.0,0.0); //llamamos al segundo constructor
}
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
encapsulacin, herencia y
polimorfismo
los tres pilares
El paradigma de la programacin orientada a objetos se sustenta en tres
conceptos:
encapsulacin, herencia y
polimorfismo
encapsulacin
Misma clase
Subclase del mismo
package
Clase del mismo
package
Subclase de otro
package
Clase de otro
package
encapsulacin, herencia y
polimorfismo
herencia
La herencia, es un mecanismo que permite
definir nuevas clases a partir de clases ya
definidas de forma que la nueva clase (llamada
tambin clase hija) adquiera todos los mtodos
y atributos de cuya clase parte (clase padre).
Para indicar que una clase hereda de otra se
Tipo de motor
N puertas N marchas Cilindrada
CV Con luz?
Las clases abstractas pueden tener varios niveles de jerarqua, es decir, una
clase abstracta puede heredar otra clase abstracta.
Los mtodos abstractos no tienen implementacin (cuerpo).
Cada clase que herede de una clase abstracta, deber suministrar el cdigo de
los mtodos abstractos o sino declararse tambin abstracta.
No sobrescribir un mtodo abstracto heredado dentro de una clase concreta
provoca un error de compilacin ya que carece de cuerpo.
Si una clase tiene un mtodo abstracto, la clase debe ser definida como abstracta
(si no se hace, se genera un error de compilacin).
El recproco no tiene por qu ser cierto, es decir, una clase abstracta puede
carecer de mtodos abstractos.
encapsulacin, herencia y
polimorfismo
clases y mtodos finales
Una clase se declara como final si no se desea que sta tenga subclases.
Se ha de aadir la palabra reservada final en la declaracin de la clase para
hacerla final.
public final class FinalA {}
De forma anloga un mtodo se declara como final si no se desea que alguna de
sus subclases lo sobrescriba.
Se indica aadiendo la palabra final en la declaracin del mtodo.
public final void f(int x){}
Esto no implica que las subclases que hereden de la clase que contiene el
mtodo final dejen de heredarlo.
Por definicin una clase o un mtodo final nunca puede ser abstracto.
encapsulacin, herencia y
polimorfismo
concepto de interfaz
Una interfaz (o interface) es la definicin de un conjunto de mtodos u otros
miembros para los que no se da una implementacin.
Su sintaxis es casi similar a la de una clase:
<modificadores> interface <nombre> extends <interfaces base> {
<atributos o mtodos>
}
Las interfaces se usan para definir un protocolo de comportamiento comn que
puede ser implementado por cualquier clase sin relacin directa con otras.
Una interfaz equivale a una clase abstracta cuyos mtodos son todos abstractos y
deben ser implementados en sus subclases.
La diferencia entre definir una interfaz y una clase abstracta con mtodos
abstractos radica en que las interfaces permiten herencia mltiple.
encapsulacin, herencia y
polimorfismo
elementos de una interfaz
public interface B {
int b();
}
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
excepciones
pregunta
excepciones
concepto
Throwable
Error Exception
OutOfMemoryError
Excepciones
StackOverflowError Excepciones unchecked
AWTError checked
IOException ArithmeticException
SQLException NullPointerException
ClassNotFoundException OutOfBoundsException
Excepciones Personalizadas ClassCastException
excepciones
captura y tratamiento de excepciones
1. Introduccin a Java
2. Sintaxis bsica
3. Arrays
4. Orientacin a objetos
5. Encapsulacin, herencia y polimorfismo
6. Excepciones
7. Colecciones y utilidades
colecciones y utilidades
pregunta
colecciones y utilidades
definicin de coleccin
Una coleccin es un objeto que agrupa mltiples objetos como una unidad que se
usan para almacenar, obtener y manipular datos agregados.
Java nos da un marco de trabajo unificado para representar y manipular las
colecciones conocido como Java Collection Framework o JCF. Consta de tres
componentes:
Interfaces. Tipos abstractos de datos que representan las colecciones y que
abstraen los detalles de su representacin interna. Forman una jerarqua.
Implementaciones. Representaciones concretas de las interfaces (clases).
Son en esencia estructuras de datos reutilizables.
Algoritmos. Mtodos de clculo tiles tales como ordenaciones y bsquedas.
Se basan en el polimorfismo para hacerlos reusables.
colecciones y utilidades
jerarqua de interfaces
Collection Map
SortedSet SortedMap
colecciones y utilidades
colecciones y tipos genricos
Hasta la versin 1.4 de Java, las colecciones trataban siempre con datos de tipo
Object.
Las colecciones podan mezclar objetos de naturalezas muy dispares.
Al obtener un objeto, se tena que hacer un casting al tipo real del objeto.
En la versin 1.5 de Java se introducen los tipos genricos, que permiten forzar a
una coleccin a que slo admita objetos de una determinada clase.
Su sintaxis es parecida a los templates de c++:
List<String>, Map<Integer,Persona>, Set<Fabrica>
Al obtener el objeto no es necesario hacer un casting ya que en tiempo de
compilacin se sabe de qu clase son los objetos que contiene.
colecciones y utilidades
la interfaz Collection
remove(T elem) El primero borra un elemento de la coleccin. El segundo borra todos los
removeAll(Coll) elementos contenidos en el parmetro coleccin de la coleccin actual
Mtodo Descripcin
get(index) Obtiene el elemento situado en la posicin index.
set(index, elem) Cambia el valor de la posicin index con el nuevo valor elem.
Aade el elemento elem en la posicin index desplazando otros
add(index, elem)
elementos hacia la derecha.
remove(index) Borra el elemento situado en la posicin index.
indexOf(elem) El primero busca la posicin de la primera ocurrencia de elem. El
lastIndexOf(elem) segundo, la ltima.
colecciones y utilidades
la interfaz Queue
Mtodo Descripcin
add(elem) Aade un elemento al final de la cola. Mientras add puede lanzar
offer(elem) excepciones, offer devuelve un valor especial.
remove() Borra el primer elemento de la cola y lo devuelve. Mientras remove puede
poll() lanzar excepciones, poll devuelve un valor especial.
element() Obtiene el primer elemento de la cola sin sacarlo de ella. Mientras
peek() element puede lanzar excepciones, peek devuelve un valor especial.
colecciones y utilidades
la interfaz Map
Mtodo Descripcin
put(key, value) Aade o sustituye el valor value para la clave key.
putAll(Map<K,V>) Aade todas las entrada del parmetro Map al mapa actual
Interfaz
Set List Queue Map
Tabla de HashMap
HashSet
Hash HashTable
Array
ArrayList ArrayDeque
Redimen-
Vector Stack
Implementacin
sionable
rbol Balan-
TreeSet TreeMap
ceado
Lista
LinkedList LinkedList
Enlazada
Tabla Hash +
Lista LinkedHashSet LinkedHashMap
Enlazada
Heap PriorityQueue
colecciones y utilidades
implementaciones de Set
HashSet
Se implementa a travs de una tabla de Hash con un algoritmo de gestin de
colisiones de direccionamiento abierto.
La funcin de hashing viene dada por el mtodo hashIndex() de Object.
Se puede sobrescribir.
TreeSet
Se implementa a travs de un rbol rojinegro (red black tree). Es un rbol
binario de balanceo especial. Por la naturaleza de la estructura, la coleccin
siempre est ordenada y al recorrerse se hace siempre en orden.
LinkedHashSet
Se implementa a travs de una tabla hash con algoritmo de gestin de
colisiones de encadenamiento separado.
colecciones y utilidades
implementaciones de List
ArrayList
Se implementa a travs de un array redimensionable.
Es un array tpico que cuando necesita crecer se crea uno nuevo de capacidad
doble y copia los valores del array antiguo.
Es la opcin recomendada para listas de slo lectura o que crecen raramente.
LinkedList
Se implementa a travs de nodos encadenados secuencialmente con
referencias (punteros).
Es la opcin recomendada para listas que cambian de tamao muy a menudo,
sobre todo cuando se producen inserciones y borrados en medio de la lista.
colecciones y utilidades
implementaciones de List
LinkedList
Comparte implementacin con List. Es la opcin recomendada para
implementar una cola de propsito general
ArrayDeque
Se implementa a travs un array redimensionable.
Permite insertar y sacar elementos tanto del principio como del final de la cola.
PriorityQueue
Las colas de prioridad son colas en las que importa el orden de sus elementos.
De esta forma, elementos de mayor prioridad se cuelan a posiciones situadas
ms hacia el inicio de la cola.
Se implementa a travs de un heap.
colecciones y utilidades
implementaciones de Map
HashMap
Comparte la misma estructura de datos que HashSet (tabla de Hash)
La funcin de hash se aplica a las claves.
TreeMap
Comparte la misma estructura de datos que TreeSet (un rbol rojinegro)
Por la naturaleza de la estructura, la coleccin siempre est ordenada y al
recorrerse se hace siempre en orden.
LinkedHashMap
Comparte la misma estructura de datos que LinkedHashSet (tabla de Hash
con lista encadenada).
colecciones y utilidades
implementaciones de List
Mtodo Descripcin
Realiza una bsqueda binaria de val sobre la lista list. La lista debe estar
binarySearch(list, val) ordenada para que el algoritmo funcione. Devuelve la posicin donde se halla
binarySearch(list, val, cmp) el elemento o en caso de no encontrarse la posicin donde debera ir. El
segundo mtodo admite un comparador.
sort(list) Ordena la lista list usando el algoritmo merge sort. El segundo mtodo
sort(list, comparator) admite un comparador.
disjoint(coll1, coll2) Indica si dos colecciones no comparten elementos entre s (son disjuntas).
min(coll, [cmp]) Busca el elemento mnimo y mximo de la coleccin coll. Estos mtodos
max(coll, [cmp]) admiten un comparador.
fill(list, obj) Rellena y reemplaza todos los elementos de la lista list con obj.
Mtodo Descripcin
Indica si existen ms elementos en la coleccin, es decir, si hemos
hasNext()
llegado al fin
next() Devuelve el siguiente elemento de la coleccin
remove() Borra el elemento actual de la coleccin. Es un mtodo opcional.
colecciones y utilidades
la clase String
Mtodo Descripcin
charAt(index) Devuelve el carcter situado en la posicin index.
Mtodo Descripcin
Divide el String usando como separador la expresin regular regex.
split(regex)
Devuelve un array de String.
startsWith(prefix) Indica si la cadena empieza o termina dado un prefijo o sufijo como
endsWith(suffix) parmetro.
substring(ini,dest) Devuelve la subcadena entre ini y dest contenida en el string actual.
toLowerCase() El primero sustituye todas las letras maysculas por minsculas. El
toUpperCase() segundo sustituye todas las letras minsculas por maysculas.
trim() Elimina los espacios en blanco del inicio y final del String.
Mtodo esttico. Devuelve el valor de tipoSimple transformado en
valueOf(tipoSimple)
String. Admite como parmetro cualquier tipo simple.
colecciones y utilidades
la clase StringBuffer
Debido a que los String son inmutables, StringBuffer nos ofrece la posibilidad
de construir cadenas modificables durante el transcurso del programa.
Al concatenar dos String s1 + s2 no se aade s1 al final de s2, sino que de
forma transparente al programador se crea un StringBuffer, se concatena y se
devuelve un nuevo String.
Mtodo Descripcin
Aade valor al final de la secuencia. Puede ser un tipo simple, un String o un
append(valor)
Object.
delete(ini,fin) El primero borra toda la secuencia entre ini y fin. El segundo borra el
deleteCharAt(pos) carcter situado en la posicin pos.
Aade en la posicin pos, el valor val. val puede ser un tipo simple, un
insert(pos,val)
string o un Object.
setCharAt(pos,car) Sustituye el carcter de la posicin pos por car.
Las clases wrapper son la solucin que da Java para suplir la necesidad de tratar
los tipos de datos simples como objetos.
Se crea un objeto que envuelve (encapsula) al
Tipo Simple Wrapper
boolean Boolean
tipo simple.
Ejemplos:
Integer integ = new Integer (7); int i = integ.intValue();
Double doub = new Double(5.2); double d = doub.doubleValue();
int i2 = integ; //Error de compilacin. Asign incompatible
Importante! A partir de la versin 1.6 de Java se permite usar literales de tipos
simples directamente sobre los tipos wrapper.
Integer i = 6; Character c = H;
Double d = 5.9f;
private void f(Integer x, Double y){}
f(45,6.9);
colecciones y utilidades
la clase Math
Mtodo Descripcin
abs(x) Devuelve el valor absoluto de x.
sin(x)
Devuelve el seno, coseno y tangente de x. Sus inversas son asin, acos y atan,
cos(x)
respectivamente
tan(x)
ceil(x) El primero devuelve la representacin de x como entero redondeada hacia arriba. El
floor(x) segundo la devuelve redondeada hacia abajo. El tercero devuelve x redondeado hacia
round(x) arriba o hacia abajo dependiendo de su parte decimal
exp(x)
El primero devuelve ex. El segundo, xy.
pow(x,y)
log(x)
El primero devuelve el logaritmo neperiano de x. El segundo, el logaritmo en base 10.
log10(x)
sqrt(x)
El primero devuelve la raz cuadrada de x. El segundo devuelve (x2 + y2)
hypot(x,y)
max(x,y)
Devuelven el mximo y el mnimo entre x e y, respectivamente
min(x,y)
toDegrees(x)
Convierte x a degrados y a radianes, respectivamente
toRadians(x)
colecciones y utilidades
la clase Date
Mtodo Descripcin
Aade o quita al campo cmp la cantidad especificada en cant. Es sensible al cambio de
add(cmp, cant)
campos superiores.
getInstance() Mtodo esttico. Obtiene la instancia de Calendar con la configuracin de hora local.
set(campo, val) Modifica el valor del campo cmp con el nuevo valor val.
setTime(Date) Cambia los campos de Calendar en funcin de la fecha pasada como parmetro.