Вы находитесь на странице: 1из 107

Contenido

 J2SDK
 Introducción a Java.
 Conceptos POO.
 Estructuras de Clases.
 Bibliotecas Básicas de Java.
 Manejo de Excepciones.
 Threads.
Introducción a Java
 Lenguaje de programación creado
aproximadamente en el año 1994 por una
pequeña división de Sun Microsystems,
liderada por James Gosling.
Introducción a Java

 Nació con el nombre de Oak, y se desarrolló


a partir de C++, con la finalidad de crear un
lenguaje fácil de aprender y utilizar en
sistemas empotrados.

 Por cuestiones de propiedad intelectual, más


tarde cambiaría su nombre a Java.
Características

 Compilar su código con una independencia


total de la arquitectura del microprocesador o
del sistema operativo (SO).

 El programa generado es un bytecode que


es interpretado por la Máquina Virtual de
Java (JVM).
Características
Aplicación

Java Runtime Enviroment (JRE)


API de Java Java Virtual Machine (JVM)

Sistema Operativo (Windows, Linux, Solaris, etc,)

Hardware (Intel, Motorola, AMD, etc.)


Características

Archivo fuente
(*.java) JVM (Solaris)

Archivo compilado
(*.class) JVM (Linux)
El mismo
Lenguaje resultado
intermedio

Compilador
(javac.exe) JVM (Windows)
Conceptos POO

 La programación Orientada a Objetos (POO)


es un paradigma que se basa en desarrollar
y modelar sistemas complejos a partir de
componentes que representan entidades del
mundo real.
Conceptos POO

 Una clase es la representación de un


concepto del mundo real.

 Es decir, una idea abstracta de un grupo de


entidades con características similares, logrando
definir un tipo de entidad en concreto.
Conceptos POO

 Un objeto es la instancia de una clase.

 Es la materialización de una entidad.

 Los atributos que representan las propiedades


(datos) de la entidad.
 Los métodos que describen el funcionamiento de
dicha entidad y que responden a ciertos eventos.
Conceptos POO
Objetos de la Clase Persona

Clase Persona
Juan
25
Nombre
Edad

Luis
19
Conceptos POO
Objetos de la Clase Automóvil

Clase Automóvil Chevrolet


Corsa Evo
Avanzar()
Frenar()
Marca
Modelo
Avanzar()
Frenar()
Toyota
Yaris
Avanzar()
Frenar()
Conceptos POO
 Los siguientes principios fundamentales nos
permitirán modelar la realidad bajo el
paradigma de la POO.

 Principio de Abstracción.- Permite


representar características esenciales de un
objeto. Se centra en la vista externa de un
objeto.
Conceptos POO

 Cada persona posee una capacidad de


abstracción distinta.

 Dependiendo del contexto en el que


usualmente se desenvuelva el observador,
será la perspectiva utilizada.
Conceptos POO
Mecánico
Modelo de repuestos
que debe utilizar

Ecologista Conductor
¿El combustible ¿El carro
utilizado no funciona
contamina? correctamente?
Conceptos POO
 Principio de Encapsulamiento.- Capacidad
de contener y controlar el acceso tanto a las
propiedades como a los métodos de un
objeto.

 Para usar un objeto sólo se tiene que


comprender su interfaz, si importar cómo
está implementada, reduciendo así la
complejidad de utilización.
Conceptos POO
Mecánico
Funcionamiento
del motor

Ecologista Conductor
Realiza Necesita la
verificación llave
Conceptos POO

 Principio de Modularidad.- Permite


subdividir una aplicación en partes más
pequeñas, (llamadas módulos).

 Se deben poder compilar por separado, pero


deben soportar conexiones con otros
módulos.
Conceptos POO

Sistema de
encendido

Sistema de
Sistema de
aire
audio
acondicionado
Conceptos POO
 Principio de Jerarquía.- Ordena las
relaciones que existen entre las
abstracciones. Las dos jerarquías más
importantes de un sistema complejo son:

 Estructura de clases (jerarquía “es-un”:


generalización/especialización)
 Estructura de objetos (jerarquía “parte-de”:
agregación)
Conceptos POO

- Un automóvil es un - Una puerta es parte


