Вы находитесь на странице: 1из 39

Tpicos de Programacin con Java Interfaces

Ing. Edwin Octavio Ramos Velsquez Carrera Profesional de Ingeniera de Sistemas UNIVERSIDAD NACIONAL JOS MARA ARGUEDAS
1

En Java una interface es una clase abstracta pura, es decir una clase donde todos los mtodos son abstractos (no se implementa ninguno) Todos los mtodos que declara interface son siempre public una

Interface
2

CLASE ABSTRACTA
public class TAnimal { public String Nombre; public void Correr(); public void Caminar(); }
TAnimal +Nombre: String +Correr() +Caminar()

CLASE IMPLEMENTADA
public class TAnimal { public String Nombre; public void Correr() { System.out.print("Estoy corriendo"); } public void Caminar() { System.out.print("Estoy caminando"); } }

Clase Abstracta: Aquella clase que contiene por lo menos un mtodo abstracto Mtodo Abstracto: Aquel mtodo que no est implementado

Clase Abstracta
3

Las Clases Abstractas no pueden ser instanciadas


TAnimal

TAnimal A; TPerro P; TGato G; A = new TAnimal(); A = new TPerro(); A = new TGato(); TConstruccion C; TEdificio E; TEstadio P; C = new TEdificio(); C = new TEstadio(); C = new TConstruccion();

+Nombre: String +Correr() +Caminar()

TPerro

TGato

<<Abstract>> TConstruccion

En esta imagen puede notarse que la clase TConstruccion es una clase ABSTRACTA, por tanto, es una clase NO INSTANCIABLE

TEdificio

TEstadio

Esta lnea genera un error de compilacin

Clase Abstracta
4

Son equivalentes a las Clases Abstractas. Permiten la Herencia Mltiple


TPez

TAve +ColorPico: String +Familia: String +MueveAlas() +Picotea() +RasgaElSuelo()


IVolador +AlturaDeVualo:Integer +SurcaElCielo() +FlameaAlas()

IGorila +EsElAlfa:Boolean +ComePlatano() +Gorilea() +CuelgaDelArbol()

THombre +Nombre: String +Edad: Integer +Camina() +Habla() +Corre()

TGolpeador +Peso: Integer +Golpear() +Sanar()

+Escamas: Boolean +NroDeAletas: Integer +ComeMolusco() +Aletea() +NadaEnAgua()

? ?

INTERFACES
5

IGorila +EsElAlfa:Boolean +ComePlatano() +Gorilea() +CuelgaDelArbol()

Las variables declaradas en una interfaz son variables terminales (su valor no podr ser modificado) actan a la manera de valores CONSTANTES final

IVolador +AlturaDeVualo:Integer +SurcaElCielo() +FlameaAlas()

public interface IGorila { public int esElAlpha = 0; public void ComePlatano(); public void Gorilea(); public void CuelgaDelArbol(); }

public interface IVolador { public int AlturaDeVuelo = 0; public void SurcaElCielo(); public void FlameaAlas(); }

Todos los miembros de una interfaz son pblicos

TGorila

IGorila +EsElAlfa:Boolean +ComePlatano() +Gorilea() +CuelgaDelArbol()


+ComePlatano() +Gorilea() +CuelgaDelArbo()

public interface IGorila { public int esElAlpha=0; public void ComePlatano(); public void Gorilea(); public void CuelgaDelArbol(); }

public class TGorila implements IGorila { @Override public void ComePlatano(){ System.out.print("\n Estoy comiendo PLATANOS"); } @Override public void Gorilea(){ System.out.print("\n Estoy comiendo PLATANOS"); } @Override public void CuelgaDelArbol(){ System.out.print("\n Estoy comiendo PLATANOS"); } }

Toda clase que implementa una interfaz est obligada a implementar todos los mtodos declarados en la interfaz Solamente las clases abstractas que implementan una interfaz no estn obligadas a implementar todos los mtodos de la interfaz a implementar
7

IGorila +EsElAlfa:Boolean +ComePlatano() +Gorilea() +CuelgaDelArbol()

public interface IGorila { public int esElAlpha = 0; public void ComePlatano(); public void Gorilea(); public void CuelgaDelArbol(); }

Las variables declaradas en una interfaz son variables terminales (su valor no podr ser modificado) en realidad actuarn como constantes final

TPez +Escamas: Boolean +NroDeAletas: Integer +ComeMolusco() +Aletea() +NadaEnAgua()

public class TPez { private boolean escamas; private int nroDeAletas; public void ComeMoluscos(){ System.out.print("\n Estoy comiendo moluscos"); } public void Aletea(){ System.out.print("\n Estoy aleteando"); } public void NadaEnAgua(){ System.out.print("\n Estoy nadando en agua"); } }

TPez
IGorila +EsElAlfa:Boolean +ComePlatano() +Gorilea() +CuelgaDelArbol()

