JavaBeans. Java Deployment Course: Aula 8. por Jorge H C Fernandes CESAR-DI-UFPE Recife, 1999

Documentos relacionados
Tratamento de Eventos em Programas com GUI - Graphical User Interface. Jorge H. C. Fernandes UFRN Junho de 2001

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

AWT Versus Swing. Java Deployment Course: Aula 5. por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999

Arquitetura de Tratamento de Eventos em Programas com GUI - Graphical User Interface

Manipulando Eventos em Java

Aula 2 Even e to t s d o M ouse

Java AWT Objectos e Eventos. Label Button TextField Checkbox RadioButton Combobox

Aplicação Linguagem de Programação Orientada a Objeto

TRATAMENTO DE EVENTOS EM JAVA USANDO SWING. George Gomes Cabral

MANIPULAÇÃO DE EVENTOS

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 5- Tratamento de Eventos de Manipulação de textos

Aula 12 POO 1 Interface Gráfica no Java. Profa. Elaine Faria UFU

Aplicações Gráficas com AWT

Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Java Deployment Course

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 4- Tratamento de Eventos em Interfaces Gráficas

Objetivos do Capítulo

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

JAVA. Marcio de Carvalho Victorino. Interface Gráfica em Java (GUI)

AULA 10 - CCT0024 Linguagem de Programação Objetivos da aula. Janelas para leitura e exibição de textos

Manipulação de Eventos

Introdução à Programação Gráfica em Java

Java Beans. Autores. Autores. Cláudio Geyer Marcelo de Medeiros Soares. 28/4/2005 Pg. 1. Informática UFRGS. Informática UFRGS

Java Avançado com acesso JDBC a Banco de Dados, Arquivos, Swing e Eventos

Introdução à Tecnologia Java 02/2012. Java Aula 02 15/08/2012. Celso Olivete Júnior.

Encerrando Introdução a Objetos e Classes Redefinição de Métodos (1)

Aula 2 Eventos do Mouse by Pearson Education do Brasil

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Prof. Msc. Vladimir Camelo

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof.

Processo Básico: OO + Eventos. Java First-Tier: Aplicações. Construção de Interface gráfica. Exemplo. Exemplo. Exemplo. Hierarquia de Composição

Java TM Applets. Java Deployment Course: Aula 3. por Jorge H. C. Fernandes DI-UFPE 30 de Abril de 1999

2. Competências Desenvolve sistemas com recurso a OOPs Compreede o conceito de programação paralela Implementa programação em redes de computadores

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

Encapsulamento. Separa a interface de um objeto dos detalhes de seu funcionamento interno. Caixa preta 2/27

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Model-View-Controller (MVC)

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Teste de Software: Existe Isto? Jorge Fernandes Junho de 2004

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Programação Gráfica em Java Alguns Componentes javax.swing

JFrame. JLabel : Utilizado como rótulo para exibição de texto e ícones. Interface Gráfica de JAVA - Graphical User Interface (GUI)

Curso de Java Módulo II Swing Fábio Mengue Centro de Computação - Unicamp

Prof. Fernando V. Paulovich 25 de julho de SCC Programação Orientada a Objetos

Palavras Reservadas da Linguagem Java

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Classe Interna (Inner)

POO29004 Programação Orientada a Objetos

Arquivos. Prof. Leonardo Barreto Campos 1

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça. Prática 02 Herança

Adding User Interaction

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Interfaces e Classes Internas

Programação Orientada a Objetos II

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Componentes Parte 02

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Classe Abstrata e Interface

Desenvolvimento Web II

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Interfaces e Classes Abstratas

Agenda. O que é um array. Declaração de um array. Instanciação de um array. Acessando os elementos de um array. O tamanho de um array (length)

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Introdução à linguagem JavaScript

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Responda às questões abaixo: 1 a Questão: Indique todos casos de não determinismo do AFN acima

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: LINGUAGENS PARA APLICAÇÃO COMERCIAL

Especialização em Engenharia de Software - CEUT