vehículo. de un automóvil.
- Una moto es un - Una rueda es parte
vehículo. de un automóvil.
Conceptos POO
 Principio de Herencia.- Es un mecanismo
mediante el cual una clase puede ser creada
o definida a partir de otra clase existente
cuando entre dichas clases existe una
relación de generalización/especialización.

 Por ejemplo la clase Automóvil, deriva de la


clase Vehículo, y a su vez, obtiene los
atributos y operaciones de esta clase.
Conceptos POO

Como podemos ver, la clase Vehículo posee los atributos: marca y


modelo; y la operación encender. Estas características son
heredadas por sus dos clases derivadas. Además de las
características heredadas, la clase Automóvil también tiene definida
una característica propia: número de puertas.
Conceptos POO

 Principio de Polimorfismo.-Permite que un


objeto muestre distintos comportamientos
dependiendo de el contexto en que se
encuentre.

 Es decir, realizar la misma operación de


distintas formas, dependiendo del nivel de
abstracción que se requiera.
Conceptos POO

Digamos que la operación de encender está definida de cierta


manera estándar para los automóviles Ej. Usando la llave. Pero se da
el caso de que para los autos de gama alta el comportamiento de la
operación encender sea un tanto diferente Ej. Encendido por voz.
Es cuando decimos que está funcionando el polimorfismo, la
operación encender posee comportamientos diferentes en distintos
niveles jerárquicos..
Estructuras de Clases

 Las principales parte de una clase son:


 Los atributos.- Son las características que
describen la clase o el objeto de alguna manera.
Los valores asignados a los atributos de un
objeto hacen a este objeto ser único.

<modificador_acceso> <tipo_de_atributo> <nombre_atributo1>;


<modificador_acceso> <tipo_de_atributo> <nombre_atributo2>;
<modificador_acceso> <tipo_de_atributo> <nombre_atributo3>;
Estructuras de Clases
 Los métodos.- Son los algoritmos (operaciones)
que procesan los atributos de un objeto. La
consecuencia de la llamada de un método es que
la clase ha sido diseñada para recibir un estímulo
(mensaje). Siempre que un objeto es estimulado
por un mensaje, inicia algún comportamiento
ejecutando un método.
<modificador_acceso> <tipo_devuelto> <nombre_método>(
<tipo_parámetro1> <nombre_parámetro1>,
<tipo_parámetro2> <nombre_parámetro2>,
<tipo_parámetroN> <nombre_parámetroN>){
//cuerpo del método
return <variable_tipo_devuelto>;
}
Estructuras de Clases
 Para instanciar una clase (crear un objeto), es
necesario:

 Crear una referencia al objeto.


 Asignarle una instancia de una clase.

//Creamos una referencia de la clase Vehiculo


Vehiculo unVehiculo;

//Le asignamos una instancia de la clase Vehiculo


unVehiculo = new Vehiculo();
Estructuras de Clases
 El operador new nos permite crear una instancia
nueva de una clase, un objeto.

 Pero no podemos trabajar con ningún objeto si no


tenemos una variable que funcione como
referencia a dicho objeto.

 Es por esa razón que utilizamos nuestra


referencia unVehiculo anteriormente creada, tal
como se ve en el ejemplo anterior.
Estructuras de Clases
 Las referencias a objetos realmente no contienen
a los objetos a los que referencian. De esta forma
se pueden crear múltiples referencias al mismo
objeto.
//Creamos otra referencia de la clase Vehiculo
Vehiculo otroVehiculo = unVehiculo;

 Aunque tan sólo se creó un objeto Vehiculo, hay


dos variables (unVehiculo y otroVehiculo) que
lo referencian.
Estructuras de Clases
MEMORIA
unVehiculo

Referencia hacia el objeto

new
Vehiculo() otroVehiculo

Referencia hacia el mismo objeto


Estructuras de Clases
 Cualquier cambio realizado en el objeto
referenciado por otroVehiculo afectará al objeto
referenciado por unVehiculo. La asignación de
unVehiculo a otroVehiculo no reserva memoria
ni modifica el objeto.
 De hecho, las asignaciones posteriores de
