Você está na página 1de 24

Orientao a Objetos e Java

Graduao em Cincia da Computao Paulo Borba phmb@di.ufpe.br http://www.di.ufpe.br/~phmb


Centro de Informtica, UFPE

AWT e Applets
Objetivo Depois desta aula voc ser capaz de desenvolver sistemas mais amigveis, atravs da implementao de interfaces grficas simples para os usurios. Em particular, estas interfaces podero ser utilizadas atravs da WWW.

AWT e Applets
Leitura prvia essencial Captulos 10 e 11, e vrios exemplos em diversos captulos, do livro Java: how to program (de Harvey e Paul Deitel)

World Wide Web (WWW)


Sistema de informao mundial Documentos em HTML Usa funes bsicas da Internet Clientes e servidores

Clientes e Servidores WWW


http://www.cin.ufpe.br/ (URL)

Cliente
<BODY> <UL> .... </UL>

Servidor

Por que Java?


WWW mais interativa
Documentos animados, dinmicos Ensino a distncia, telemedicina Comrcio eletrnico

Utilizao de software pela Internet


Independncia de plataforma Atualizaes e instalaes transparentes Aluguel de software

Java e a Evoluo da WWW


Helpers e plug-ins Processamento no cliente: applets Backchannels Sistemas de informao distribudos ou cliente/servidor de alto desempenho Servlets Java Server Pages

Applets versus HTML+CGI+Javascript


Applets eliminam gargalos:
cliente fala direto com o servidor da aplicao (usando objetos ao invs de strings) qualquer tipo de processamento pode ser feito no cliente carga do servidor pode ser distribuda

Java uma linguagem de programao que d suporte a princpios de engenharia de software Problemas: eficincia e portabilidade

WWW e Java: Interao


Applets so programas Java disponibilizados via WWW, atravs de uma pgina HTML
<HTML> ... <applet codebase=http://www.di.ufpe.br/... code=Classe.class width=10 height=90> <param name=text value=Teste> Perdeu de ver um applet! </applet> ... </HTML>

Definindo Applets
import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics grafico) { grafico.drawString(Ol Pessoal!, 40, 50); } }

AppletBanco: Atributos
public class AppletBanco extends Applet { //Ligao com a Fachada private Banco banco = null;
//Controles Button buttonProcurar = new Button(); Label labelValor = new Label(); TextField textFieldVal = new TextField(); Button buttonDebito = new Button(); ...

Container e Controles
Container
Controle Controle Controle

Controle
Controle Controle Controle Controle Controle

Container
Controle Controle Controle

Componentes do AWT
Containers
Container Panel Window Frame Dialog Applet ...

Controles
Button Canvas Label TextField Choice List ...

Container e Controles
AppletBanco
Label

Panel
TextField

Button TextField

Label

Comunicao entre Containers e Controles: Eventos


AppletBanco
addActionListener actionPerformed

Button
Label

Panel
TextField

TextField

Label

Eventos com Adaptadores


addActionListener

AppletBanco

Button

actionPerformed buttonProcurar_actionPerformed

Adapter

AppletBanco: Inicializao
public void init() {... buttonProcurar.setLabel("Procurar"); labelValor.setText("Valor:"); textFieldVal.setBounds(127, 114, 87, 26); buttonProcurar.addActionListener( new ButtonProcurarAdapter(this)); this.setLayout(null); this.setSize(400,300); this.setBackground(Color.lightGray); this.add(buttonProcurar, null); this.add(labelValor, null); this.add(textFieldVal, null); ...

AppletBanco:Tratamento de Eventos

void buttonProcurar_actionPerformed (ActionEvent e) { String num = textFieldNum.getText(); try{ Conta c = banco.procurar(num); Double s = new Double(c.getSaldo()); textFieldNumEsc.setText(c.getNumero()); textFieldSaldoEsc.setText(s.toString()); } catch (CNEException cnee) { DialogAviso d; d = new DialogAviso("Conta inexistente,...) d.setVisible(true);... } finally {textFieldNum.setText("");...} }

AppletBanco: Adaptadores
class ButtonProcurarAdapter implements java.awt.event.ActionListener { AppletBanco adaptee; ButtonProcurarAdapter(AppletBanco adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.buttonProcurar_actionPerformed(e); } }

Applets: Aspectos de Segurana


Applets devem satisfazer vrias restries, impostas pelos folheadores:
no ter acesso a arquivos do cliente s se conectar com o servidor de origem no usar mtodos nativos

Restries podem ser eliminadas para applets assinados e transmitidos de forma segura!

Programao Visual com o JBuilder


Vrios pacotes:
AWT, Swing, JBCL, KL Group Cuidado ao misturar classes de pacotes diferentes Suporte ao Swing ainda no estvel Exportar pacotes extra-JDK junto com o sistema

Configurar o JBuilder para no gerar inner classes

AWT e Applets
Resumo
Java e a evoluo da WWW Applets e a classe Applet Componentes do AWT, containers e controles

Comunicao baseada em eventos


Applets e aspectos de segurana

AWT e Applets
Leitura adicional

Captulo 13 do livro Thinking in Java (de Bruce Eckel)


Captulos 1, 12, 13, e 14 do livro A Programmers Guide to Java Certification (de Khalid Mughal e Rolf Rasmussen) Pacotes da API de Java: java.applet e java.securit

Lixo
public class ClassesPrivadas { public void m() { X x = new X(); Y y = new Y(); } public static void main(String[] args) { ClassesPrivadas cp = new ClassesPrivadas(); Y y = new Y(); // erro: Y y = cp.new Y(); // erro: Y y = ClassesPrivadas.new Y(); X x = cp.new X(); // erro: X x = new X(); }

Você também pode gostar