Interface Gráfica. LPG II Java Interface Gráfica AWT. Introdução. AWT - Abstract Window Toolkit

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Modelo de Componentes CORBA

Cada categoria de evento exige uma interface apropriada que deve ser implementada pela classe tratadora do evento.

Linguagem de Programação II Implementação

Tecnólogo em Análise e Desenvolvimento de Sistemas

Injeção de Dependências e Spring

Tiago Alves de Oliveira. Tiago Alves de Oliveira

Instituto de Informática Estrutura de Dados II

Jframe, JDialog ou JApplet

4 Conceito de Herança

Java Standard Edition (JSE)

Criação de Aplicações GUI. Java JFC / Swing

Introdução à Programação. Encapsulamento e Herança

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Java para Desktop. Programação Orientada à Objetos 2 JSE

Transcrição:

JavaBeans Java Deployment Course: Aula 8 por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999

Referências Sun Microsystems Documentos, Especificações, Tutoriais, Software, etc http://java.sun.com/products/beans http://java.sun.com/beans/spec.html http://java.sun.com/docs/books/tutorial/javabeans/in dex.html Flashline Comercialização de Beans http://www.flashline.com/components/javabeans.jsp

Java Beans Objetivos desta Aula Apresentar os conceitos que suportam a construção de Beans Reforçar conceitos do modelo de tratamento de eventos do AWT Criar e instalar no JBuilder um componente de software simples no formato de um Bean

Conteúdo O que é JavaBeans? Para quê Servem? Principais Conceitos Tratamento de Eventos no AWT Propriedades Instrospecção Exemplos

O que é JavaBeans? Um modelo de componente de software para Java Descrição auto-contida Reutilizável Facilita programação visual Pode ser inserido em um palete de componentes Consultas e configurações Rumo à construção e comercialização de software plug-and-play

Para quê Servem JavaBeans? Blocos de componentes de GUI Geradores de gráficos e relatórios Planilhas Instrumentos de aquisição e display de dados Calendários, Relógios, Agendas Editores

GUI de Alguns Beans Comercializados por Flashline - 1999

Principais Conceitos usados no Modelo Java Beans Eventos, Propriedades e Métodos JavaBeans divulgam um conjunto bem definido de eventos que produzem, e permitem que outros objetos registrem interesse na ocorrência destes eventos JavaBeans divulgam um conjunto bem definido de propriedades e métodos, permitindo que as propriedades sejam alteradas e os métodos sejam invocados Introspecção e Reflexividade Um JavaBean usa um padrão de codificação que permite que uma ferramenta de edição visual interaja com o componente e deduza/altere suas características (eventos, propriedades e métodos) em build-time ou run-time Persistência e Empacotamento Capacidade de armazenar, recuperar ou transmitir um componente através de uma mídia digital (disco, conexão de rede, etc)