otroVehiculo simplemente desligarán
otroVehiculo del objeto, sin afectarlo.
//Asignamos un valor nulo a la referencia
otroVehiculo = null;
Estructuras de Clases
MEMORIA
unVehiculo

Referencia hacia el objeto

new
Vehiculo() otroVehiculo

Referencia hacia null


Estructuras de Clases
 Aunque se haya asignado null a
otroVehiculo, unVehiculo todavía apunta al
objeto creado por el operador new.

 Cuando ya no haya ninguna variable que


haga referencia a un objeto, Java reclama
automáticamente la memoria utilizada por ese
objeto utilizando un agente llamado Garbage
Collector (GC).
Estructuras de Clases
MEMORIA
unVehiculo

Referencia hacia null

new
Vehiculo() otroVehiculo

Referencia hacia null


Estructuras de Clases

 Construcción de un objeto
 En todas las clases se encuentra definido
explícita o implícitamente un método
inicializador llamado constructor.

 El constructor de una clase se ejecuta


dinámicamente cada vez que se crea un
nuevo objeto de dicha clase.
Estructuras de Clases
 El constructor tiene exactamente el mismo
nombre de la clase que lo implementa, tampoco
devuelve ningún tipo, ni siquiera void. Su misión
es iniciar todo estado interno de un objeto (sus
atributos), haciendo que el objeto sea utilizable
inmediatamente.

Vehiculo(String unaMarca, String unModelo){

marca = unaMarca;
modelo = unModelo;

}
POO

 TALLER
Estructuras de Clases
 Para tener acceso a los atributos y métodos static
no se puede anteponer un identificador de
objeto, sino el nombre de la clase.

int temp = Conexion.tiempo_espera;

 Debe tenerse en cuenta que en la


implementación de un método estático tan sólo
puede hacerse referencia a variables estáticas.
Estructuras de Clases
 Clases abstractas.
 Sirven para definir un nivel de abstracción que
englobe objetos de distintos tipos y queremos
hacer uso del polimorfismo.

 Es decir, cuando se desarrolla una jerarquía de


clases en que algún comportamiento está
presente en todas ellas pero se materializa en
forma distinta para cada una
Estructuras de Clases

 Un método abstracto es un método declarado en


una clase pero no implementado (no se define
código fuente). Una clase abstracta es una clase
que tiene al menos un método abstracto
Estructuras de Clases
public abstract class Figura {
abstract double area();
}

public class Cuadrado extends Figura {


double lado;
double area() {
//código para calcular el área a partir del valor
//de su lado
}
}

public class Circulo extends Figura {


double radio;
double area() {
//código para calcular el área a partir del valor
//de su radio
}
}
Estructuras de Clases

 Interfaces
 El concepto de Interfaz lleva un paso más
adelante la idea de las clases abstractas.

 En Java una interfaz es una clase abstracta pura,


es decir, una clase donde todos los métodos son
abstractos (no se implementa ninguno).
Estructuras de Clases

 Si en el modelo anterior no deseáramos que la


clase Figura guarde los puntos X y Y de cada
objeto, podríamos convertirla en una interfaz.
Estructuras de Clases
 En Java se declaran con la palabra reservada
interface.

 A diferencia de cualquier clase en Java, una


interfaz si puede extender de más de una
interfaz.

 Para indicar que una clase implementa los


métodos de una interfaz se utiliza la palabra clave
implements.
Estructuras de Clases
public interface Figura {
abstract double area();
}

class Cuadrado implements Figura {


double lado;
double area() {
//código para calcular el área a partir del valor
//de su lado
}
}

class Circulo implements Figura {


double radio;
double area() {
//código para calcular el área a partir del valor
//de su radio
}
}
Estructuras de Clases
 Ciclo de herencia
 La herencia sirve para crear una clase que
extiende la funcionalidad de una clase existente
sin tener que reescribir el código asociado a ésta
última.
 En Java no existe la herencia múltiple (cuando
una subclase deriva de dos o más superclases).
 Las utilización de interfaces constituye una
alternativa con importantes ventajas prácticas.
Estructuras de Clases

 Clases extendidas
 Es una clase que ha derivado de una clase padre
(superclase), es decir, que ha heredado todos los
atributos y métodos de la superclase.

 En Java todas las clases extienden


