Mini-prova

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);
       }