1. “Las personas nos influyen,
las voces nos conmueven,
los libros nos convencen,
los hechos nos entusiasman”
Programación
Orientada a Objetos
Carlos Luis Sánchez Bocanegra
@redeskako
2ª parte
2. Índice
Programación Orientada a Objetos
0.1. Control de Excepciones
0.2. Flujos de Entrada/Salida
0.3. Interfaz gráficas en JAVA
3. Control de Excepciones
Una excepción (Exception) en Java es un
error, anomalía o problema en la ejecución
de un método.
Se lanza un objeto de esta clase, que
puede ser tratado por el propio método
que ha sucedido,
También puede propagar hacia el método
llamador, y así sucesivamente hasta llegar
a la JVM
4. Control de Excepciones
Exception: superclase de todas las excepciones
dispone:
• Constructores
• 'nombre'Exception()
• 'nombre'Exception (String mensaje)
• String getMessage()
• void printStackTrace()
5. Control de Excepciones
Exception deriva en:
• ClassNotFoundException
• IllegalAccessException
• NoSuchMethodException
• RuntimeException (no obligado cumplimiento):
• ClassCastException
• NullPointerException
•IndexOutOfBoundsException
•IllegalArgumentException,...
6. Control de Excepciones
Excepciones de cumplimiento obligado: Exception
debemos atender las posibles excepciones de dos
formas:
• Declarando que el método puede propagarlas.
• Usando 'throws' para lanzarlas.
•
public met (Object obj) throws
ClassCastException {
....
}
7. Control de Excepciones
Excepciones de cumplimiento obligado: Exception
debemos atender las posibles excepciones de dos
formas:
• Declarando que el método puede propagarlas.
• Usando 'throws' para lanzarlas.
•
public met (Object obj) throws
ClassCastException {
....
}
8. Control de Excepciones
Definir bloques de captura de errores:
try {
// zona crítica
...
} catch ('Nombre'Exception errorValor) {
// Captura Error y tratamiento
...
} finally {
// ejecución asegurada
}
9. Control de Excepciones
catch se puede:
• Escribir código de recuperación
• Ignorar la excepción
• Verificar log
• Relanzar la excepción
• Envolver una nueva excepción
...
10. Control de Excepciones
Una excepción puede ser lanzada explícitamente por el
programador mediante:
• throw new MiErrorException();
Y también puede crear sus Excepciones mediante:
• public class MiErrorException extends
RuntimeException{
•...
11. Índice
Programación Orientada a Objetos
0.1. Control de Excepciones
0.2. Flujos de Entrada/Salida
0.3. Interfaz gráfica en JAVA
12. Flujos de Entrada/Salida
Un fichero en Java es un flujo de streams de
comunicación. En realidad podriamos pensar en que
conectamos un 'embudo' de envío de bytes a una bolsa
y ella organiza la grabación a traves de sus clases.
Nuestro objetivo es formar ese canuto de envío de bytes.
El paquete que contiene todas estas clases es
java.io.*
13. Flujos de Entrada/Salida
Un fichero en Java es un flujo de streams de
comunicación. En realidad podriamos pensar en que
conectamos un 'embudo' de envío de bytes a una bolsa
y ella organiza la grabación a traves de sus clases.
Nuestro objetivo es formar ese canuto de envío de bytes.
El paquete que contiene todas estas clases es
java.io.*
14. Flujos de Entrada/Salida
Existen dos grandes tipos de flujos:
• Flujos binarios, orientados a bytes (ByteStream):
• XXXInputStream
• XXXOutputStream
15. Flujos de Entrada/Salida
Existen dos grandes tipos de flujos:
• Flujos de texto, orientados a caracteres (de
forma transparente acaba en bytes -
CharacterStream:
• XXXReader
• XXXWriter
16. Flujos de Entrada/Salida
IOException Gestiona los erroresrelacionadas con la
E/S (de obligado cumplimiento).
Da soporte a métodos de clases XXXInputStream:
int read(), tipo readTipo(),...
Como método general de las clases XXXOutputStream:
void write(), void writeTipo(Tipo t),...
Y otros comunes: void close(), void flush(),...
17. Flujos de Entrada/Salida
La idea general es instanciar un objeto de una clase
Stream mediante un sistema de tuberías (o embudos),
de tal manera que cada filtro más interno está más
especializado en el tipo de información que va a viajar
por el canal:
DataInputStream fio = new DataInputStream(new (FileInputStream(“file.bin”));
Para leer un fichero de texto:
FileReader fr = new FileReader(“fichero.txt”);
Para crear y escribir en un fichero de texto, puede
usarse un objeto PrintWriter, envuelto en un
FileOutputStream o en un FileWriter:
PrintWriter pw = new PrintWriter (new FileWriter(“fichero.txt”));
18. Índice
Programación Orientada a Objetos
0.1. Control de Excepciones
0.2. Flujos de Entrada/Salida
0.3. Interfaz gráfica en JAVA
19. Interfaz gráfica en JAVA
java.awt.*: es el paquete contiene las clases e interfaces
básicas para la construcción de una interfaz gráfica.
java.awt.event.*: gestiona los eventos
Java.swing.*: apoya y amplia java.awt.*
20. Interfaz gráfica en JAVA
java.awt.*: es el paquete contiene las clases e interfaces
básicas para la construcción de una interfaz gráfica.
java.awt.event.*: gestiona los eventos
Java.swing.*: apoya y amplia java.awt.*
21. Interfaz gráfica en JAVA
Los elementos a más alto nivel son contenedores y
componentes
Los contenedores AWT son los almacenes de los
componentes, tales como un Applet, Frame, Panel
o Dialog
Los componentes se corresponden con los elementos
que se dibujan en la interfaz, y qu pueden recibir
eventos: botones, campos de texto, etc.
22. Interfaz gráfica en JAVA
SWING
Tiene contenedores que hereda de awt:
- Los contenedores superiores son JApplet, JFrame,
Jdialog,...
- Los contenedores intermedios son JPanel,
JScrollPane, JSplitPane, JTabbedPane,
JToolbar, …
24. Interfaz gráfica en JAVA
Los Layout permiten detemrinar la distribución de los
objetos en los paneles, los más importantes son:
• FlowLayout (por defecto en JFrame), donde los
componentes van de izquierda a derecha y de arriba
a abajo
• BorderLayout (por defecto en JPanel), que divide
al contenedor en las zonas norte, sur, este, oeste y
centro
• GridLayout (filas y columnas equitativas)
25. Interfaz gráfica en JAVA
• JScrollPane es un contenedor que permite hacer
scroll a su componente (o contenedor incluido):
• JScrollPane panelScroll = new JscrollPane(“Marco”);
• JsplitPane permite dividir una ventana en dos
partes, horizontal o verticalmente
• JTabbedPane permite simular fichas o solapas
sobre una ventana
• JToolBar es un contenedor intermedio que simula
las barras de herramientas
26. Interfaz gráfica en JAVA
Algunos métodos de los JComponent:
• Color getBackground ()
• void setBackground (Color)
• Toolkit getToolkit ()
• void setEnabe (boolean)
• void setVisible (boolean)
• void setBorder (new ClaseBorde)
• void setToolTips (String)
32. Interfaz gráfica en JAVA
JFrame + JPanel + button: SWING/GUI in Java
http://www.youtube.com/watch?v=-sOqzUs1Hqk
GridBag Layouts JAVA SWING
http://www.youtube.com/watch?v=FB_wJpIdA8k
MENU BAR TUTORIAL,help Swing, JMenuBar, Jmenu
http://www.youtube.com/watch?v=dwLkDGm5EBc
33. Interfaz gráfica en JAVA
EVENTOS EN JAVA
Cuando un evento se dispara sobre un componente,
éste es recogido por objetos listeners, que realizan la
acción apropiada
Cada listener debe pertenecer a una clase que
implemente cierta interface, dependiendo del evento de
que se trate
34. Interfaz gráfica en JAVA
EVENTOS EN JAVA
Interfaces:
ActionListener → (botones y menús)
FocusListener → (foco de controles)
ItemListener → (casillas y listas)
KeyListener → (teclado)
MouseListener → (ratón)
WindowListener → (ventanas)
35. Interfaz gráfica en JAVA
Applets
Aplicaciones para ser ejecutadas en una página web,
invocados y controlados por el navegador
No atiende al método
Se dispone de una etiqueta HTML:
<applet code=“NombreClase.class” width=“200” heigth=“200”>
</applet>
36. Interfaz gráfica en JAVA
Applets
Su ciclo de vida se controla mediante:
• Init () → (Inicialización, donde se dibuja la interfaz)
• start() → (ejecuta el código del applet)
• stop() →(se ejecuta ante la ocultación del applet)
• Destroy() →(cuando el applet se descarga)
37. Interfaz gráfica en JAVA
Applets
import java.awt.*;
import java.applet.*;
public class MiApplet extends Applet {
public void init(){
Label etiqueta = new Label(“Hola”);
getContentPane().add(etiqueta,
BorderLayout.CENTER);
}
}
38. Programación Orientada a Objetos
Carlos Luis Sánchez Bocanegra
carlosl.sanchez@gmail.com
@redeskako