implícitamente a la clase Object (raíz de todas
las clases).
Estructuras de Clases
 Para crear una clase extendida se utiliza la
palabra reservada extends.

public class SubClase extends SuperClase {


// Contenido de la clase
}

 La visibilidad que posean los atributos y métodos


de una superclase depende de los modificadores
de acceso que tenga cada uno de ellos.
Retorno de valores

 public int sumar(int a,int b){


int suma=a+b;
return suma;
}

Int suma=objeto.sumar(5,4);
System.out.println(“La suma es: ”+suma);
 public String saludar(String nombre){
String saludo=“Hola”+nombre;
return saludo;
}

String saludo=objeto.saludo(“Alejandro”);
Sysm.out.println(saludo);
Método Constructor
 Un constructor es un método especial de una
clase que se invoca siempre que se crea un
objeto de esa clase.

 Cuando se crea un objeto ocurren 3 cosas:


 Se asigna memoria para el objeto.

 se inicializan los atributos de ese objeto.

 Se invoca al constructor de la clase que puede ser uno


entre varios.
Persona p1=new Persona();
Método Constructor

 Nos facilita la inicialización de los atributos


de esa clase.
 Características de los constructores

 Tienen el mismo nombre de la clase.

 No devuelven ningún valor.

 Debe declararse como público.


Sobrecarga de Métodos

 La sobrecarga de métodos es la creación


de varios métodos con el mismo nombre
pero con diferente lista de tipos de
parámetros. Java utiliza el número y tipo de
parámetros para seleccionar cuál definición
de método ejecutar.
Modificadores de acceso.

 Los modificadores de acceso pueden ser:


private, protected o public.

 Determinan el campo de visibilidad o


accesibilidad que tendrán los atributos o métodos
para otras clases externas.
Estructuras de Clases

 Private.- Accesibles sólo desde la propia clase.

 Protected.- Accesibles desde la propia clase y


además de cualquier clase que la extienda.

 Public.- Accesibles desde cualquier otra clase.


Modificadores de acceso
Encapsulamiento

 Se encarga de ocultar tanto nuestros


atributos o métodos, para que solamente
puedan ser accedidos desde la misma clase.
 Se encapsula para que no cualquier persona
tome datos de mi clase y modificarlos a como
el quiera.
Métodos accesores
 Setters
Del Inglés Set, que significa establecer, pues nos sirve para asignar un
valor inicial a un atributo, pero de forma explícita, además el Setter
nunca retorna nada (Siempre es void), y solo nos permite dar acceso
público a ciertos atributos que deseemos el usuario pueda modificar

 Getters
Del Inglés Get, que significa obtener, pues nos sirve para obtener
(recuperar o acceder) el valor ya asignado a un atributo y utilizarlo para
cierto método
Atributos y métodos estáticos

 Los atributos y métodos estáticos también se


llaman atributos de clase y métodos de clase.

 Se declaran como static.


Ejercicio.

 Construir un programa que calcule el área y


el perímetro de un cuadrilátero dada la
longitud de sus dos lados por línea de
ordenes. Si es un cuadrado, solo se
proporcionara la longitud de uno de los lados
al constructor.
Herencia

 La herencia es una forma de reutilización de


software en la que se crea una nueva clase
al absorber los miembros de una ya
existente..
Herencia
Polimorfismo

 En una relacion de tipo herencia, un objeto


de la superclase puede almacenar un objeto
de cualquiera de sus clases.

 Polimorfismo=
Poli(muchos)+morfismo(formas)
Excepciones

 Cuando un programa en java viola las


restricciones semánticas del lenguaje se
(produce un error), la maquina virtual java
comunica este hecho al programa mediante
excepción.
Estructuras de Clases
 Redefinición de métodos heredados
 Una clase puede redefinir (volver a definir) cualquiera
de los métodos heredados de su superclase que no
sean final.

 El nuevo método sustituye al heredado para todos los


efectos en la clase que lo ha redefinido.

 Los métodos de clase o static no pueden ser


redefinidos en las clases derivadas
Estructuras de Clases
 La cláusula final
 Para una clase, final significa que la clase no puede
