A Orientação a Objetos está presente em diversos programas que utilizamos em nosso cotidiano. Muitas vezes, nem a percebermos. Você viu no estudo da disciplina Programação II que podemos modelar diversos problemas em termos de classes e objetos.
Nesta Atividade Mapa, você deve desenvolver um sistema de controle de filas de um banco fictício utilizando a linguagem Java. Considere que neste banco há apenas uma agência e, esta agência, possui 4 caixas de atendimento.
Os atendimentos a clientes podem ser divididos em 3 categorias: -
Preferencial: para pessoas que possuem atendimento prioritário assegurado por lei;
- Rápido: para pessoas que farão até 3 operações no caixa;
- Comum: para os demais atendimentos.
O trabalho que você deve desenvolver terá 3 etapas:
1. Construção da interface, de acordo com o modelo abaixo. Não precisa ficar igual, mas precisa ter os mesmos elementos.
2. Criação da fila de atendimento.
Semelhante às máquinas de geração de senhas, há três botões para os clientes: Preferencial, Rápido e Comum. O cliente aperta o botão de acordo com o seu atendimento, sua senha é gerada e colocada em uma fila.
A senha deve ter a letra do tipo do atendimento (P, R ou C), seguida de um número sequencial. A sequência é a mesma para os diferentes tipos.
Por exemplo, se chegarem 4 clientes, 1 sendo preferencial, 2 comuns e 1 atendimento rápido, nesta ordem, a fila será:
P-1, C-2, C-3, R-4.
Haverá uma única fila que será implementada com ArrayList, contendo todas as senhas geradas, que serão objetos da classe Senha, que você irá criar.
A classe senha precisa apenas de dois atributos: o tipo e o número.
3. Realização dos atendimentos.
Haverá 4 caixas para atendimentos, que atenderão da seguinte forma:
- Caixa 1: realiza os atendimentos preferenciais. Se não houver atendimentos preferenciais na fila, atende o próximo (rápido ou comum).
- Caixas 2 e 3: atendem primeiro as senhas de atendimento rápido. Se não houver atendimento rápido, atendem o próximo da fila (prioritário ou comum).
- Caixa 4: realiza os atendimentos comum. Se não houver atendimentos comuns na fila, atende o próximo (rápido ou prioritário).
Cada caixa, tem o seu botão. Ao clicar no seu respectivo botão, este, deverá buscar a próxima senha a ser atendida. Na sequência, deverá exibir no painel a senha e o caixa. Por fim, o caixa deverá retirar a senha da fila. Se não houver nenhuma senha na fila, não faz nada.
Soluções para a tarefa
Resposta:
public class Senha {
private String tipo;
private int numero;
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
}
public class Painel extends javax.swing.JFrame {
//Cria a lista com o objeto senha
private int num = 1;
private List<Senha> senhas = new ArrayList<>();
//Cadastra uma nova senha com o tipo
private void NovaSenha(String t){
Senha s = new Senha();
s.setNumero(num++);
s.setTipo(t);
senhas.add(s);
lblSuaSenha.setText(s.getTipo() + "-" + s.getNumero());
}
private void AtendeSenha(int c, String t){
//Procura o tipo, se achar atende, remove e sai
for(int i=0; i<senhas.size();i++){
if (senhas.get(i).getTipo().equals(t)){
lblSenha.setText(senhas.get(i).getTipo() + "-" + senhas.get(i).getNumero());
lblCaixa.setText("Caixa " + c);
senhas.remove(i);
return;
}
}
//Se não encontrado atende o primeiro da lista
if (senhas.size() > 0){
lblSenha.setText(senhas.get(0).getTipo() + "-" + senhas.get(0).getNumero());
lblCaixa.setText("Caixa "+ c);
senhas.remove(0);
}
}
private void butComumActionPerformed(java.awt.event.ActionEvent evt) {
NovaSenha("C");
}
private void butRapidoActionPerformed(java.awt.event.ActionEvent evt) {
NovaSenha("R");
}
private void butPrioritarioActionPerformed(java.awt.event.ActionEvent evt) {
NovaSenha("P");
}
private void butCaixa1ActionPerformed(java.awt.event.ActionEvent evt) {
AtendeSenha(1, "P");
}
private void butCaixa2ActionPerformed(java.awt.event.ActionEvent evt) {
AtendeSenha(2, "R");
}
private void butCaixa3ActionPerformed(java.awt.event.ActionEvent evt) {
AtendeSenha(3, "R");
}
private void butCaixa4ActionPerformed(java.awt.event.ActionEvent evt) {
AtendeSenha(4, "C");
}
Resposta:
Estarei colocando o código e ensinando como você ira adiciona-lo ao netbeans.
Explicação:
Crie um novo projeto Aplicação Java, coloque o nome que desejar no projeto e não esqueça de desmarcar a opção "Criar Classe Principal".
Clique com o botão direito em cima pacotes de código fonte > Novo > Classe Java coloque o nome: "Senha" , apague tudo e insira o código a seguir:
public class Senha {
private String tipo;
private int numero;
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
}
Feito isso, clique novamente com o botão direito em cima pacotes de código fonte > Novo > Form JFrame.... Coloque o nome de Painel, Depois COLOQUE AS SEGUINTES PARTES DO CÓDIGO EM SEUS RESPECTIVOS LUGARES (em negrito estão as partes que são criadas automaticamente pelo netbeans para vc usar como referencia) Lembrando que você terá que montar a parte gráfica:
import java.util.ArrayList;
import java.util.List;
public class Painel extends javax.swing.JFrame {
private int num = 1;
private List<Senha> senhas = new ArrayList<>();
private void ProximaSenha(String t){
Senha s1 = new Senha();
s1.setNumero(num++);
s1.setTipo(t);
senhas.add(s1);
txtSuaSenha.setText(s1.getTipo() + "-" + s1.getNumero());
}
private void AtendeSenha(int c, String t){
for(int i=0; i<senhas.size(); i++){
if (senhas.get(i).getTipo().equals(t)){
lblSenha.setText(senhas.get(i).getTipo() + "-" + senhas.get(i).getNumero());
lblCaixa.setText("Caixa " + c);
senhas.remove(i);
return;
}
}
if (senhas.size() > 0){
lblSenha.setText(senhas.get(0).getTipo() + "-" + senhas.get(0).getNumero());
lblCaixa.setText("Caixa "+ c);
senhas.remove(0);
}
}
public Painel() {
initComponents();
}
@SuppressWarnings("unchecked")
Generated Code
private void btComumActionPerformed(java.awt.event.ActionEvent evt) {
ProximaSenha("C");
}
private void btRapidoActionPerformed(java.awt.event.ActionEvent evt) {
ProximaSenha("R");
}
private void btPrioritarioActionPerformed(java.awt.event.ActionEvent evt) {
ProximaSenha("P");
}
private void btCaixa1ActionPerformed(java.awt.event.ActionEvent evt) {
AtendeSenha(1, "P");
}
private void btCaixa2ActionPerformed(java.awt.event.ActionEvent evt) {
AtendeSenha(2, "R");
}
private void btCaixa3ActionPerformed(java.awt.event.ActionEvent evt) {
AtendeSenha(3, "R");
}
private void btCaixa4ActionPerformed(java.awt.event.ActionEvent evt) {
AtendeSenha(4, "C");
}
CRIE A INTERFACE DO PROGRAMA E ALTERE OS NOMES CONFORME A LISTA ABAIXO
// Variables declaration - do not modify
private javax.swing.JButton btCaixa1;
private javax.swing.JButton btCaixa2;
private javax.swing.JButton btCaixa3;
private javax.swing.JButton btCaixa4;
private javax.swing.JButton btComum;
private javax.swing.JButton btPrioritario;
private javax.swing.JButton btRapido;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel4;
private javax.swing.JLabel lblCaixa;
private javax.swing.JLabel lblSenha;
private javax.swing.JTextField txtSuaSenha;
// End of variables declaration
caso precise, mande uma msg q envio por email pronto.