+Escamas: Boolean +NroDeAletas: Integer +ComeMolusco() +Aletea() +NadaEnAgua()

TPezGorila +ComePlatano() +Gorilea() +CuelgaDelArbol()

Una Clase hereda(extends) de una clase, pero implementa (implements) la interfaz declarada

public class TPezGorila extends TPez implements IGorila { @Override public void ComePlatano(){ System.out.print("Como Platano"); } @Override public void Gorilea(){ System.out.print("Gorileo"); } @Override public void CuelgaDelArbol(){ System.out.print("Cuelgo de arbol"); } }
9

IVolador +AlturaDeVualo:Integer +SurcaElCielo() +FlameaAlas()


IGorila +EsElAlfa:Boolean +ComePlatano() +Gorilea() +CuelgaDelArbol()
TPezGorilaVolador +ComePlatano() +Gorilea() +CuelgaDelArbol()

TPez +Escamas: Boolean +NroDeAletas: Integer +ComeMolusco() +Aletea() +NadaEnAgua()

Una Clase hereda(extends) de una clase, pero implementa (implements) una o ms interfaces declaradas

public class TPezGorilaVolador extends TPez implements IGorila,IVolador { @Override public void ComePlatano(){ System.out.print("Como Platano"); } @Override public void Gorilea(){ System.out.print("Gorileo"); } @Override public void CuelgaDelArbol(){ System.out.print("Cuelgo de arbol"); } @Override public void SurcaElCielo(){ System.out.print("Surco el cielo"); } @Override public void FlameaAlas(){ System.out.print("Flameo Alas"); } 10 }

Tpicos de Programacin con Java


Programacin Orientada a Eventos
Ing. Edwin Octavio Ramos Velsquez Carrera Profesional de Ingeniera de Sistemas UNIVERSIDAD NACIONAL JOS MARA ARGUEDAS
11

Hay de dos tipos de programas: Programas de flujo secuenciales Programas de flujo dirigido por eventos
Flujo secuencial: La ejecucin de las rutinas del programa se ajustan a un orden secuencial ordenado y esperado

Tipos de Programas
12

Programas de flujo secuencial


La ejecucin de las rutinas del programa se ajustan a un orden secuencial ordenado y esperado
INICIO
INICIO

HallarMCD(A,B: Integer): Integer Inicio

SI X=A Y=B

IF A>B

NO X=B Y=A

R = X mod Y

Leer: B

Leer: B, H

MCD = Y

Leer: H

A = (B x H) / 2

WHILE ( R<>0) Hacer

A=B*H

Imprimir: A

X=Y Y=R

Print:

FIN

R = X mod Y MCD = Y

FIN
return (MCD) FIN

Tipos de Programas

13

Programas de flujo dirigido por eventos


Programas cuyo flujo de ejecucin responde a sucesos (eventos) que ocurren, y dependiendo de cuales sean, se ejecutan diferentes funciones. Por Ejemplo: En una aplicacin con una interfaz grfica. Las acciones se ejecutan de acuerdo al evento activado. Como se programa? Se especifican los eventos a los que debe responder el programa. Se especifican las acciones a realizar cuando ocurren los eventos. Funcionamiento asncrono.

14

Programas de flujo dirigido por eventos


Una vez visualizado el formulario, Cual ser la siguiente instruccin a ejecutarse?
La siguiente instruccin a ejecutarse ser activada por uno de los botones cuando sea presionado por el usuario Los siguientes son ejemplos de mtodos activados por evento private void jbtnPrimeroPerformed() { } private void jbtnAnteriorPerformed() { } private void jbtnSiguientePerformed() { } private void jbtnAnteriorPerformed() { } private void jbtnNuevoPerformed() { } private void jbtnGrabarPerformed() { }
15

Externos: Producidos por el usuario. Ejemplo, presin del teclado, movimiento del mouse. Internos: Producidos por el sistema o la aplicacin. Ejemplo, activacin de una rutina por un temporizador activado, etc.

Tipos de eventos
16

Para la activacin de este tipo de eventos, se requiere la participacin de los elementos de bajo nivel del Sistema Operativo (la API del Sistema Operativo). Por ejemplo los elementos de Interfaz Grfica (GUI), estn sincronizados desde la API del Sist. Operativo, con las Interfaces (teclado, mouse, cmara) fsicas de interaccin con el usuario. NOTA: En el caso del S.O. Windows, cuando se crea un elemento grfica de interaccin con el usuario (botn, textbox, scroll), se recurre a la API de Windows, para accesar a rutinas de creacin y registro de estos elementos. A partir de all, estos elementos funcionan de manera sincronizada con la API, la cual activa los mtodos (capturadores de eventos) definidos en ella, en funcin a los eventos que el usuario genere en su interaccin (presin del teclado, movimiento del mouse, click del botn del mouse, etc.)

