Classes Java para Passagens Nacionais e Internacionais

Computer science5.81 KB

O código a seguir apresenta um sistema de passagens desenvolvido em Java, utilizando herança e polimorfismo. A classe abstrata Passagem reúne os atributos comuns, enquanto as classes PassagemNacional e PassagemInternacional especializam o cálculo do valor total.

Classe abstrata Passagem

A classe Passagem define os atributos básicos de uma passagem, como número, nome do passageiro, origem, destino, quantidade, valor da passagem, tarifa, serviço de bordo e seu valor.

public abstract class Passagem {
private int numero;
private String nome;
private String origem;
private String destino;
private int quantidade;
private float valorPassagem;
private float tarifa;
private boolean servicoBordo;
private float valorServicoBordo;

public Passagem(int numero, String nome, String origem, String destino, int quantidade, float valorPassagem, float tarifa, boolean servicoBordo, float valorServicoBordo) {
this.numero = numero;
this.nome = nome;
this.origem = origem;
this.destino = destino;
this.quantidade = quantidade;
this.valorPassagem = valorPassagem;
this.tarifa = tarifa;
this.servicoBordo = servicoBordo;
this.valorServicoBordo = valorServicoBordo;
}

public int getNumero() {
return numero;
}

public void setNumero(int numero) {
this.numero = numero;
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

public String getOrigem() {
return origem;
}

public void setOrigem(String origem) {
this.origem = origem;
}

public String getDestino() {
return destino;
}

public void setDestino(String destino) {
this.destino = destino;
}

public int getQuantidade() {
return quantidade;
}

public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}

public float getValorPassagem() {
return valorPassagem;
}

public void setValorPassagem(float valorPassagem) {
this.valorPassagem = valorPassagem;
}

public float getTarifa() {
return tarifa;
}

public void setTarifa(float tarifa) {
this.tarifa = tarifa;
}

public boolean isServicoBordo() {
return servicoBordo;
}

public void setServicoBordo(boolean servicoBordo) {
this.servicoBordo = servicoBordo;
}

public float getValorServicoBordo() {
return valorServicoBordo;
}

public void setValorServicoBordo(float valorServicoBordo) {
this.valorServicoBordo = valorServicoBordo;
}

public float valorTotal() {
return this.quantidade * (this.valorPassagem + this.tarifa + (this.servicoBordo ? this.valorServicoBordo : 0));
}

public void mostrarDados() {
System.out.println("Numero " + numero +
"\nNome " + nome +
"\nOrigem " + origem +
"\nDestino " + destino +
"\nQuantidade " + quantidade +
"\nValor da Passagem " + valorPassagem +
"\nTarifa " + tarifa +
"\nServico de Bordo ? " + (servicoBordo ? "sim" : "nao") +
"\nValor do Servico de Bordo " + valorServicoBordo +
"\nValor Total " + this.valorTotal());
}
}

Classe PassagemNacional

A classe PassagemNacional herda de Passagem e acrescenta o atributo desconto, aplicado ao valor total quando a tarifa é maior que zero.

public class PassagemNacional extends Passagem {
private float desconto;

public PassagemNacional(int numero, String nome, String origem, String destino, int quantidade, float valorPassagem, float tarifa, boolean servicoBordo, float valorServicoBordo, float desconto) {
super(numero, nome, origem, destino, quantidade, valorPassagem, tarifa, servicoBordo, valorServicoBordo);
this.desconto = desconto;
}

public float getDesconto() {
return desconto;
}

public void setDesconto(float desconto) {
this.desconto = desconto;
}

public float valorTotal() {
float resp;
if (super.getTarifa() > 0) {
resp = super.valorTotal() * (1 - this.desconto / 100);
} else {
resp = super.valorTotal();
}
return resp;
}

public void mostrarDados() {
System.out.println("Passagem Nacional");
super.mostrarDados();
System.out.println("Desconto : " + this.desconto + "\nValor total em Real");
}
}

Classe PassagemInternacional

A classe PassagemInternacional também herda de Passagem, mas converte o valor total para dólar utilizando a cotação do dólar.

public class PassagemInternacional extends Passagem {
private float cotacaoDolar;

public PassagemInternacional(int numero, String nome, String origem, String destino, int quantidade, float valorPassagem, float tarifa, boolean servicoBordo, float valorServicoBordo, float cotacaoDolar) {
super(numero, nome, origem, destino, quantidade, valorPassagem, tarifa, servicoBordo, valorServicoBordo);
this.setCotacaoDolar(cotacaoDolar);
}

public float getCotacaoDolar() {
return cotacaoDolar;
}

public void setCotacaoDolar(float cotacaoDolar) {
this.cotacaoDolar = cotacaoDolar;
}

public float valorTotal() {
return super.valorTotal() / this.cotacaoDolar;
}

public void mostrarDados() {
System.out.println("Passagem Internacional");
super.mostrarDados();
System.out.println("Cotacao do Dolar : " + this.cotacaoDolar + "\nValor total em Dolar");
}
}

Classe de teste MovimentoPassagem

A classe MovimentoPassagem cria duas passagens, exibe seus dados, altera alguns atributos e exibe novamente as informações.

public class MovimentoPassagem {

public static void main(String[] args) {
PassagemNacional pn = new PassagemNacional((int) 1, "Maria da Paz", "Petrolina", "Recife", (int) 2, (float) 500, (float) 20, true, (float) 30, (float) 5);
PassagemInternacional pi = new PassagemInternacional((int) 2, "Carlos Antunes", "Sao Paulo", "New York", (int) 2, (float) 1000, (float) 30, false, (float) 50, (float) 2.06);
pn.mostrarDados();
pi.mostrarDados();
pn.setQuantidade(1);
pn.setDesconto((float) 3);
pi.setServicoBordo(true);
pi.setCotacaoDolar((float) 2.16);
pn.mostrarDados();
pi.mostrarDados();
}
}

Download

PDF Word HTML