Bom dia ^^
Estou com dúvidas em um programa de gerenciamento dos correios que estou fazendo.
O programa possui uma classe abstrata chamada Correspondência.
O programa deve enviar Telegramas, Cartas, Sedex e Sedex10, listá-los e calcular o faturamento de todos individualmente. Cada uma dessas opções são classes que herdam a classe Correspondência.
Minha dúvida está em listar e calcular o faturamento, meu professor pediu para criar um vetor correspondencia e armazenar todas as informações nele (até aí beleza), mas depois pediu para listar separadamente, como irei saber qual parte do vetor é telegrama ou carta… se todas as informações estão num mesmo vetor? :s
Vou postar o código da classe correios para ilustrar melhor ^^
package trab;
import java.util.Scanner;
public class Correios {
private static final int MAX_CORRESPONDENCIAS = 30;
private int numCorrespondencias;
private Correspondencia correspondencias[];
public Correios(int MAX_CORRESPONDENCIAS) {
correspondencias = new Correspondencia[MAX_CORRESPONDENCIAS];
}
public Enderecavel dados_Enderecavel(String end) {
Enderecavel e = new Enderecavel();
Scanner in = new Scanner(System.in);
System.out.println("Nome do " + end + ": ");
e.setNome(in.nextLine());
System.out.println("Logradouro do " + end + ": ");
e.setLogradouro(in.nextLine());
System.out.println("Cidade do " + end + ": ");
e.setCidade(in.nextLine());
System.out.println("UF do " + end + ": ");
e.setUf(in.next());
System.out.println("CEP do " + end + "(sem pontos nem traços): ");
e.setCep(in.nextInt());
return e;
}
public void enviarTelegrama() throws IllegalAccessException {
Scanner in = new Scanner(System.in);
if (numCorrespondencias < MAX_CORRESPONDENCIAS) {
Telegrama t = new Telegrama();
t.setDestinatario(dados_Enderecavel("Destinatário"));
t.setRemetente(dados_Enderecavel("Remetente"));
System.out.println("Deseja confirmação de recebimento?\n <1> Sim \t <0> NÃO ");
t.setConfirmacaoRecebimento(in.nextInt() == 1);
System.out.println("Digite o número de páginas: ");
t.setNumPaginas(in.nextInt());
System.out.println("Digite o preço por página: ");
t.setPrecoPorPagina(in.nextFloat());
t.calcularPreco();
correspondencias[numCorrespondencias] = t;
numCorrespondencias++;
System.out.println("Telegrama enviado com sucesso!");
} else {
System.out.println("Erro ao enviar telegrama!\n Tente novamente.");
}
throw new IllegalAccessException("Erro Enviar Telegrama!");
}
public void enviarCarta() throws IllegalAccessException {
Scanner in = new Scanner(System.in);
if (numCorrespondencias < MAX_CORRESPONDENCIAS) {
Carta c = new Carta();
c.setDestinatario(dados_Enderecavel("Destinatário"));
c.setRemetente(dados_Enderecavel("Remetente"));
System.out.println("Deseja confirmação de recebimento?\n <1> Sim \t <0> NÃO ");
c.setConfirmacaoRecebimento(in.nextInt() == 1);
System.out.println("Digite o peso: ");
c.setPeso(in.nextInt());
System.out.println("Digite o preço por grama: ");
c.setPrecoPorGrama(in.nextFloat());
c.calcularPreco();
correspondencias[numCorrespondencias] = c;
numCorrespondencias++;
System.out.println("Carta enviada com sucesso!");
System.out.println(c);
} else {
System.out.println("Erro ao enviar carta!\n Tente novamente.");
}
}
public void enviarSedex() throws IllegalAccessException {
Scanner in = new Scanner(System.in);
if (numCorrespondencias < MAX_CORRESPONDENCIAS) {
Sedex s = new Sedex();
s.setDestinatario(dados_Enderecavel("Destinatário"));
s.setRemetente(dados_Enderecavel("Remetente"));
System.out
.println("Deseja confirmação de recebimento?\n <1> Sim \t <0> NÃO ");
s.setConfirmacaoRecebimento(in.nextInt() == 1);
System.out.println("Digite o peso: ");
s.setPeso(in.nextInt());
System.out.println("Digite o peso por grama: ");
s.setPesoPorGrama(in.nextFloat());
System.out.println("Digite o comprimento: ");
s.setComprimento(in.nextInt());
System.out.println("Digite a altura: ");
s.setAltura(in.nextInt());
System.out.println("Digite a largura");
s.setLargura(in.nextInt());
s.calcularPreco();
correspondencias[numCorrespondencias] = s;
numCorrespondencias++;
System.out.println("Sedex enviado com sucesso!");
} else {
System.out.println("Erro ao enviar Sedex!\n Tente novamente.");
}
}
public void enviarSedex10() throws IllegalAccessException {
Scanner in = new Scanner(System.in);
if (numCorrespondencias < MAX_CORRESPONDENCIAS) {
Sedex10 s10 = new Sedex10();
s10.setDestinatario(dados_Enderecavel("Destinatário"));
s10.setRemetente(dados_Enderecavel("Remetente"));
System.out.println("Deseja confirmação de recebimento?\n <1> Sim \t <0> NÃO ");
s10.setConfirmacaoRecebimento(in.nextInt() == 1);
System.out.println("Digite o peso: ");
s10.setPeso(in.nextInt());
System.out.println("Digite o peso por grama: ");
s10.setPesoPorGrama(in.nextFloat());
System.out.println("Digite o comprimento: ");
s10.setComprimento(in.nextInt());
System.out.println("Digite a altura: ");
s10.setAltura(in.nextInt());
System.out.println("Digite a largura: ");
s10.setLargura(in.nextInt());
System.out.println("Digite a taxa: ");
s10.setTaxa(in.nextFloat());
s10.calcularPreco();
correspondencias[numCorrespondencias] = s10;
numCorrespondencias++;
System.out.println("Sedex10 enviado com sucesso!");
} else {
System.out.println("Erro ao enviar Sedex10!\n Tente novamente.");
}
}
public void listarTelegramas() {
int i;
for (i = 0; i < numCorrespondencias; i++) {
System.out.println(correspondencias[i]);
}
}
public void listarCartas() {
int i;
for (i = 0; i < numCorrespondencias; i++) {
System.out.println(correspondencias[i]);
}
}
public void listarSedex() {
int i;
for (i = 0; i < numCorrespondencias; i++) {
System.out.println(correspondencias[i]);
}
}
public void listarSedex10() {
int i;
for (i = 0; i < numCorrespondencias; i++) {
System.out.println(correspondencias[i]);
}
}
public float calcularFaturamento() {
int i;
float cont = 0;
for (i = 0; i < numCorrespondencias; i++) {
cont += correspondencias[i].calcularPreco();
}
for (i = 0; i < numCorrespondencias; i++) {
cont += correspondencias[i].calcularPreco();
}
for (i = 0; i < numCorrespondencias; i++) {
cont += correspondencias[i].calcularPreco();
}
for (i = 0; i < numCorrespondencias; i++) {
cont += correspondencias[i].calcularPreco();
}
return cont;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Correios cs = new Correios(MAX_CORRESPONDENCIAS);
int op;
do {
System.out.println("\n\tCorreios\n");
System.out.println("<1> Enviar Telegrama");
System.out.println("<2> Enviar Carta");
System.out.println("<3> Enviar Sedex");
System.out.println("<4> Enviar Sedex10");
System.out.println("<5> Listar Telegramas");
System.out.println("<6> Listar Cartas");
System.out.println("<7> Listar Sedex");
System.out.println("<8> Listar Sedex10");
System.out.println("<9> Calcular Faturamento");
System.out.println("<0> Sair do Programa");
System.out.print("Opção: ");
switch (op = in.nextInt()) {
case 1:
System.out.println("\nEnviar Telegrama");
try{
cs.enviarTelegrama();
}catch(IllegalAccessException e){
System.out.println("Não há mais espaço no vetor!");
}
break;
case 2:
System.out.println("\nEnviar Carta");
try{
cs.enviarCarta();
}catch(IllegalAccessException e){
System.out.println("Não há mais espaço no vetor!");
}
break;
case 3:
System.out.println("\nEnviar Sedex");
try{
cs.enviarSedex();
}catch(IllegalAccessException e){
System.out.println("Não há mais espaço no vetor!");
}
break;
case 4:
System.out.println("\nEnviar Sedex10");
try{
cs.enviarSedex10();
}catch(IllegalAccessException e){
System.out.println("Não há mais espaço no vetor!");
}
break;
case 5:
System.out.println("\nListar Telegramas");
cs.listarTelegramas();
break;
case 6:
System.out.println("\nListar Cartas");
cs.listarCartas();
break;
case 7:
System.out.println("\nListar Sedex");
cs.listarSedex();
break;
case 8:
System.out.println("\nListar Sedex10");
cs.listarSedex10();
break;
case 9:
System.out.printf("\nCalcular Faturamento: R$ %.2f\n",
cs.calcularFaturamento());
break;
case 0:
break;
default:
System.out.println("\nOpção inválida!");
}
} while (op != 0);
}
}
Do jeito que está acima, para cada método ele irá listar e calcular o faturamento do vetor inteiro! :s
Ah… esqueci de mencionar, o método calcular faturamento da classe Correspondência também é abstrato!
Desde já agradeço quem puder me auxiliar nesse projeto ^^