Interfaces y Clases
Internas
Módulo 6
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.
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]
Ejemplo de Interface
public interface Comparable
{
int compareTo(Object other);
}
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
*/
}
}
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
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)
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.
Ejemplo - Clase Interna
class CuentaBancaria{
public CuentaBancaria(double initialBalance){ . . .}
public void inicio(double rate) { . . . }
private double saldo;
private class InteresAgregado implements ActionListener{
// Clase Interna
}
}
Sintaxis de Clases Internas
 Referencia a objetos de la clase externa
 Ejemplo:
CuentaBancaria.this.saldo
//CuentaBancaria corresponde a la clase
externa
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.
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();
}
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();
}
Clases Estáticas Internas
 Se utilizan para evitar la generación de
nuevas instancias dentro de una clase.
Paquetes
Estándares de J2SE
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.
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...
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...
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.
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.
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...
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.
Laboratorio
 Construir una clase Estudiante que
descienda de la clase abstracta persona y
que implemente Universitario.
 Agregar clases internas Cuaderno, Lápiz.,
Calculadora.

Modulo6.ppt

  • 1.
  • 2.
    Interfaces  Indican quelo 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  Javaprovee 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]
  • 4.
    Ejemplo de Interface publicinterface Comparable { int compareTo(Object other); }
  • 5.
    Ejemplo de usode 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 laclase 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() esmé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  Esdefinida 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 - ClaseInterna class CuentaBancaria{ public CuentaBancaria(double initialBalance){ . . .} public void inicio(double rate) { . . . } private double saldo; private class InteresAgregado implements ActionListener{ // Clase Interna } }
  • 10.
    Sintaxis de ClasesInternas  Referencia a objetos de la clase externa  Ejemplo: CuentaBancaria.this.saldo //CuentaBancaria corresponde a la clase externa
  • 11.
    Clases Locales  Lasclases 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 – ClaseLocal 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  Correspondena 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(); }
  • 14.
    Clases Estáticas Internas Se utilizan para evitar la generación de nuevas instancias dentro de una clase.
  • 15.
  • 16.
    Paquetes Estándares deJ2SE  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 deJ2SE  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 deJ2SE  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 deJ2SE  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 deJ2SE  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 deJ2SE  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 deJ2SE  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 unaclase Estudiante que descienda de la clase abstracta persona y que implemente Universitario.  Agregar clases internas Cuaderno, Lápiz., Calculadora.