Nothing Special   »   [go: up one dir, main page]

Tecnicas de Programacion Orientada A Objetos - Java Semana 6 Sesion 1-2-3

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 15

INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 1 [Fecha]



SEMANA
6
SESION
1-2-3

USO DE INTERFACES

LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, los alumnos crearn aplicaciones que utilicen
intefaces, utilizando NetBeans como herramienta de desarrollo.

TEMARIO
Concepto de Interface
Declaracin y uso.
Referencias a Interfaces.
Extensin de interfaces.
ACTIVIDADES PROPUESTAS
Los alumnos resuelven ejercicios que involucran el uso de interfaces utilizando
la clase Thread.









INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 2 [Fecha]
Qu es un Interface?
Definicin: Un interface es una coleccin de definiciones de mtodos (sin
implementaciones) y de valores constantes.
Los interfaces se utilizan para definir un protocolo de comportamiento que puede ser
implementado por cualquier clase del rbol de clases.
Los interfaces son tiles para:
Capturar similitudes entre clases no relacionadas sin forzar una relacin entre
ellas.
Declarar mtodos que una o varias clases necesitan implementar.
Revelar el interface de programacin de un objeto sin recelar sus clases (los
objetos de este tipo son llamados objetos annimos y pueden ser tiles cuando
compartas un paquete de clases con otros desarrolladores).