Eventos Externos: El Usuario


17

Todos los controles tienen mtodo receptor de mensajes OnClick() de Windows

API de Windows
Boton1=CrearBotn() Rutinas de creacin de controles CreaControlSincronizado() Rutinas sincronizadas ejecutadas en la API Verifica el teclado() Verifica el mouse() Verifica la Cmara() Verifica la impresora()

Form1=CrearFormulario() Scroll1=CrearScroll()

Textbox1=CrearTextBox()

Send OnClick(x,y)
Los Controles Visuales deben poseer mtodos de captura de eventos estndares para poder recibir a travs de ellos los mensajes detectados en la API de Windows

EnviarMensajeAControles()
Boton1 Form1 Scroll1 TextBox1 Etc.

Lista de controles registrados en la API

Eventos Externos: El Usuario


18

El modelo de eventos, en java utiliza como intermediario el uso de interfaces. Las interfaces deben definir los mtodos que se utilizarn como receptores de eventos.

Las interfaces son el medio de uso de los eventos


19

Estos eventos suelen ser multihilos. Varios mdulos pueden ejecutarse de manera paralela a velocidades diferentes. El usuario decide cuntos mdulos se ejecutan.

Eventos Internos: El Programador


20

Tpicos de Programacin con Java


Programacin Orientada a Eventos: Uso de interfaces
Ing. Edwin Octavio Ramos Velsquez Carrera Profesional de Ingeniera de Sistemas UNIVERSIDAD NACIONAL JOS MARA ARGUEDAS
21

El modelo de eventos, en java utiliza como elemento intermediario el uso de las interfaces. Las interfaces deben definir los mtodos que se utilizarn como receptores de eventos.

Las interfaces son el medio de uso de los eventos


22

Mtodo receptor del mensaje

ICliente
Metodo_oidor() { }

TServidor

El Servidor, cuando desea enviar un mensaje al Cliente, toma el mtodo oidor existente en el cliente, y lo activa (ejecuta), pasndole los parmetros que correspondan En el lado del Cliente, se interpreta que el metodo oidor fue activado por algn evento ocurrido en el servidor. En el lado del Cliente, este mtodo oidor debe ser personalizado

Modelo de eventos en java


23

IOyente +metodo_oidor()

TClaseServidor -cliente: IOyente +addOyente(cliente: IOyente) +enviar_mensaje()

TClaseCliente +metodo_oidor()

public class TClaseCliente{ //** Propiedades y otros @Override public void metodo_oidor(){ JPa } //**** Otros metodos ***** }

public class TClaseServidor{ private IOyente cliente public void addOyente(IOyente cliente){ this.cliente = Cliente; } private void enviar_mensaje(){ cliente.metodo_oidor(); } }

24

MouseListener: Tiene mtodos de captura de eventos del mouse. ActionListener: Tiene mtodos de captura de eventos de los botones

Interfaces genricas para captura de eventos


25

Mtodo receptor del mensaje

ICliente MouseListener
public interface MouseListener { public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e); public void mouseEntered(MouseEvent e); public void mouseExited(MouseEvent e); public void mouseClicked(MouseEvent e); }

TServidor

Modelo de eventos en java:MouseListener


26

Mtodo receptor del mensaje

ICliente MouseListener
public interface MouseListener { public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e); public void mouseEntered(MouseEvent e); public void mouseExited(MouseEvent e); public void mouseClicked(MouseEvent e); }

TServidor

ActionListener
Public interface ActionListener { public void actionPerformed(ActionEvent e); }

Modelo de eventos en java:MouseListener

27

