Download Interfaces, una introduccion

Document related concepts
no text concepts found
Transcript
Paquetes e interfaces
Paquetes
Los paquetes son recipientes con clases que se utilizan para mantener el espacio de clase dividido en compartimentos. Por ejemplo
un paquete puede tener una clase llamada lista, que se puede almacenar en un paquete propio sin preocuparte por conflictos con
otra clase llamada lista escrita por otra persona. El paquete tendrá que estar almacenado en un directorio con el mismo nombre que
la clase creada.
package java.awt.imagen;
La sentencia import se utiliza para utilizar las clases o paquetes enteros sin tener que escribir esas clases. También se puede utilizar
el asterisco (*) para buscar en el paquete completo sin tener que especificar cada una de las clases.
import paquete.paquete2.clase;
import paquete.paquete2.*;
Con Java vienen implementadas varios paquetes para realizar operaciones específicas, como operaciones matemáticas, gráficos,
imágenes, etc ...
Todas las clases incorporadas en Java están almacenadas en directorios independientes. La clase java.lang es la única que se
importa automáticamente. El resto, en caso de que sean necesarias las tendremos que importar.
El uso de paquetes facilita el uso, manejo y mantenimiento de las aplicaciones generadas con Java. Su mecanismo puede utilizarse
para varios propósitos:
- organizar archivos cuyo código fuente está relacionado
- evitar conflicto entre nombres de tipo
- proporcionar encapsulado y control de acceso a nivel de paquete
Si se pone la declaración
package algunPaquete; al principio de un archivo de código fuente de Java, éste será parte de
algunPaquete. Todos los tipos (clases e interfaces) definidos aquí se unen al paquete especificado. Solo se permite una declaración
package en el archivo. Pero varios archivos del mismo sistema local pueden pertenecer al mismo paquete y su declaración sólo
hace que todo nombre de tipo definido en el archivo vaya antecedido implícitamente con la denominación del paquete:
algunPaquete.NombreTipo
La manera más fácil de compilar el código en un paquete es ir al directorio padre y emplear el comando:
javac algunPaquete /*.java
y para ejecutar algún archivo se puede hacer:
java algunPaquete /algunaClase
Al incorporar las clases de más de un paquete puede ocurrir que haya nombres de clases iguales; para que no haya ambigüedad en
este caso hay que preceder del nombre del paquete al nombre de la clase. Por ejemplo:
java.util.Random r=new java.util.Random();
Algunos de los paquetes integrados a Java:
- java.lang - contiene clases esenciales para el lenguaje Java:
 para programación: String, Object, Math, Class, Thread, System, clase de envoltura de tipo y las interfaces Cloneable y
Runnable
 para operaciones de lenguaje: Compiler, Runtime t SecurityManager
 para error y excepciones: Exception, throwable, entre otras clases
- java.applet - permite a través de la clase Applet la creación de applets proporcionando interfaces para conectarlos con su
documento web.
- java.awt – ofrece un juego de herramientas abstracto de ventanas (AWT, Abstract Window Toolkit) para la programación en
GUI y para la creación y manipulación de imágenes. Independientemente de la plataforma
- java.io – soporta flujos de entrada y salida de Java
- java.math – para cálculos enteros y cifras grandes con punto flotante
- java.net - soporte a redes: URLs, conexiones TCP, UDP, direcciones IP y conversiones de binario a texto
- java.rmi - invocación a métodos remotos para programas de Java
- java.util - contiene varias clases de utilerias: conjunto de bits, enumeración, contenedores genéricos (Vector y Hashtable),
hora, fecha, separación de ficha, generación de números aleatorios, propiedades del sistema
maria eugenia puga nathal
Página 1
09/08/2017
Paquetes e interfaces
-
org.omg.CORBA – contiene varias clases utilizadas para la generación de objetos CORBA que podrán ser invocados de
manera remota.
Ejemplos:
-Crear una carpeta con el nombre de uno, esta carpeta es el paquete uno
-Dentro de la carpeta uno crear las clases siguientes:
package uno;
public class A1
{public void aa()
{System.out.println("metodo aa de la clase A1 del paquete uno");}
}
grabar  A1.java
package uno;
public class A2
{public void aaaa()
{System.out.println("metodo aaaa de la clase A2 del paquete uno");}
}
grabar  A2.java
-Compilar los archivos, si se compila desde la consola del MS-DOS, y desde la carpeta que contiene a este paquete, se hará de la
manera siguiente: javac uno/*.java con esto compila todas las clases que se encuentran en el paquete uno.
-Crear una carpeta con el nombre de dos, esta carpeta es el paquete dos
-Dentro de la carpeta uno crear las clases siguientes:
package dos;
public class B1
{public void bb()
{System.out.println("metodo bb de la clase B1 del paquete dos");}
}
grabar  B1.java
package dos;
public class B2
{public void bbbb()
{System.out.println("metodo bbbb de la clase B2 del paquete uno");}
}
grabar  B2.java
-Compilar los archivos, si se compila desde la consola del MS-DOS, y desde la carpeta que contiene a este paquete, se hará de la
manera siguiente: javac dos/*.java con esto compila todas las clases que se encuentran en el paquete uno.
-En la carpeta donde estén contenidos los paquetes editar la clase siguiente
import uno.*;
import dos.*;
public class UsoPaquetes
{public static void main(String arg[])
{A1 a=new A1();
A2 a2=new A2();
B1 b=new B1();
B2 b2=new B2();
a.aa();
a2.aaaa();
b.bb();
b2.bbbb();
}
}
grabar  UsoPaquetes.java
maria eugenia puga nathal
Página 2
09/08/2017
Paquetes e interfaces
-Compilarla y ejecutarla
Interfaces
Conjunto de métodos abstractos y de constantes publicas definidos en un archivo .java. Una interface es similar a una clase
abstracta llevada al límite en que sus métodos son abstractos, pero no hay que confundirnos pensando que son lo mismo, ya que en
una clase abstracta si podemos tener la combinación de métodos abstractos y métodos concretos (ya implementados o definidos) y
en una interface no, todos los métodos que la conforman siempre van a ser abstractos.
Su finalidad es definir el formato que deben tener determinados métodos que han de implementar ciertas clases.
Las interfaces de Java están diseñadas para admitir resolución de métodos dinámicamente durante la ejecución. Para que un
método sea llamado desde una clase a otra, ambas clases tienen que estar presente durante la compilación. Las interfaces son como
las clases, pero sin variables de instancia y con métodos declarados sin cuerpo. Cuando se declara una interfaz no se hacen
suposiciones acerca de los detalles de la implementación. Las clases pueden implementar varias interfaces. Las interfaces están en
una jerarquía distinta a la de las clases por lo que es posible que varias clases que no tengan la mas mínima relación en cuanto a la
jerarquía de clases implementen la misma interface.
En una interface no se establece lo que un método tiene que hacer y cómo hacerlo, sino el formato que éste debe tener (cabecera).
Todos los métodos definidos en una interface son públicos y abstractos aunque no se indique explícitamente, cuando una clase
implementa los métodos de una interface, si debe agregar el modificado public en el método aunque no este indicado en la
interface.
Es posible definir variables finales (constantes) las cuales implícitamente son publicas y estaticas, por lo que no es necesario
indicarlo en su declaración.
Cuando una clase implementa una interface, está obligada a implementar todos sus métodos, si no es así, se convierte en una clase
abstracta y por lo tanto tendrá que declararse así anteponiendo al inicio de la cabecera de la misma la palabra abstract.
Una clase puede implementar más de una interface. También puede heredar una clase e implementar una o varias interfaces.
Una interface puede heredar de otras interfaces
interface sub extends intereface1, interface2, …..
Ejemplo:
interface uno
{void a();}
grabar  uno.java
interface dos
{void b();}
grabar  dos.java
interface tres
{int c(char x);}
grabar  tres.java
public interface hereda extends uno,dos,tres
{void d();}
grabar  hereda.java
public class implementa implements hereda
{public void a()
{System.out.println("metodo a");}
public void b()
{System.out.println("metodo b");}
public int c(char x)
{System.out.println("metodo c");
maria eugenia puga nathal
Página 3
09/08/2017
Paquetes e interfaces
return (int)x;
}
public void d()
{System.out.println("metodo d");}
public static void main(String arg[])
{implementa obj=new implementa();
obj.a();
obj.b();
System.out.println(obj.c('p'));
obj.d();
}
}
grabar  implementa.java
Definición de una interface
interface nombre
{ public tipo_devuelto nombre_metodo ([parametros]); // siempre deben ser public y abstractos, por definición ya lo son por lo que
// no es necesario indicarlo en la declaración
final tipo_dato nombre_variable_final=valor; //siempre deben ser final (valor constante)
}
Se utiliza la sentencia implements para cuando se desea implementar una interface. Una clase que implementa algunas interfaces
tienen la forma general:
class nomb_clase [extends superclaes] implements interface1 [, interface2, ..]
{.....
aquí se implementa él o los métodos que fueron definidos en el archivo que contiene a la interface (lo nombrare archivo interface)
public tipo_devuelto nombre_metodo ([parametros]) // declaracion que se hizo en el archivo interface
{cuerpo del método}
}
Se pueden declarar variables como referencias a objetos que utilizan una interface como tipo en vez de una clase. Cualquier
instancia de una clase que implementa la interface declarada se puede almacenar en una variable de ese tipo. Si se desea llamará un
método a través de una de estas variables, se llamará a la implementación correcta en base a la instancia actual.
Una variable de tipo interface puede almacenar cualquier objeto de las clases que la implementan, pudiendo utilizar esta variable
para invocar métodos del objeto que han sido declarados en la interface e implementados en la clase.
Operaciones op=new Tringulo();
Ejemplo1:
Se define la interface:
public interface ejemplo
{public char get(); // se define la cabeza del metodo que forma parte de la interface ejemplo
public void put(char x); // se define la cabeza del metodo que forma parte de la interface ejemplo
}
grabar como: ejemplo.java
compilar: javac ejemplo.java
Se hace la clase donde se utiliza (implementa) la interface ejemplo
import java.io.*;
public class ejemploINterface implements ejemplo
{public char get() //metodo de la interface, se desarrolla el método de acuerdo las necesidades de este programa
{try
{return (char) System.in.read();}
catch (IOException e)
maria eugenia puga nathal
Página 4
09/08/2017
Paquetes e interfaces
{return '*';}
}
public void put(char x) //metodo de la interface, se desarrolla el método de acuerdo las necesidades de este programa
{imprime("------> "+x+" <------");}
static void imprime(String cad)//metodo de la clase ejemploINterface
{System.out.println(cad);}
public static void main(String arg[])
{char x;
ejemploINterface obj=new ejemploINterface();
imprime("Dame un caracter");
x=obj.get();
obj.put(x);
}
}
grabar: ejemploINterface.java
compilar: javac ejemploINterface.java
ejecutar: java ejemploINterface
Ejemplo2
public class Ejemplo_Interface implements interfaz
{static void imprime(String msg)
{System.out.println(msg);}
//implementacion de los metodos de la interfaz
public int multiplicacion(int a,int b)
{return a*b;}
public int division(int a,int b)
{return a/b;}
public static void main(String arg[])
{Ejemplo_Interface obj=new Ejemplo_Interface ();
imprime("la multiplicacion de 3 * 2 es="+obj.multiplicacion(3,2));
imprime("la division de 3 / 2 es="+obj.division(3,2));
}
}
interface interfaz
{int multiplicacion(int a,int b);
int division(int a,int b);
}
maria eugenia puga nathal
Página 5
09/08/2017