2. Interfaces
Indican que lo que puede hacer una clase
y no el cómo lo hace.
Una clase puede implementar una o más
interfaces.
Las Interfaces obligan a implementar los
métodos a la clase que le haga referencia.
3. Interfaces Existentes
Java provee una serie de Interfaces que
permiten implementar un servicio
particular
Por ejemplo para el método sort() de la
clase Arrays, se requiere que la clase que
está en el interior implemente a la
interface Comparable.
[java.lang.Comparable]
5. Ejemplo de uso de la Interface
class Employee implements Comparable
{
public int compareTo(Object other){
/*
-1 si this es menor que other
0 si this es igual que other
1 si this es mayor que other
*/
}
}
6. Ejercicio
Implemente la clase Comparable para la
clase Empleado o Automovil (Elija la que
estime conveniente)
Luego utilice Arrays en un arreglo de las
clases anteriores y ordénelo con el
método sort() de Arrays
7. clone()
clone() es método de la interface
Cloneable
clone() está implementado en Object
Se utiliza para copiar un objeto
Elimina el problema de la asignación de
un objeto a otro. (Apuntan al mismo
objeto)
8. Clase Interna
Es definida dentro de otra clase
Razones para crear una clase dentro de otra :
1. Un objeto de una clase interna puede acceder a la
implementación de un objeto que le ha creado,
incluyendo los datos privados.
2. Las clases internas quedan escondidas de las otras
clases del mismo paquete
3. Las clases internas son muy convenientes cuando
se escriben programas orientados al evento.
9. Ejemplo - Clase Interna
class CuentaBancaria{
public CuentaBancaria(double initialBalance){ . . .}
public void inicio(double rate) { . . . }
private double saldo;
private class InteresAgregado implements ActionListener{
// Clase Interna
}
}
10. Sintaxis de Clases Internas
Referencia a objetos de la clase externa
Ejemplo:
CuentaBancaria.this.saldo
//CuentaBancaria corresponde a la clase
externa
11. Clases Locales
Las clases también se pueden declarar dentro
de un método en particular.
Son de alta utilidad para esconder lógica al
interior de una clase
Tienen acceso a las variables locales del
método
Sólo viven en el bloque que han sido definidas.
12. Ejemplo – Clase Local
public void inicio(final double rate)
{
class InteresAgregado implements ActionListener
{
public void actionPerformed(Action event)
{
double interes = saldo * rate / 100;
saldo += interes;
NumberFormat formatter=NumberFormat.getCurrencyInstance();
System.out.println(“balance = “ + formatter.format(saldo));
}
}
ActionListener adder = new InteresAgregado();
Timer t = new Timer(1000, adder);
t.start();
}
13. Clases Anónimas
Corresponden a clases sin nombre
public void inicio(final double rate)
{
ActionListener adder=new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
double interes = saldo * rate / 100;
saldo += interes;
NumberFormat formatter= NumberFormat.getCurrencyIntance();
System.out.prinln(“Balance = ” + formatter.format(saldo));
}
};
Timer t=new Timer(1000,adder);
t.start();
}
16. Paquetes Estándares de J2SE
java.applet
Este paquete contiene clases diseñadas
para usar con applets. Hay la clase
Applet y tres interfaces: AppletContext,
AppletStub y AudioClip.
17. Paquetes Estándares de J2SE
java.awt
El paquete Abstract Windowing Toolkit (awt)
contiene clases para generar widgets y
componentes GUI (Interfaz Gráfico de Usuario),
de manipulación de imágenes, impresión,
fuentes de caracteres, cursores, etc.. Incluye las
clases Button, Checkbox, Choice,
Component, Graphics, Menu, Panel,
TextArea, TextField...
18. Paquetes Estándares de J2SE
java.io
El paquete de entrada/salida contiene las clases
de acceso a ficheros, de filtrado de información,
serialización de objetos, etc.: FileInputStream,
FileOutputStream, FileReader, FileWriter.
También contiene los interfaces que facilitan la
utilización de las clases: DataInput,
DataOutput, Externalizable, FileFilter,
FilenameFilter, ObjectInput, ObjectOutput,
Serializable...
19. Paquetes Estándares de J2SE
java.lang
Este paquete incluye las clases del
lenguaje Java propiamente dicho: Object,
Thread, Exception, System, Integer,
Float, Math, String, Package, Process,
Runtime, etc.
20. Paquetes Estándares de J2SE
java.net
Este paquete da soporte a las conexiones
del protocolo TCP/IP y, además, incluye
las clases Socket, URL y
URLConnection.
21. Paquetes Estándares de J2SE
java.sql
Este paquete incluye todas las interfaces que
dan acceso a Bases de Datos a través de
JDBC, Java DataBase Connectivity, como son:
Array, Blob, Connection, Driver, Ref,
ResultSet, SQLData, SQLInput, SQLOutput,
Statement, Struct; y algunas clases
específicas: Date, DriveManager, Time,
Types...
22. Paquetes Estándares de J2SE
java.util
Este paquete es una miscelánea de clases útiles para muchas
cosas en programación: estructuras de datos, fechas, horas,
internacionalización,etc. Se incluyen, entre otras, Date (fecha),
Dictionary (diccionario), List (lista), Map (mapa), Random
(números aleatorios) y Stack (pila FIFO). Dentro de este paquete,
hay tres paquetes muy interesantes: java.util.jar, que proporciona
clases para leer y crear ficheros JAR; java.util.mime, que
proporciona clases para manipular tipos MIME, Multipurpose
Internet Mail Extension (RFC 2045, RFC 2046) y java.util.zip, que
proporciona clases para comprimir, descomprimir, calcular
checksums de datos, etc. con los formatos estándar ZIP y GZIP.
23. Laboratorio
Construir una clase Estudiante que
descienda de la clase abstracta persona y
que implemente Universitario.
Agregar clases internas Cuaderno, Lápiz.,
Calculadora.