extenderse. Es, por tanto el punto final de la cadena
de clases derivadas.

 Para un método, final significa que no puede


redefinirse en una clase derivada.

 Para un dato miembro, final significa que su valor es


constante.
Estructuras Clase

 TALLER
Bibliotecas Básicas de Java
 Para todo programa que creemos va a ser
necesario crear por lo menos una clase, es
decir, un archivo con extensión .java, con el
siguiente contenido:
public class <Nombre_de_la_clase> {

 El archivo debe llamarse exactamente igual


que la clase declarada en su interior.
Bibliotecas Básicas de Java
 El nombre de la clase debe tener su primera
letra en mayúscula.

 Los comentarios de una sola línea se


comienzan a escribir con los caracteres “//”.
Los q son de múltiples líneas comienzan con
los caracteres “/*”, y terminan con los
caracteres “*/”.
Bibliotecas Básicas de Java
 Entre las dos llaves, podremos definir los
atributos y métodos de la misma. Ej:

public class <Nombre de la clase> {

<tipo> <nombre_atributo1>;
<tipo> <nombre_atributo2>;

public <tipo_retorno> <nombre_método1>() {


//bloque de sentencias;
}

}
Bibliotecas Básicas de Java
 Si queremos que una clase “se pueda
ejecutar”, ésta deberá tener declarado el
método main. Tal y como se muestra a
continuación:
public class <Nombre de la clase> {

<tipo> <nombre_atributo1>;
<tipo> <nombre_atributo2>;

public static void main( String args[]) {


//bloque de sentencias;
}

}
Bibliotecas Básicas de Java

 Primer programa “Hola mundo”.

public class HolaMundo{

//No necesitamos atributos para el ejemplo

public static void main( String args[]) {

System.out.println(“Hola mundo”);

}
}
Bibliotecas Básicas de Java
 Clase String
 Permite almacenar y trabajar de una manera muy
cómoda con cadenas de caracteres.

String cadena1 = new String(“Hola mundo”); // Ok

String cadena2 = “Hola mundo”; // Ok

cadena3 = new String(“Hola mundo”); // X

cadena4 = “Hola mundo”; // X


Bibliotecas Básicas de Java

 Principales métodos de la clase String


Retorna Nombre Función
char charAt(int i) Retorna el carácter que se encuentra en la
posición i.
boolean equals(String c) Retorna true si la cadena es igual a la cadena c.
int length() Retorna la longitud de la cadena de caracteres.
String substring(int i, int j) Retorna una subcadena, determinada a partir del
índice i y el índice j.
String toLowerCase Devuelve una cadena en minúsculas.
String toUpperCase Devuelve una cadena en mayúsculas.
Bibliotecas Básicas de Java
 Clase String
 Permite almacenar y trabajar de una manera muy
cómoda con cadenas de caracteres.

String cadena1 = new String(“Hola mundo”); // Ok

String cadena2 = “Hola mundo”; // Ok

cadena3 = new String(“Hola mundo”); // X

cadena4 = “Hola mundo”; // X


Bibliotecas Básicas de Java
 Lectura de datos desde la consola

 Ya hemos visto que podemos presentar cndenas


de texto por la consola mediante el objeto out de
la clase System.

 Para poder leer datos, necesitaremos también de


la clase System, pero ahora aprovecharemos su
objeto in.
Bibliotecas Básicas de Java

 Con la finalidad de manejar los datos que se


ingresan de una manera más dinamica (como
cadenas de caracteres), utilizaremos también
otras clases como BufferedReader e
InputStreamReader.

 Sobre la entrada de la consola montaremos un


input stream y sobre éste un buffer.
Bibliotecas Básicas de Java

BufferedReader

InputStreamReader
Búfer de
lectura Flujo de System.in
entrada
de datos Entrada de consola

BufferedReader = br;
br = new BufferedReader( new InputStreamReader( System.in ) );

String input = br.readLine(); //Ingresar cadena desde la consola


Bibliotecas Básicas de Java

 Arreglos (Arrays)
 Es un medio para almacenar objetos, siempre y
cuando sean de la misma clase (o tipo de dato).

