Pucp Java Puc 2 PDF
Pucp Java Puc 2 PDF
Pucp Java Puc 2 PDF
INSTITUTO DE INFORMATICA
}
}
Las clases internas anónimas son aquellas clases que no tienen un nombre. No
se pueden instanciar una clase anónima y son definidas en el método de la clase
externa.
Este tipo de clases internas son utilizadas mayormente en clases que manejen
eventos, como son aquellas que pertenecen a los paquetes java.awt o
javax.swing. Es una manera de construir clases en base a interfaces, sin utilizar
la palabra reservada implements.
new nombreClaseolnterface() {
//definición de la clase interna
}
62
JAVA Inicial INFOPUC
INSTITUTO DE INFORMATICA
donde :
• Si nombreClaseoInterface es una clase C, entonces la clase anónima
extiende de C.
• Si nombreClaseoInterface es una interface i, entonces la clase anónima
implementa I, extendiendo de la clase O bject.
Características adicionales:
• Una clase puede ser una subclase de otra clase explícita o puede
implementar una interface pero no se permite que sea una subclase e
implemente una interface al mismo tiempo.
• Si una clase anónima extiende de una clase existente, tiene la opción de
agregar y re-escribir métodos de la clase existente o clase padre.
Considerar que toda clase interna anónima que implemente una interface,
extiende de la clase Object por defecto.
Las variables locales pueden ser ahora designadas como final. Los objetos de
clases internas anónimas pueden pasar con seguridad una copia de estos,
sabiendo que no podrán ser cambiados. Son asignados una sola vez si no han
sido seteados cuando han sido declarados.
El campo “cant” de la clase externa puede ser referida sin la calificación “X.this”
si no hay ambigüedad, esto es si la clase Y no tiene un campo “cant”.
Los objetos internos cuando son instanciados en una clase fuera de su clase
externa, debe calificar el tipo de puntero con el nombre de la clase externa y
debe colocar el calificador “new” con la referencia del objeto externo:
paquete.ClaseExterna
paquete.ClaseExterna$Claselnterna
Definiciones
Las interfaces son objetos especiales que no heredan de la clase Object. Una
interface es parecida a una clase abstracta pero tiene la característica que sus
métodos no son implementados, sólo declarados.
interface Id Interface {
TipoDeRetorno IdMetodol (ListaDeParametrosI);
TipoDeRetorno ldMetodo2 (ListaDeParametros2);
64
J A V A Inicial INFOPUC
INSTITUTO D£ INFORMÁTICA
visto que una clase sólo puede extender de una y sólo una clase, de la que
hereda sus propiedades y comportamiento.
Si por algún motivo se requiere expandir el diseño para tratar con objetos de
tipol y objetos de tipo2, podrá apreciarse que la clasificación establecida no se
adecuaría a este nuevo esquema: si bien no se puede heredar de ambas clases
pero pueden contener métodos comunes.
Para que una clase pueda implementar una interface, sólo requiere implementar
cada uno de los métodos declarados en la interface.
Sintaxis:
Como una clase puede implementar más de una interface, a través de este
mecanismo se puede especificarse una especie de herencia múltiple, pero sólo a
nivel de descripciones de métodos y no de implementaciones como en otros
lenguajes.
65
J A V A Inicial ►INFOPUC
INSTITUTO D£ INFORMÁTICA
class Oidor {
String sonidoEscuchado;
void escuchar (Sonoro objetoSonoro) { // acepta un objeto de alguna
sonidoEscuchado = objetoSonoro.sonido(); // clase que implemente Sonoro
}
}
de sus claves, una List de sus valores, o una List de sus parejas clave-valor.
Los Mapas, al igual que los arrays, se pueden expandir fácilmente en múltiples
dimensiones sin la incorporación de nuevos conceptos: simplemente se monta
un Map cuyos valores son Mapas, que a su vez pueden estar constituidos por
Mapas, etc.
Los tipos de datos primitivos tienen clases envolventes, que nos sirve para
manejar objetos que representen estos tipos de datos.
Es posible usar las clases envolventes tales como Integer o Double, para colocar
valores primitivos en una colección.
JA V A Inicial INFOPUC
INSTITUTO DE INFORMATICA
68
JAVA Inicial -1NFOPUC
INSTITUTO DE INFORMATICA
Capítulo 5
Manejo de Excepciones
1. Manejando errores
2. Jerarquía de clases
3. Clase Throwable
4. Clase Exceptíon
5. Clase Error
6. Capturando excepciones
7. throw: lanzando excepciones
8. throws: lanzando excepciones n capturadas
9. finally: independizando código de las capturas
10. Excepciones en métodos sobrescritos
69
J A V A Inicial INFOPUC
INSTITUTO D£ INFORMÁTICA
70
J A V A Inicial INFOPUC
INSTITUTO DE INFORMATICA
1. Manejando errores
Definiciones.
Métodos de nivel “bajo” detectan los errores mientras los de “alto” nivel (quienes
invocan a los anteriores) deberán manejar estos errores y excepciones, que
fueron lanzadas como objetos.
Una excepción es una condición anormal que surge en una secuencia de código
durante su ejecución.
2. Jerarquía de clases
La jerarquía de clases es la
siguiente:
71
J A V A Inicial INFOPUC
INSTITUTO DE INFORMATICA
3. Clase Throwable
72
JAVA Inicial ►
INFOPUC
INSTITUTO D£ INFORMÁTICA
de sus subclases) son lanzadas por el JVM o por el indicador throw. Sólo esta
clase puede o una de sus subclases puede ser el tipo de argumento en una
sección catch.
Instancias de dos subclases, Error y Exception, son usadas para indicar que
situaciones excepcionales han ocurrido. Típicamente, estas instancias son
recientemente creadas en el contexto de la situación excepcional tal que incluya
información relevante.
Por convención, la clase Throwable y sus subclases tiene dos constructores: uno
de ellos no tiene argumento, el otro constructor tiene de argumento un String que
puede ser usado para producir un mensaje de error.
4. Clase Exception
La clase Exception y sus subclases son una forma de lanzadores que indican
condiciones en que una aplicación puede fallar.
Un bloque finally opcional puede ser asociado con el bloque try, en el cual se
ejecutará el código independiente del error o excepción.
5. Clase Error
La clase Error es una subclase de Throwable que indica serios problemas que
una aplicación podría colocar en un bloque try...catch.
6. Capturando excepciones
Si bien el sistema (el intérprete Java) es muy eficiente y puede capturar diversas
excepciones y mostrar el detalle, por lo general lo que se requiere es seguir
manteniendo el control del flujo de un programa.
“try' se utiliza para especificar el bloque que debe protegerse frente a todas las
excepciones. Inmediatamente al bloque try se incluye la cláusula “catch” para
especificar el tipo de excepción que se desea capturar.
El ámbito de la cláusula catch está restringido a las sentencias del bloque try
precedente.
74
J A V A Inicial INFOPUC
INSTITUTO DE iNFOftMATICA
p o n t if ic ia UNIVERSIDAD CATÓLICA d e l p e rú
Ejemplo:
try {
/* bloque de código 7
}
catch (ClaseDeExcepcionl e) {
/*manejador de excepciones
para ClaseDeExcepcionl */
}
catch (ClaseDeExcepcion2 e) {
/*manejador de excepciones
para ClaseDeExcepcion2 7
throw (e);
}
finally {
/*manejador de excepciones
por omisión */
}
Los bloques try se anidan de forma similar a los ámbitos de las variables. En un
bloque try puede especificarse una llamada a un método y en este último puede
colocarse la sentencia try para proteger otro bloque. Así sucesivamente.
p o n t if ic ia UNIVERSIDAD CATÓLICA d e l p e rú
Sintaxis:
throw objetoThrowable;
Sintaxis:
tipo método (argumentos) throws NstaDeExcepciones { . . . }
Cada excepción es manejada por el bloque try ... catch, según sea la clase
Exception o una subclase de ella.
La cláusula finally, usado para limpieza de código, puede ser asociado con un
bloque try ... catch y siempre será ejecutado.
76
JAVA Inicial ►INFOPUC
INSTITUTO DE INFORMÁTICA
Este bloque se ejecutará aunque ninguna de las cláusulas catch haya logrado
atrapar una excepción y antes que se ejecute la siguiente sentencia al bloque
try-catch.
Aunque la cláusula finally es opcional, será muy útil en caso de haber asignado
muchos recursos en un método donde pueden ocurrir excepciones; el bloque
finally podrá servir para liberar los mismos.
77
J A V A Inicial INFOPUC
INSTITUTO DE INFORMÁTICA
}
Las clases Aceptadol, Aceptado2 y Aceptado3 tiene definido correctamente el
método “metodolni”, pues este método sobre escrito no puede lanzar cualquier
excepción que no sea subclase de lOException. En la clase Aceptado3, vemos
que el “metodolni” lanza la excepción EOFException, que es subclase de
lOException. Pero en la clase NoAceptadol este método lanza la excepción
MlegalAccessException la cual es subclase de Exception pero no de lOException,
este tipo de declaraciones no es permitido. La clase NoAceptado2 sufre el
mismo error.
78
JAVA Inicial INFOPUC
INSTITUTO D£ INFORMÁTICA
Capítulo 6
Acceso a Bases de Datos
1. El API JDBC
2. El bridge jdbc-odbc
3. Otras categorías de drivers
4. Estructura de una aplicación JDBC
5. DriverManager
6. Conectándose a una base de datos
7. Ejecución de consultas
8. Conversiones de tipos de datos
9. Otras características de JDBC
10. PreparedStatement
11. CallableStatement
79
J A V A Inicial INFOPUC
INSTITUTO DE INFORMÁTICA
1. El API JDBC
81
J A V A Inicial INFOPUC
INSTITUTO DE INFORMATICA
2. El bridge JDBC-ODBC
Este tipo de driver usa el driver ODBC específico para la base de datos que se
desea acceder.
Driver categoría 2
Este tipo de driver utiliza Java para hacer llamadas al API de acceso (protocolo)
del DBMS que debe estar disponible en el cliente. Este último es quien provee la
conectividad y acceso a la base de datos.
Driver categoría 3
Este tipo de driver utiliza los protocolos de red que vienen con el JDK (Kit de
desarrollo de Java) para conectarse a un servidor. En este último se traducen los
requerimientos a transacciones específicas del DBMS.
82
JAVA Inicial ►
INFOPUC
INSTITUTO DE INFORMATICA
Luego de conectarse con la base de datos puede crearse una instancia de clase
Statement. Este objeto es el utilizado para representar la sentencia SQL, la
misma que puede ser de tres tipos:
Statement
Sentencia SQL estática, definida en el programa y sin variables host
PreparedStatement
Sentencia SQL dinámica, que contiene variables host y/o partes variables a
definirse en tiempo de ejecución.
CallableStatement
Llamada a un procedimiento almacenado en el DBMS.
Para procesar el conjunto resultado se utilizan los métodos del objeto ResultSet.
p o n t if ic ia UNIVERSIDAD CATÓLICA d e l p e rú
5. DriverManager
Esta clase primero trata de cargar un driver por omisión, que es el referido en la
propiedad del sistema jdbc.drivers.
Ejemplo:
Class.forName(“com.mysql.jdbc. Driver”);
Se utiliza el método:
DriverManager.getConnection(String url, String user, String passw);
protocolo:subprotocolo://servidor:puerto/subnombre
por ejemplo :
jdbc:mysql://localhost:3306/dbname
Cuando una aplicación se conecta a una base de datos a través de JDBC crea
un objeto tipo (que implementa la interface) Connection:
Connection conn = DriverManager.getConnection(...);
84
X
J A V A Inicial IN F O P U C
BsSTJTUTG DE INFORMATICA
7. Ejecución de consultas
Las dos clases principales para la ejecución de consultas en el API JDBC son
Statement y ResultSet.
85
J A V A Inicial | íf i| N J ÍJ f
IN F O P U C
INSTITUTO DE INFORMÁTICA
10. PreparedStatement
El objeto PreparedStatement provee métodos del tipo setXXX para lograr pasar
parámetros a sentencias SQL.
Una vez que un parámetro es seteado, puede ser utilizado para múltiples
ejecuciones de esta sentencia (hasta que una llamada del tipo setXXX sea
hecha subsecuentemente a ese parámetro o se realice una llamada al método
clearParametersO).
86
JAVA Inicial INFOPUC
INSTITUTO DE INFORMATICA
11. CallableStatement
Los parámetros de salida deben tener registrados el tipo de datos SQL al que se
refieren por medio del método registerOutParameter().
87