Código de um Bean Minimalista import java.awt.*; import java.io.serializable; public class SimpleBean extends Canvas implements Serializable { private Color cor = Color.green; public SimpleBean() { setsize(60,40); setbackground(color.red); public void paint(graphics g) { g.setcolor(cor); g.fillrect(20, 5, 20, 30); public void setcor(color newcor) { cor = newcor; public Color getcor() { return cor;

Tratamento de Eventos

Hierarquia de Componentes e Eventos do AWT Component EventObject Button ScrollBar AWTEvent Canvas List AdjustementEvent ActionEvent CheckBox Choice Label TextEvent ComponentEvent ItemEvent Container TextComponent ContainerEvent WindowEvent Panel Window TextField TextArea FocusEvent InputEvent PaintEvent Frame Dialog KeyEvent MouseEvent

Padrão de Codificação para Eventos Categorias de evento devem ser criadas (ou reutilizadas) class <EVENTNAME>Event extends EventObject Interfaces de consumidores evento devem ser criadas (ou reutilizadas) interface <EVENTNAME>EventListener extends EventListener { public void <MÉTODONOTIFICADOR-1>(<EVENTNAME>Event event); public void <MÉTODONOTIFICADOR-2>(<EVENTNAME>Event event); Produtores de evento (JavaBeans) devem conter métodos para cadastrar consumidores de eventos public void add<eventname>listener(<eventname>listener); Consumidores de evento (usários do JavaBean) devem implementar a interface adequada class <CONSUMIDORDEEVENTOS> implements <EVENTNAME>Listener

Interfaces e Classes para Observadores de Eventos do AWT

EventListener actionperformed(actionevent) adjustementvaluechanged(adjustementevent) ActionListener ItemListener componenthidden(componentevent) componentmoved(componentevent) componentresized(componentevent) componentshown(componentevent) itemstatechanged(itemevent) AdjustementListener TextListener textvaluechanged(textevent) windowactivated(windowevent) windowclosed(windowevent) ComponentListener WindowListener windowclosing(windowevent) windowdeactivated(windowevent) windowdeiconified(windowevent) ComponentAdaper WindowAdapter windowiconified(windowevent) windowopened(windowevent) mousedragged(mouseevent) ContainerListener MouseMotionListener mousemoved(mouseevent) componentadded(containerevent) componentremoved(containerevent) ContainerAdapter MouseMotionAdapter focusgained(focusevent) focuslost(focusevent) mouseclicked(mouseevent) mouseentered(mouseevent) KeyListener FocusListener MouseListener mouseexited(mouseevent) mousepressed(mouseevent) mousereseased(mouseevent) KeyAdapter FocusAdapter MouseAdapter keypressed(keyevent) keyreleased(keyevent) keytyped(keyevent)

Propriedades em JavaBeans

Propriedades Atributos ou características que são publicamente expostas pelo componente Padrões de Design para propriedades permitem Descobrir que propriedades um Bean expõe Determinar atributos de leitura e gravação da propriedade Determinar o tipo da propriedade Mostrar o nome e valor das propriedades (em um formulário); Alterar o valor das propriedades (design-time) Categorias de Propriedades Simples, Indexadas, Ligadas, Restritas

Propriedades Simples Padrão de codificação public class MeuJavaBean { private <PropertyType> <PropertyName> = <defaultvalue>;... public <PropertyType> get<propertyname>(); public void set<propertyname>(< PropertyType> value);... Propriedades também podem ser computadas (em vez de armazenadas em variáveis)

Propriedades Indexadas Contem uma coleção de valores Dois Padrões de Codificação public class MeuJavaBean { public < PropertyType>[] get<propertyname>(); public void set<propertyname>(< PropertyType>[] value); public class MeuJavaBean { public < PropertyType> get<propertyname>(int index); public void set<propertyname>(int index, < PropertyType> value);

Propriedades Ligadas Usadas quando vários objetos precisam ser automaticamente notificados de mudanças no valor de uma propriedade Classes e interfaces envolvidas PropertyChangeListener PropertyChangeEvent PropertyChangeSupport

Classes e Interfaces para Propriedades Ligadas void propertychange(propertychangeevent) PropertyChangeListener Interface implementada pelo objeto que quer ser notificado PropertyChangeEvent Evento que contém informações sobre a propriedade que mudou e os valores antes e após a modificação Object getnewvalue() Object getoldvalue() Implementação básica de componente Object getpropagationid() que aceita -- reservado cadastramento e descadastramento String getpropertyname() de listeners interessados e os notifica das modificações void setpropagationid(object) O JavaBean pode herdar de PropertyChangeSupport ou internalizar um objeto desta classe. addpropertychangelistener(propertychangelistener) firepropertychange(string, Object, Object) removepropertychangelistener(propertychangelistener) PropertyChangeSupport

Padrão de Codificação para Beans com Propriedades Ligadas import java.beans.*; class MyButton extends Button { private PropertyChangeSupport changes = new PropertyChangeSupport(this); public void addpropertychangelistener(propertychangelistener l) { changes.addpropertychangelistener(l); public void removepropertychangelistener(propertychangelistener l) { changes.removepropertychangelistener(l); public void setlabel(string newlabel) { String oldlabel = label; label = newlabel; changes.firepropertychange("label", oldlabel, newlabel);

Listener de Propriedades Ligadas (Usando Adaptador) public class MyClass { MyButton button = new MyButton();... PropertyChangeAdapter adapter = new PropertyChangeAdapter();... button.addpropertychangelistener(adapter);... class PropertyChangeAdapter implements PropertyChangeListener { public void propertychange(propertychangeevent e) { reporter.reportchange(e);

Propriedades Restritas Uma mudança no valor da propriedade pode ser vetada por um ou mais VetoableChangeListeners Classes envolvidas VetoableChangeListener PropertyChangeEvent VetoableChangeSupport PropertyVetoException

Classes e Interfaces para Propriedades Restritas VetoableChangeListener Registra interesse em vetar propostas de mudanças de valores VetoableChangeSupport Implementação básica de componente que aceita cadastramento e descadastramento de listeners que podem vetar modificações O JavaBean pode herdar de VetoableChangeSupport ou internalizar um objeto desta classe PropertyVetoException Exceção levantada caso haja veto de algum listener

Padrão de Codificação para Propriedades Restritas class <BeanClassName> { private VetoableChangeSupport vetos = new VetoableChangeSupport(this); public void addvetoablechangelistener(vetoablechangelistener l) {.. public void removevetoablechangelistener(vetoablechangelistener l) {.. public void setpreco(int newpreco) throws PropertyVetoException { int oldpreco = price; // Notifica os observadores sobre a proposta de mudança. vetos.firevetoablechange("preco",..oldpreco..,..newpreco..); // Nenhum observador vetou a mudança. Prossegue com elas preco = newpreco; changes.firepropertychange("preco",..oldpreco..,..newpreco..));

Introspecção MeuJavaBean java.bean.instrospector getbeaninfo() java.bean.beaninfo

Objeto java.bean.beaninfo BeanDescriptor getbeandescriptor() BeanInfo[] getadditionalbeaninfo() MethodDescriptor[] getmethoddescriptors() PropertyDescriptor[] getpropertydescriptors() int getdefaultpropertyindex() EventSetDescriptor[] geteventsetdescriptors() int getdefaulteventindex() Image geticon(int iconkind)

Reflexividade (java.lang.reflect) Permite manipular classes, interfaces e objetos contidos na máquina virtual Usada na construção de depuradores, ferramentas de construção de GUI, browsers de classes Executar em run-time, várias operações que normalmente são programadas

Classes de Suporte a Reflexividade java.lang.reflect.array - métodos para criar e acessar arrays de forma dinâmica java.lang.reflect.class - representa informação sobre classes e interfaces java.lang.reflect.constructor - provê informações e acesso aos construtores de objetos de uma classe. Permite instanciar uma classe dinamicamente java.lang.reflect.field -provê informações e acesso dinâmico a um atributo de uma classe ou interface java.lang.reflect.method - provê informação e acesso a um método de uma classe ou interface. Permte que se crie e execute invocação dinâmica do método. java.lang.reflect.modifier - provê métodos e constantes que fornecem informação sobre os modificadores de acesso de uma classe e de seus atributos e métodos. java.lang.object -provê o método getclass()

Possibilidades de Uso de Reflexão Determinar a classe de um objeto Obter informação sobre modificadores da classe, seus métodos, campos, construtores e superclasses Observar quais constantes e métodos fazem parte de uma interface Carregar uma classe na máquina virtual, cujo nome só é conhecido em tempo de execução Ler e modificar o valor do campo de um objeto, mesmo que o nome do campo só seja conhecido em tempo de execução Invocar um método de um objeto, mesmo que o método só tenha sido conhecido em tempo de execução Criar um novo array cujo tamanho e tipo dos componentes so sejam conhecidos em runtime, e modificar os componentes do array

Outras Características de JavaBeans Editor de propriedades customizado Java Activation Framework - JAF Ajuste fino de serialização interface Externalizable Drag & Drop

Exercício Construa um SimpleBean e o insira na paleta de componentes do JBuilder