Tiago Massoni
Centro de Informática
Universidade Federal de Pernambuco
Recife, 01 de agosto de 2005
1. Considere a seguinte classe definida em Java, que define um aplicativo gráfico front-end para uma máquina de vendas de doces:
public class MinhaMaquina extends Frame implements ActionListener{
private MaquinaDeVenda mv;
private Button botaoDinheiro, botaoChocolate, botaoAmendoim;
private TextField campo,resposta;
public MinhaMaquina(){
mv = new MaquinaDeVenda();
botaoDinheiro = new Button("Vender");
botaoChocolate = new Button("Chocolate");
botaoAmendoim = new Button("Amendoim");
campo = new TextField();resposta = new TextField();
this.add(botaoDinheiro); this.add(botaoChocolate);
this.add(botaoChocolate); this.add(campo);this.add(resposta);
this.setLayout(new FlowLayout());
this.setSize(new Dimension(302, 221)); this.show();
...
}
...
}
Complemente a classe e o construtor acima com o código necessário para que o objeto da classe MinhaMaquina faça a interface entre o usuário, quando clicar nos seus botões, e os serviços do objeto MaquinaDeVenda. Este oferece dois métodos:
Os botões botaoChocolate e botaoAmendoim definem a escolha do produto para a venda atual, caso sejam clicados. Considere que um objeto MaquinaDeVenda define a opção Chocolate como default. Já o botão botaoDinheiro deve realizar a venda e mostrar a mensagem resultante na caixa de texto resposta. Lembre-se que todo botão tem o método addActionListener, que recebe um parâmetro da interface abaixo, implementada por MinhaMaquina. O método setText pode ser usado para escrever em um campo de texto. O botão fonte (origem) de um evento como ActionEvent pode ser obtido através do método getActionCommand, que retorna uma determinada String identificando o botão clicado (considere que a String identificadora é o título do botão).
public interface ActionListener extends
EventListener {
public void actionPerformed(ActionEvent e);
}