 Declaración de un arreglo:
<tipo_de_dato>[] <nombre_arreglo>;

<nombre_arreglo> = new <tipo_de_dato>[<tamaño>];


Bibliotecas Básicas de Java
String[] nombres;

nombres = new String[4];

//Para guardar datos en el arreglo hay que acceder a cada uno


//por el índice

nombres[0] = new String(“Mateo”);


nombres[1] = new String(“Marcos”);
nombres[2] = new String(“Lucas”);
nombres[3] = new String(“Juan”);

//Para recorrerlo se usa un bucle

for (int i=0; i < nombres.length; i++){


System.out.println(nombres[i]);
}
Bibliotecas Básicas de Java
 Arreglos bidimensionales
 Permiten guardar datos en dos dimensiones (filas
y columnas) como si se tratase de una matriz:

String[][] nombres = new String[2][2];

nombres[0][0] = new String(“Mateo”);


nombres[0][1] = new String(“Marcos”);
nombres[1][0] = new String(“Lucas”);
nombres[1][1] = new String(“Juan”);

for (int i=0; i < nombres.length; i++){


for (int j=0; j < nombres[i].length; j++){
System.out.println(nombres[i][j]);
}
Bibliotecas Básicas de Java

 Arrays (Arreglos)
 Es un medio para almacenar objetos, siempre y
cuando sean de la misma clase (o tipo de dato).

 Declaración de un arreglo:
<tipo_de_dato>[] <nombre_arreglo>;

<nombre_arreglo> = new <tipo_de_dato>[<tamaño>];


Bibliotecas Básicas de Java

 Clase Vector
 Es una clase que me permite manejar un
conjunto de objetos. Se diferencian de los
arreglos porque:

 La capacitad de un vector, puede aumentar o


disminuir dinámicamente en tiempo de ejecución.
Bibliotecas Básicas de Java
 Principales métodos de la clase Vector
Retorna Nombre Función
boolean add(Element e) Inserta el elemento indicado al final del vector.
void Add(int i, E e) Inserta el elemento indicado en el índice i.
int capacity() Retorna la capacidad del vector.
void clear() Elimina todos los elementos que contiene el
vector.
boolean contains(Object o) Devuelve true csi el vector contiene el objeto o.
E get(int i) Devuelve el elemento que se encuentra en el
índice especificado.
E remove(int i) Elimina el objeto que se encuentre en el índice i.
int size() Retorna el tamaño del vector.
Bibliotecas Básicas de Java
Vector v;

v = new Vector(4);

v.add(new String(“Mateo”));
v.add(new String(“Marcos”));
v.add(new String(“Lucas”));
v.add(new String(“Juan”));

//Para recorrerlo se usa un bucle

for (int i=0; i < v.size(); i++){


System.out.println((String)v.get(i));
}
Bibliotecas Básicas de Java

 Clase Math
 Es una clase que posee métodos estáticos, es
decir, que no se necesita crear un objeto de dicha
clase para poder utilizar tales métodos.

 Básicamente, nos va a servir para realizar


funciones matemáticas sobre los datos.
Bibliotecas Básicas de Java
 Principales métodos de la clase Math

Retorna Nombre Función


double abs(double d) Retorna el valor absoluto de un número.
double ceil(double d) Retorna la función techo de un número.
double floor(double d) Retorna la función piso de un número.
double log10(double d) Retorna el logaritmo en base 10 de un
número.
double pow(double b, double e) Retorna el resultado de elevar a b a la
potencia e..
double sqrt(double d) Retorna la raíz cuadrada de un número.
double round(double d) Redondea un número.
Blibliotecas Basicas Java

 TALLER
Manejo de Excepciones

 Una excepción es un evento que corta el flujo


normal de la ejecución del programa.

 Cuando ocurre una excepción, Java crea un


objeto con información acerca de la misma y
se lo envía al método invocador de la rutina.
Manejo de Excepciones
 La rutina receptora de la excepción es
responsable de reaccionar a tal evento
inesperado.

 Si dicha rutina no posee un manejador de


excepciones, la excepción seguirá viajando
hasta el exterior, pudiendo detener la
ejecución del programa en su totalidad.
Manejo de Excepciones
 Para definir un bloque de código que
deseemos monitorear, se lo debe encerrar
con la instrucción try.

 Para definir un manejador de excepciones a


dicho bloque, se debe especificar por lo
menos un bloque catch para cada bloque
try.
Manejo de Excepciones
try {

//bloque de codigo a monitorear

} catch (Exception e) {

//bloque para manejar cualquier error interno del sistema.

 El bloque catch recibe como parámetro un


objeto de tipo Exception. Exception es una
clase que engloba todos los errores
posibles.
Manejo de Excepciones
 Pero así mismo existen clases que nos vana
servir para representar errores más
específicos:

 IOException
 ClassNotFoundException
 SQLException
 ArrayIndexOutOfBoundsException
Manejo de Excepciones

 Un bloque try puede tener más de un


manejador de excepciones.

try {
//bloque de codigo a monitorear
} catch (IOException ioe) {
//bloque para manejar cualquier error de in/out del sistema.
} catch (SQLException ioe) {
//bloque para manejar cualquier error en la llamada SQL.
} catch (Exception ioe) {
//bloque para manejar cualquier error interno del sistema.
}
Manejo de Excepciones
 Si no deseamos manejar los errores, sino
que delegaremos a la rutina que llame a
nuestro método el manejo de excepciones,
debemos definir nuestro método avisando
que podría lanzar una excepción.
public static void doio (InputStream in, OutputStream out)
throws IOException {
//en caso de más de una excepción throws exp1, exp2
int c;
while (( c=in.read()) >=0 ) {
c= Character.toLowerCase( (char) c);
out.write( c );
}
}
Manejo de Excepciones

public static void doio (InputStream in, OutputStream out) throws


Throwable {
int c;
try {
while (( c=in.read()) >=0 ) {
c= Character.toLowerCase( (char) c);
out.write( c );
}
} catch ( Throwable t ) {
throw t;
}
}
Excepciones

 TALLER
Threads

 Los hilos (threads) permiten ejecutar varias


sentencias o flujos de ejecución
simultáneamente.

 A este tipo de procesos donde se comparte


los recursos se les llama procesos ligeros
(lightweight process)
Threads
 Existen dos maneras de implementar hilos en
nuestra aplicación.
 Extendiendo a la clase Thread.
public class AppThread extends Thread {
public AppThread(String s) {
super(s);
}
public void run() {
for (int i = 0; i < 10 ; i++)
System.out.println(i + " " + this.getName());
System.out.println("Termina thread " + this.getName());
}
public static void main (String [] args) {
new AppThread(“Primer thread").start();
new AppThread(“Segundo thread").start();
System.out.println("Termina método main");
}
}
Threads

 Cuando ejecutemos la aplicación, el método main se


encargará de crear dos objetos hilados, y de iniciar
(start()) cada uno.

 Cada una de las instancias, se encargará de imprimir


su nombre 10 veces, pero ya que son hilos, lo harán
simultáneamente, aprovechando al máximo los
tiempos de reposo del procesador.
Threads
 Si la App no tuviera hilos:
Imprime 10 veces:
Primer thread

App

Imprime 10 veces:
Segundo thread

Imprime:
Termina método
main
Threads
 Con hilos:
App
Lanza los hilos e imprime:
Termina método main

Imprime 10 veces:
Primer thread

Imprime 10 veces:
Segundo thread
Threads
 Implementando la interfaz Runnable.

public class AppThread implements Runnable {


public void run() {
for (int i = 0; i < 5 ; i++)
System.out.println(i + " " +
Thread.currentThread().getName());
System.out.println("Termina thread " +
Thread.currentThread().getName());
}
public static void main (String [] args) {
new Thread ( new AppThread(), “Primero thread").start();
new Thread ( new AppThread(), “Segundo thread").start();
System.out.println("Termina thread main");
}
}
Threads

 Como nuestra clase está implementando la interfaz


Runnable, debemos definir el método run() dentro de
nuestra clase.

 Luego, cuando creamos los dos hilos y los iniciamos,


les enviamos como parámetro una instancia de
nuestra clase, permitiendo que cada uno ejecute la
lógica que pusimos en el método run().
Threads
 Ciclo de vida de un thread.
running

yield

start

New Thread Runnable No Runnable

Dead
Threads

 TALLER

Вам также может понравиться