En Java, un interface es un tipo de dato de referencia, y por lo tanto, puede utilizarse
en muchos de los sitios donde se pueda utilizar cualquier tipo (como en un argumento
de mtodos y una declaracin de variables.

Los Interfaces No Proporcionan Herencia Mltiple
Algunas veces se trata a los interfaces como una alternativa a la herencia mltiple en
las clases. A pesar de que los interfaces podran resolver algunos problemas de la
herencia mltiple, son animales bastantes diferentes. En particular:
No se pueden heredar variables desde un interface.
No se pueden heredar implementaciones de mtodos desde un interface.
La herencia de un interface es independiente de la herencia de la clase--las clases que
implementan el mismo interface pueden o no estar relacionadas a travs del rbol de
clases.

Sintaxis para crear una interface

//Creacin de la interface
public interface NombreInterface
{
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 3 [Fecha]
//Nombre del mtodo y su valor de retorno String
String NombreClase();
}

Nota: Por convencin, los nombres de interfaces empiezan con una letra mayscula al
igual que las clases. Frecuentemente los nombres de interfaces terminan en "able" o
"ible".
Una declaracin de interface puede tener otros dos componentes: el especificador de
acceso public y una lista de "superinterfaces". Un interface puede extender otros
interfaces como una clase puede extender o subclasificar otra case. Sin embargo,
mientras que una clase slo puede extender una superclase, los interfaces pueden
extender de cualquier nmero de interfaces. As, una declaracin completa de
interface se parecera a esto:
[public] interface Nombredenterface [extends listadeSuperI{nterfaces] {
. . .
}

El especificador de acceso public indica que el interface puede ser utilizado por todas
las clases en cualquier paquete. Si el interface no se especifica como pblico, slo ser
accesible para las clases definidas en el mismo paquete que el interface.
La clausula extends es similar a la utilizada en la declaracin de una clase, sin embargo,
un interface puede extender varios interfaces (mientras una clase slo puede extender
una), y un interface no puede extender clases.
Esta lista de superinterfaces es un lista delimitada por comas de todos los interfaces
extendidos por el nuevo interface.
Un interface hereda todas las constantes y mtodos de sus superinterfaces a menos
que el interface oculte una constante con el mismo nombre o redeclare un mtodo
con una nueva declaracin.

El cuerpo del Interface
El cuerpo del interface contiene las declaraciones de mtodos para los mtodos
definidos en el interface. Implementar Mtodos muestra cmo escribir una
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 4 [Fecha]
declaracin de mtodo. Adems de las declaraciones del mtodos, un interface puede
contener declaraciones de constantes. En Declarar Variables Miembros existe ms
informacin sobre cmo construir una declaracin de una variable miembro.
Nota: Las declaraciones de miembros en un interface no permiten el uso de algunos
modificadores y desaconsejan el uso de otros. No se podrn utilizar transient, volatile,
o synchronized en una declaracin de miembro en un interface. Tampoco se podr
utilizar los especificadores private y protected cuando se declaren miembros de un
interface.
Todos los valores constantes definidos en un interfaces son implcitamente pblicos,
estticos y finales. El uso de estos modificadores en una declaracin de constante en
un interface est desaconsejado por falta de estilo.
Similarmente, todos los mtodos declarados en un interface son implcitamente
pblicos y abstractos.
Este cdigo define un nuevo interface llamado coleccion que contiene un valor
constante y tres declaraciones de mtodos:
interface coleccion {
int MAXIMO = 500;
void aadir(Object obj);
void borrar(Object obj);
Object buscar(Object obj);
int contadorActual();
}
El interface anterior puede ser implementado por cualquier clase que represente una
coleccin de objetos como pueden ser pilas, vectores, enlaces, etc...
Observa que cada declaracin de mtodo est seguida por un punto y coma (;) porque
un interface no proporciona implementacin para los mtodos declarados dentro de
l.

Implementar un Interface
Para utilizar un interface se debe escribir una clase que lo implemente. Una clase
declara todos los interfaces que implementa en su declaracin de clase. Para declarar
que una clase implementa uno o ms interfaces, se utiliza la palabra clave implements
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 5 [Fecha]
seguida por una lista delimitada por comas con los interfaces implementados por la
clase.
Por ejemplo, consideremos el interface coleccion presentado en la pgina anterior.
//Clase o clases que implementaran la interfaz
public class NombreClase implementes NombreClaseInterfaz
{
//metodos
}

as se garantiza que proporciona implementacin para los mtodos aadir(), borrar(),
buscar() y contadorActual().
Por convencin, la clausula implements sigue a la clausula extends si es que sta
existe.
Observa que las firmas de los mtodos del interface coleccion implementados en la
clase PilaFIFO debe corresponder exactamente con las firmas de los mtodos
declarados en la interface coleccion.

Utilizar un Interface como un Tipo
Como se mencio anteriormente, cuando se define un nuevo interface, en esencia se
est definiendo un tipo de referencia. Se pueden utilizar los nombres de interface en
cualquier lugar donde se usara un nombre de dato de tipos primitivos o un nombre de
datos del tipo de referencia.
Por ejemplo, supongamos que se ha escrito un programa de hoja de clculo que
contiene un conjunto tabular de celdas y cada una contiene un valor. Querramos
poder poner cadenas, fechas, enteros, ecuaciones, en cada una de las celdas de la
hoja. Para hacer esto, las cadenas, las fechas, los enteros y las ecuaciones tienen que
implementar el mismo conjunto de mtodos. Una forma de conseguir esto es
encontrar el ancestro comn de las clases e implementar ah los mtodos necesarios.
Sin embargo, esto no es una solucin prctica porque el ancestro comn ms
frecuente es Object. De hecho, los objetos que puede poner en las celdas de su hoja de
clculo no estn relacionadas entre s, slo por la clase Object. Pero no puede
modificar Object.
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 6 [Fecha]
Una aproximacin podra ser escribir una clase llamada ValordeCelda que representara
los valores que pudiera contener una celda de la hoja de clculo.
Entonces se podran crear distintas subclases de ValordeCelda para las cadenas, los
enteros o las ecuaciones. Adems de ser mucho trabajo, esta aproximacin arbitraria
fuerza una relacin entre esas clases que de otra forma no sera necesaria, y debera
duplicar e implementar de nuevo clases que ya existen.
Se podra definir un interface llamado CellAble que se parecera a esto:
interface CellAble {
void draw();
void toString();
void toFloat();
}
Ahora, supongamos que existen objetos Lnea y Columna que contienen un conjunto
de objetos que implementan el interface CellAble. El mtodo setObjectAt() de la clase
Lnea se podra parecer a esto:
class Lnea {
private CellAble[] contents;
. . .
void setObjectAt(CellAble ca, int index) {
. . .
}
. . .
}
Observa el uso del nombre del interface en la declaracin de la variable miembro
contents y en la declaracin del argumento ca del mtodo. Cualquier objeto que
implemente el interface CellAble, sin importar que exista o no en el rbol de clases,
puede estar contenido en el array contents y podra ser pasado al mtodo
setObjectAt().

Ejemplo 01
Crear un programa que utilice interfaz. Crear mtodos para imprimir el cdigo y
nombre de un cliente. Tambin deber imprimir el cdigo y nombre del Admistrador.
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 7 [Fecha]
Si se ejecuta el objeto Cliente la salida deber mostrar lo siguiente:
Codigo del cliente Nombre del Cliente

Si se ejecuta el objeto Administrador la salida deber mostrar:
Cdigo del Administrador Nombre del Administrador

SOLUCION
Crear un proyecto.
Crear el paquete Semana6.
Crear una clase con el nombre Interfaz y convertirla en interface, y declarar su
mtodo.
public interface Interfaz {
String Imprimir();
}
Crear una clase cliente, implementar la interface, crear sus mtodos get y set:
public class Cliente implements Interfaz{
private String codigo, nombres;

public Cliente(String codigo, String nombres)
{
this.codigo=codigo;
this.nombres=nombres;
}

public String getCodigo()
{
return codigo;
}

public void setCodigo(String codigo)
{
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 8 [Fecha]
this.codigo=codigo;
}

public String getNombres()
{
return nombres;
}

public void setNombres(String nombres)
{
this.nombres=nombres;
}

@Override
public String Imprimir()
{
return this.codigo + " " + this.nombres;
}
}

Crear una clase Administrador, implementar la interface, crear sus mtodos get y
set:
public class Cliente implements Interfaz{
private String codigo, nombres;

public Cliente(String codigo, String nombres)
{
this.codigo=codigo;
this.nombres=nombres;
}

public String getCodigo()
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 9 [Fecha]
{
return codigo;
}

public void setCodigo(String codigo)
{
this.codigo=codigo;
}

public String getNombres()
{
return nombres;
}

public void setNombres(String nombres)
{
this.nombres=nombres;
}

@Override
public String Imprimir()
{
return this.codigo + " " + this.nombres;
}
}

Crear una clase Administrador, implementar la interface, crear sus mtodos get y
set:
public class Administrador implements Interfaz{
private String codigo, nombres;

public Administrador(String codigo, String nombres)
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 10 [Fecha]
{
this.codigo=codigo;
this.nombres=nombres;
}

//Creamos un metod0 set y get para cada campo

public String getCodigo()
{
return codigo;
}

public void setCodigo(String codigo)
{
this.codigo=codigo;
}

public String getNombres()
{
return codigo;
}

public void setNombres(String codigo)
{
this.codigo=codigo;
}

@Override
public String Imprimir() {
return this.codigo + " " + this.nombres;
}
}
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 11 [Fecha]



Crear la clase Imprimir e implementar sus mtodos.
public class Imprimir {
private Interfaz objeto;

public Imprimir (Interfaz objeto)
{
this.objeto=objeto;
}

public void ImprimirObjetoImpresora()
{
System.out.println(this.objeto.Imprimir());
}

Crear la clase principal e implementar sus mtodos.
public static void main(String[] args)
{
Cliente clien= new Cliente("Codigo cliente;", "Nombre de cliente");
Adminitrador admin=new Adminitrador ("Codigo administrador", "Nombre
administrador");

//Creamos un objeto de la clase Imprimir
Imprimir impresora=new Imprimir(admin);

impresora.ImprimirObjetoImpresora();

}

INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 12 [Fecha]



Ejercicio
Crear un programa que utilice interfaces. Crear mtodos para imprimir los datos de
una boleta y los datos de una factura.
Si se ejecuta el boleta la salida deber mostrar lo siguiente:
DOCUMENTO: BOLETA RUC: 1234567890 FECHA:22/03/14 N BOLETA: 234
Si se ejecuta el objeto factura la salida deber mostrar:
DOCUMENTO: FACTURA RUC: 1234567890 FECHA:22/03/14 N FACTURA: 1234

Ejemplo 02
Crear un interface e implementar sus mtodos que ingresen 2 nmeros y se calcule la
suma, resta y multiplicacin.

SOLUCION
Crear una interface llamada Interface con un mtodo llamado Procesos.
public interface Interface {
int Procesos();
}
Crear una clase llamada Procesos.
public class Procesos
{

}
Crear una clase llamada Suma y establecer el mtodo constructor, los mtodos get,
set y el mtodo Resta. Luego deber implementarse con la Interface.
public class Suma implements Interface{
public int n1=20, n2=10;
public Suma(int n1, int n2)
{
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 13 [Fecha]
this.n1=n1;
this.n2=n2;
}

Suma() {
//throw new UnsupportedOperationException("Not supported yet."); //To
change body of generated methods, choose Tools | Templates.
int suma=n1+n2;
System.out.println("Primer numero:" + n1);
System.out.println("Segundo numero:" + n2);
System.out.println("La suma es:" + suma);
}

public int getn1()
{
return this.n1;
}

public int getn2()
{
return this.n2;
}

public void setn1(int n1)
{
this.n1=n1;
}

public void setn2(int n2)
{
this.n2=n2;
}
INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 14 [Fecha]



De la misma manera debers crear la clase Resta, Multiplicacion y Division.
Crear la clase Principal y se deber implementar de la siguiente manera:
public class Principal {
public static void main(String[] args)
{
Suma objsuma=new Suma();
Resta ojbresta=new Resta();
Multiplicacion ojbmultipliacion= new Multiplicacion();
}
}

Al ejecutar el programa deber tener el siguiente resultado;

Primer numero:20
Segundo numero:10
La suma es:30
La suma es:10
La multiplicacin es: 200

Ejercicio
Crear una interface e implementar su mtodos, luego deber mostrar lo siguiente:
Nombre del trabajador :Juan Perez
Sueldo Bruto es: 3000.0
Descuentos: 600.0
Sueldo Neto es: 2400.0



INSTITUTO SUPERIOR TECNOLOGICO SISE

TECNICAS DE PROGRAMACION ORIENTADOS A OBJETOS II CICLO 15 [Fecha]



Ejercicios
Pregunta 1: Qu tiene de malo la siguiente inferfaz?
public interface SomethingIsWrong {
void aMethod(int aValue) {
System.out.println("Hi Mom");
}
}



Pregunta 2: Corrija la interfaz de la pregunta 2.




Pregunta 3: Es til la siguiente interfaz?
public interface Marker {
}

También podría gustarte