public class TMouseDemo ... implements MouseListener { ...//where initialization occurs: //Register for mouse events on blankArea and applet (panel). blankArea.addMouseListener(this); addMouseListener(this); public void mousePressed(MouseEvent e) { saySomething("Mouse button press", e); } public void mouseReleased(MouseEvent e) { saySomething("Mouse button release", e); } public void mouseEntered(MouseEvent e) { saySomething("Cursor enter", e); } public void mouseExited(MouseEvent e) { saySomething("Cursor exit", e); } public void mouseClicked(MouseEvent e) { saySomething("Mouse button click", e); } void saySomething(String eventDescription, MouseEvent e) { textArea.append(eventDescription + " detected on " + e.getComponent().getClass().getName() + ".\n"); textArea.setCaretPosition(maxInt); //scroll to bottom } }

MouseListener +MousePresed() +mouseReleased() +mouseEntered() +mouseExited() +mouseClicked()

TMouseDemo -saySomething() +mousePressed() +mouseReleased() +mouseEntered() +mouseExited() +mouseClicked()

Cmo se codifica un Cliente?


28

Tpicos de Programacin con Java


Programacin Orientada a Eventos: Los Adaptadores (Adapter)
Ing. Edwin Octavio Ramos Velsquez Carrera Profesional de Ingeniera de Sistemas UNIVERSIDAD NACIONAL JOS MARA ARGUEDAS
29

Son clases que implementan los mtodos contenidos en interfaces de captura de eventos.
Justificacin: Cuando se desea escuchar algn tipo de evento se deben implementar todos los mtodos de la Interfase de escucha (listener interfase), para que nuestra clase no tenga que ser definida como abstracta. De esta forma, nuestra clase oyente solamente requerira ser heredera de una clase adaptador.

Adaptador: Definicin
30

Son clases que implementan un listener, pero no realizan ningn tipo de operacin. Por ejemplo, el adaptador de la clase escucha MouseListener es MouseAdapter y la implementacin de este adaptador es la siguiente: public abstract class MouseAdapter implements MouseListener { public void mouseClicked (MouseEvent e){} public void mousePressed (MouseEvent e){} public void mouseReleased (MouseEvent e){} public void mouseEntered (MouseEvent e){} public void mouseExited (MouseEvent e){} }

El MouseAdapter es utilizado para implementar una TClaseOidorMouse1 clase que escuche los eventos del Los dems Adapter pueden mouse

MouseAdapter

TClaseOidorMouse2

Adapter

ser usados manera

de

la

misma

31

Interfaces y adaptadores en Java

32

import import import import public

java.awt.event.MouseAdapter; java.awt.event.MouseEvent; javax.swing.JFrame; javax.swing.JPanel; class MainClass extends JPanel { public MainClass() { addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent me) { System.out.println(me); } } ); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new MainClass()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 200); frame.setVisible(true);

Ejemplos de uso de la clase MouseAdapter

} }

JLabel label = new JLabel("Hello"); label.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { System.out.println("Clicked!"); } } );

Adapter: Ejemplos de uso

33

Tpicos de Programacin con Java


Programacin Orientada a Eventos: Ejercicios de implementacin
Ing. Edwin Octavio Ramos Velsquez Carrera Profesional de Ingeniera de Sistemas UNIVERSIDAD NACIONAL JOS MARA ARGUEDAS
34

JDialogSample
IOyente +metodo_oidor()

ICliente

Ejercicio de implementacin JPanelScroll TServidor

Tarea 1: Implementar un componente Scroll, y hacer interactuar con los controles visuales
35

JDialogSample

public interface IOyente { public void metodo_oidor(String mensaje); }

public class JDialogSample extends javax.swing.Jdialog implements IOyente { @Override public void metodo_oidor(String mensaje) { JOptionPane.showMessageDialog(this, mensaje); } // .. private void CargaJPanel(){ JPanelScroll panel = new JPanelScroll(); panel.setSize(300, 200); panel.setCliente(this); JDialogSample this.add(panel); } public JDialogSample(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); CargaJPanel(); } public class JPanelScroll extends javax.swing.JPanel { } private IOyente cliente;

IOyente

JPanelScroll

Ejercicio de implementacin

public void setCliente(IOyente cliente) { this.cliente = cliente; } private void envia_mensaje(String mensaje){ cliente.metodo_oidor(mensaje); } // Otros metodos private void JBtnPrimeroActionPerformed(java.awt.event.ActionEvent evt) { envia_mensaje("Primero"); } private void JBtnUltimoActionPerformed(java.awt.event.ActionEvent evt) { envia_mensaje("Ultimo"); }

36

Implemente la interfaz MouseListener sobre un formulario


MouseListener_

JDialogSampleMouse

+mouseClicked(MouseEvent arg0) +mouseExited(MouseEvent arg0) +mouseEntered(MouseEvent arg0) +mousePressed(MouseEvent arg0) +mouseReleased(MouseEvent arg0)

Servidor

TAREA 2: Implementar la interfaz MouseListener


37

Evento externo (Eventos activados por el usuario)

public class JDialogSampleMouse extends javax.swing.JDialog implements MouseListener{

public JDialogSampleMouse(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); this.addMouseListener(this); } @Override public void mouseClicked(MouseEvent e) { JOptionPane.showMessageDialog(this, "Evento mouseClicked"); } @Override public void mousePressed(MouseEvent e) { JOptionPane.showMessageDialog(this, "Evento mousePressed"); } @Override public void mouseReleased(MouseEvent e) { JOptionPane.showMessageDialog(this, "Evento mouseReleased"); } @Override public void mouseEntered(MouseEvent e) { // JOptionPane.showMessageDialog(this, "Evento mouseEntered"); } @Override public void mouseExited(MouseEvent e) { JOptionPane.showMessageDialog(this, "Evento mouseExited"); } }

Con este mtodo le informamos al servidor que la Clase JDialogSampleMouse es la Clase Cliente que implementa los mtodos oidores de la interfaz MouseListener

38

FIN

39

Вам также может понравиться