Clase x

23
Programación de Sistemas Lic. José Angel Quintanilla Rosales Un programa bien escrito es su propio cielo; un programa mal escrito es su propio infierno. [Geoffrey James, El Tao de la Programación]

Transcript of Clase x

Page 1: Clase x

Programación de Sistemas

Lic. José Angel Quintanilla Rosales

Un programa bien escrito es su propio cielo; un programa mal escrito es su

propio infierno. [Geoffrey James, El Tao de la Programación]

Page 2: Clase x

Excepciones

Sirven para informar que se ha producido una situaciónextraña y que debe tratarse

Se rompe la ejecución y se salta a un manejador de excepciones

Mejor que comprobar valoresde retorno

Page 3: Clase x

Excepciones

try {

cuerpo1

}

catch (excepción) {

cuerpo2

}

finally {

cuerpo3

}

throw excepción

public class UsaExcepciones {

public void metodo() throws excepción {

...

}

}

Page 4: Clase x

Excepciones

cuerpo1 está monitorizado paraexcepciones

Si se produjera una, se compararíala excepción contra la descrita en el catch

Si es asignable, se ejecuta cuerpo2

Si no se gestiona, se siguebuscando un gestor para la excepción

Page 5: Clase x

Excepciones

Independientemente de si ha habido o no excepciones, siemprese ejecuta cuerpo4

Las excepciones son clases, comoel resto, sólo que Java las tratadiferente

Se crean con new y se lanzan con throw

Page 6: Clase x

Excepciones

Las excepciones heredan de la clase Throwable

Sólo instancias de clases quehereden de esa superclase puedenaparecer en cláusulasthrow, throws o catch

throws indica que el método no trata la excepción y que la delegahacia arriba

Page 7: Clase x

Excepciones Error

Excepciones muy inusuales y queno se suelen tratar

VirtualMachineError

OutOfMemoryError

StackOverflowError

LinkageError

No es obligatorio capturarlas

Page 8: Clase x

Excepciones Exception

Excepciones que debentratarse

IOException

RemoteException

NotSerializableException

Es obligatorio capturarlas

Error de compilación

Page 9: Clase x

Excepciones RuntimeException

Excepciones que derivan de RuntimeException

ArrayIndexOutOfBoundsExcepion

NullPointerException

No es obligatorio capturarlas

Pero es recomendable

No hay error de compilación

Page 10: Clase x

Excepciones

Podemos crear nuestraspropias excepciones, creandoclases que heredan (extends) de Throwable

O alguna subclase de ésta

Page 11: Clase x

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ás a menosespecificidad

Page 12: Clase x

Excepciones

public void metodo() {

try {

.....

}

catch (FileNotFoundException ex) {...}

catch (IOException ex) {...}

catch (Exception ex) {...}

catch (Throwable ex) {...}

finally {....}

}

Page 13: Clase x

Excepciones

Podemos relanzar las excepcionesdentro de los bloque catch

El método termina y la excepciónaparece en el código llamante

try {

.....

}

catch (IOException ex) {throw ex;}

finally {...}

Excepciones

Page 14: Clase x

Abstracción

Un método es abstractocuando no se escribe el cuerpodel mismo

Se define su firma sin darimplementación

public abstract class Padre {

public abstract int metodo(int a) ;

}

Page 15: Clase x

Abstracción

Una clase es abstracta cuandotiene uno o más métodosabstractos

No se puede instanciar

Puede ser abstracta sin tenermétodos abstractos

Puede haber métodos abstractosmezclados con métodos no abstractos

Page 16: Clase x

Abstracción & Polimorfismo

public abstract class Hablar {

public abstract void diHola() ;

public void saluda(String quien) {

this.diHola();

System.out.println(quien);

}

}

Page 17: Clase x

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

Page 18: Clase x

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

Page 19: Clase x

Componentes

Todos y cada uno de los elementosde SWING

Por ejemplo:

JFrame

JLabel

JButton

etc.

Page 20: Clase x

Contenedores

Aquellos componentes que puedenalbergar otros componentes en suinterior

Los contenedores están formadospor uno o más componentes

JFrame

JDialog

JPanel

Page 21: Clase x

JFrame

La tradicional ventana

Tiene un título (setText())

Y luego componentes internos

frame.getContentPane().add(<compo>)

Pero más fácil modelar con JDeveloper

Page 22: Clase x

JLabel

Etiqueta no modificable

Tiene un contenido

setText() / getText()

No tiene un comportamiento destacable

Page 23: Clase x

JButton

Presionar para realizar unaacción

Tiene un título

setText() / getText()

Tiene un comportamiento

actionPerformed()