Prévia do material em texto
UNIVERSIDADE VEIGA DE ALMEIDA Entrega da Avaliação – POO I [AVA 2] FILIPE GONÇALVES ISQUIERDO– 20191302246 PROGRAMAÇÃO ORIENTADA A OBJETO I Prof.: MARCO AURELIO NOVAES ESTEVES Rio de Janeiro 2020.3 Trabalho apresentado no curso Superior em Sistemas de Informação da Universidade Veiga de Almeida, como requisito para obtenção do certificado de PROGRAMAÇÃO ORIENTADA A OBJETOS I Professor Orientador: MARCO AURELIO NOVAES ESTEVES 10 Sumário Introdução 4 Conteúdo 5 Documentação do projeto com o gráfico hierárquico das classes 5 Codificação de todas as classes e aplicação 6 Programa Principal “Aplicação” 6 Super Classe “Transporte” 7 Sub Classe “Navio” 11 Sub Classe “Aviao” 16 Resultados dos testes realizados com o projeto 19 Conclusão do trabalho 29 Introdução Este trabalho visa demonstrar o uso de vetores e matrizes de objetos facilitando o desenvolvimento do projeto, diminuindo assim a complexidade e favorecendo a manutenção do sistema. A utilização da SuperClasse "Transporte" atende às necessidades das SubClasses "Avião e Navio", com todas as funcionalidades comuns às classes similares. Conteúdo Documentação do projeto com o gráfico hierárquico das classes Codificação de todas as classes e aplicação Programa Principal “Aplicação” package aplicacao; import java.util.Scanner; import transporte.*; public class Aplicacao { public static void main(String[] args) { Aviao a[] = new Aviao[10]; Navio n[] = new Navio[10]; System.out.println("\n----- Aviões \n"); for (int i=0; i<a.length; i++) { a[i] = new Aviao(); Scanner scan = new Scanner(System.in); try{ System.out.print("\nPercentual: "); Double percentual = scan.nextDouble(); a[i].entrada(); a[i].reajustarPreco(percentual); a[i].imprimir(); }catch(Exception e){ System.out.print("Tipo Inválido. Atribuição Automática de Valor Default de 4% "); Double percentual = 4.0; a[i].entrada(); a[i].reajustarPreco(percentual); a[i].imprimir(); } Aviao av01 = new Aviao(); av01.cadastrar(100, 50, 4250, "Grub", "01/01/1985"); av01.imprimir(); } System.out.println("\n----- Navios \n"); for (int i=0; i<n.length; i++) { n[i] = new Navio(); n[i].entrada(); n[i].imprimir(); System.out.println("Imprimindo a Relação passageiros por Tripulantes: " + n[i].passageirosPorTripulantes()); } nav01.cadastrar(500, 150, 400f, "Grub", "25/04", 10); nav01.imprimir(); } } Super Classe “Transporte” package transporte; import java.util.Scanner; public class Transporte { protected int capacidadeTanque, numeroPassageiros; protected double preco; public int getCapacidadeTanque() { return capacidadeTanque; } public void setCapacidadeTanque(int capacidadeTanque) { this.capacidadeTanque = capacidadeTanque; } public int getNumeroPassageiros() { return numeroPassageiros; } public void setNumeroPassageiros(int numeroPassageiros) { this.numeroPassageiros = numeroPassageiros; } public double getPreco() { return preco; } public void setPreco(double preco) { this.preco = preco; } public Transporte() { } public Transporte(int capacidadeTanque) { this.capacidadeTanque = capacidadeTanque; } public Transporte(int capacidadeTanque, int numeroPassageiros) { this.capacidadeTanque = capacidadeTanque; this.numeroPassageiros = numeroPassageiros; } public Transporte(double preco) { this.preco = preco; } public Transporte(int capacidadeTanque, int numeroPassageiros, double preco) { this.capacidadeTanque = capacidadeTanque; this.numeroPassageiros = numeroPassageiros; this.preco = preco; } public void cadastrar (int capacidadeTanque, int numeroPassageiros, double preco) { setCapacidadeTanque(capacidadeTanque); setNumeroPassageiros(numeroPassageiros); setPreco(preco); } public void imprimir() { System.out.println(); System.out.println("Capacidade do Tanque: " +getCapacidadeTanque()); System.out.println("Número de passageiros: " +getNumeroPassageiros()); System.out.println("Preco: " +getPreco()); } int indice = 0; public void entrada () { Scanner scan = new Scanner(System.in); while(indice == 0){ try { System.out.print("\n\nDigite a capacidade do tanque: "); setCapacidadeTanque(scan.nextInt()); indice = 1; }catch(Exception e){ System.out.print("Valor Incorreto " +e +"\n"); entrada(); } } while(indice == 1){ try{ System.out.print("Digite o número de passageiros: "); setNumeroPassageiros(scan.nextInt()); indice = 2; }catch(Exception e){ System.out.print("Valor de passageiros invalidos " +e + "\n"); indice = 1; entrada(); } } while(indice == 2){ try{ System.out.print("Digite o preço: "); setPreco(scan.nextDouble()); indice = 3; }catch(Exception e){ System.out.print("Valor de Preço " +e + "\n"); // System.out.print("Digite o número de passageiros: "); indice = 2; entrada(); } } } } Sub Classe “Navio” package transporte; import java.util.Scanner; public class Navio extends Transporte { private String nome, dataLancamento; private int numeroTripulantes; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getDataLancamento() { return dataLancamento; } public void setDataLancamento(String dataLancamento) { this.dataLancamento = dataLancamento; } public int getNumeroTripulantes() { return numeroTripulantes; } public void setNumeroTripulantes(int numeroTripulantes) { this.numeroTripulantes = numeroTripulantes; } public void cadastrar (int capacidadeTanque, int numeroPassageiros, double preco, String nome, String dataLancamento, int numeroTripulantes) { super.cadastrar(capacidadeTanque,numeroPassageiros,preco); setNome(nome); setDataLancamento(dataLancamento); setNumeroTripulantes(numeroTripulantes); } public Navio() { } public Navio(String nome) { this.nome = nome; } public Navio(String nome, String dataLancamento) { this.nome = nome; this.dataLancamento = dataLancamento; } public Navio(String nome, String dataLancamento, int numeroTripulantes) { this.nome = nome; this.dataLancamento = dataLancamento; this.numeroTripulantes = numeroTripulantes; } public Navio(String nome, String dataLancamento, int numeroTripulantes, int capacidadeTanque, int numeroPassageiros, double preco) { super(capacidadeTanque, numeroPassageiros, preco); this.nome = nome; this.dataLancamento = dataLancamento; this.numeroTripulantes = numeroTripulantes; } @Override public void imprimir () { super.imprimir(); System.out.println("Nome: " +getNome()); System.out.println("Data Lançamento: " +getDataLancamento()); System.out.println("Número de Tripulantes: " +getNumeroTripulantes()); } @Override public void entrada() { Scanner scan = new Scanner(System.in); super.entrada(); while(indice == 3){ try{ System.out.print("Digite o Nome: "); setNome(scan.nextLine()); indice = 4; }catch(Exception e){ System.out.print("Nome Invalidos " +e + "\n"); indice = 3; entrada(); } } while(indice == 4){ try{ System.out.print("Digite a Data de Lançamento: "); setDataLancamento(scan.nextLine()); indice = 5; }catch(Exception e){ System.out.print("Data Invalida " +e + "\n"); indice = 4; entrada(); } }while(indice == 5){ try{ System.out.print("Digite o número de tripulantes: "); setNumeroTripulantes(scan.nextInt()); if(this.getNumeroTripulantes()>0){ indice = 0; }else{ System.out.print("Valor menor que 1 (um) de Tripulantes \n"); indice = 5; this.entrada(); } }catch(Exception e){ System.out.print("Valor de Tripulantes Invalidos " +e + "\n"); indice = 5; this.entrada(); } } } public float passageirosPorTripulantes(){ return getNumeroPassageiros()/getNumeroTripulantes(); } } Sub Classe “Aviao” package transporte; import java.util.Scanner; public class Aviao extends Transporte { private String prefixo, dataRevisao; public String getPrefixo() { return prefixo; } public void setPrefixo(String prefixo) { this.prefixo = prefixo; } public String getDataRevisao() { return dataRevisao; } public void setDataRevisao(String dataRevisao) { this.dataRevisao = dataRevisao; } public Aviao() { } public Aviao(String prefixo) {this.prefixo = prefixo; } public Aviao(String prefixo, String dataRevisao) { this.prefixo = prefixo; this.dataRevisao = dataRevisao; } public Aviao(double preco) { super(preco); } public Aviao(int capacidadeTanque, int numeroPassageiros, double preco) { super(capacidadeTanque, numeroPassageiros, preco); } public void cadastrar (int capacidadeTanque, int numeroPassageiros, double preco, String prefixo, String dataRevisao) { super.cadastrar(capacidadeTanque,numeroPassageiros,preco); setPrefixo(prefixo); setDataRevisao(dataRevisao); } @Override public void imprimir () { super.imprimir(); System.out.println("Prefixo: " +getPrefixo()); System.out.println("Data da revisão: " +getDataRevisao()); } @Override public void entrada() { Scanner scan = new Scanner(System.in); super.entrada(); System.out.print("Digite o Prefixo: "); setPrefixo(scan.nextLine()); System.out.print("Digite a Data da Revisão: "); setDataRevisao(scan.nextLine()); } public void reajustarPreco(double percentual) { setPreco( getPreco() + (getPreco() * (percentual/100))); } } Resultados dos testes realizados com o projeto: run: ----- Aviões ---- Defina o Percentual: 15 Digite a capacidade do tanque: 1500 Digite o número de passageiros: 250 Digite o preço: 25 Digite o Prefixo: iguacu Digite a Data da Revisão: 12/04/2021 Capacidade do Tanque: 1500 Número de passageiros: 250 Preco: 28.75 Prefixo: iguacu Data da revisão: 12/04/2021 Defina o Percentual: 20 Digite a capacidade do tanque: 500 Digite o número de passageiros: 0 Digite o preço: 50,45 Digite o Prefixo: Vxien Digite a Data da Revisão: 05/05/2020 Capacidade do Tanque: 500 Número de passageiros: 0 Preco: 60.540000000000006 Prefixo: Vxien Data da revisão: 05/05/2020 Defina o Percentual: 50 Digite a capacidade do tanque: 46 Digite o número de passageiros: 100 Digite o preço: 120 Digite o Prefixo: GUi Digite a Data da Revisão: 06/12/2019 Capacidade do Tanque: 46 Número de passageiros: 100 Preco: 180.0 Prefixo: GUi Data da revisão: 06/12/2019 Defina o Percentual: 100 Digite a capacidade do tanque: 60 Digite o número de passageiros: 48 Digite o preço: 49 Digite o Prefixo: FAUNA Digite a Data da Revisão: 09/08/2022 Capacidade do Tanque: 60 Número de passageiros: 48 Preco: 98.0 Prefixo: FAUNA Data da revisão: 09/08/2022 Defina o Percentual: 79 Digite a capacidade do tanque: 12 Digite o número de passageiros: 90 Digite o preço: 100 Digite o Prefixo: BrZi Digite a Data da Revisão: 02/02/2023 Capacidade do Tanque: 12 Número de passageiros: 90 Preco: 179.0 Prefixo: BrZi Data da revisão: 02/02/2023 Defina o Percentual: 80 Digite a capacidade do tanque: 78 Digite o número de passageiros: 120 Digite o preço: 28,75 Digite o Prefixo: DUdl Digite a Data da Revisão: 07/11/2020 Capacidade do Tanque: 78 Número de passageiros: 120 Preco: 51.75 Prefixo: DUdl Data da revisão: 07/11/2020 Defina o Percentual: 95 Digite a capacidade do tanque: 150 Digite o número de passageiros: 0 Digite o preço: 90 Digite o Prefixo: Horo Digite a Data da Revisão: 30/07/2020 Capacidade do Tanque: 150 Número de passageiros: 0 Preco: 175.5 Prefixo: Horo Data da revisão: 30/07/2020 Defina o Percentual: 25 Digite a capacidade do tanque: 40 Digite o número de passageiros: 10 Digite o preço: 0,50 Digite o Prefixo: Ale Digite a Data da Revisão: 30/02/2030 Capacidade do Tanque: 40 Número de passageiros: 10 Preco: 0.625 Prefixo: Ale Data da revisão: 30/02/2030 Defina o Percentual: 36 Digite a capacidade do tanque: 800 Digite o número de passageiros: 64 Digite o preço: 1500 Digite o Prefixo: Prog Digite a Data da Revisão: 12/12/2025 Capacidade do Tanque: 800 Número de passageiros: 64 Preco: 2040.0 Prefixo: Prog Data da revisão: 12/12/2025 Defina o Percentual: 100 Digite a capacidade do tanque: 560 Digite o número de passageiros: 10 Digite o preço: 81 Digite o Prefixo: Prtss Digite a Data da Revisão: 25/07/2020 Capacidade do Tanque: 560 Número de passageiros: 10 Preco: 162.0 Prefixo: Prtss Data da revisão: 25/07/2020 ----- Navios ---- Digite a capacidade do tanque: 500 Digite o número de passageiros: 50 Digite o preço: 45 Digite o Nome: BRASIL Digite a Data de Lançamento: 12/12/2019 Digite o número de tripulantes: 10 Capacidade do Tanque: 500 Número de passageiros: 10 Preco: 45.0 Nome: BRASIL Data Lançamento: 12/12/2019 Número de Tripulantes: 50 Imprimindo a Relação passageiros por Tripulantes: 5.0 Digite a capacidade do tanque: 10000 Digite o número de passageiros: 10 Digite o preço: 250 Digite o Nome: AVI200 Digite a Data de Lançamento: 01/02/2020 Digite o número de tripulantes: 4 Capacidade do Tanque: 10000 Número de passageiros: 10 Preco: 250.0 Nome: AVI200 Data Lançamento: 01/02/2020 Número de Tripulantes: 4 Imprimindo a Relação passageiros por Tripulantes: 2.0 Digite a capacidade do tanque: 780 Digite o número de passageiros: 100 Digite o preço: 400 Digite o Nome: BRZAV1 Digite a Data de Lançamento: 02/03/2019 Digite o número de tripulantes: 10 Capacidade do Tanque: 780 Número de passageiros: 100 Preco: 400.0 Nome: BRZAV1 Data Lançamento: 02/03/2019 Número de Tripulantes: 10 Imprimindo a Relação passageiros por Tripulantes: 10.0 Digite a capacidade do tanque: 900 Digite o número de passageiros: 40 Digite o preço: 2,50 Digite o Nome: VAREJO Digite a Data de Lançamento: 25/11/2019 Digite o número de tripulantes: 6 Capacidade do Tanque: 900 Número de passageiros: 40 Preco: 2.5 Nome: VAREJO Data Lançamento: 25/11/2019 Número de Tripulantes: 6 Imprimindo a Relação passageiros por Tripulantes: 6.0 Digite a capacidade do tanque: 82000 Digite o número de passageiros: 300 Digite o preço: 45 Digite o Nome: BOTAFOGO Digite a Data de Lançamento: 01/01/2021 Digite o número de tripulantes: 12 Capacidade do Tanque: 82000 Número de passageiros: 300 Preco: 45.0 Nome: BOTAFOGO Data Lançamento: 01/01/2021 Número de Tripulantes: 12 Imprimindo a Relação passageiros por Tripulantes: 25.0 Digite a capacidade do tanque: 40000 Digite o número de passageiros: 60 Digite o preço: 21 Digite o Nome: TRUST Digite a Data de Lançamento: 07/07/2020 Digite o número de tripulantes: 8 Capacidade do Tanque: 40000 Número de passageiros: 60 Preco: 21.0 Nome: TRUST Data Lançamento: 07/07/2020 Número de Tripulantes: 8 Imprimindo a Relação passageiros por Tripulantes: 7.0 Digite a capacidade do tanque: 965000 Digite o número de passageiros: 9 Digite o preço: 800 Digite o Nome: PRESIDENTE Digite a Data de Lançamento: 21/05/2021 Digite o número de tripulantes: 3 Capacidade do Tanque: 965000 Número de passageiros: 9 Preco: 800.0 Nome: PRESIDENTE Data Lançamento: 21/05/2021 Número de Tripulantes: 3 Imprimindo a Relação passageiros por Tripulantes: 3.0 Digite a capacidade do tanque: 50 Digite o número de passageiros: 2 Digite o preço: 4 Digite o Nome: BASICO Digite a Data de Lançamento: 27/01/2021 Digite o número de tripulantes: 1 Capacidade do Tanque: 50 Número de passageiros: 2 Preco: 4.0 Nome: BASICO Data Lançamento: 27/01/2021 Número de Tripulantes: 1 Imprimindo a Relação passageiros por Tripulantes: 2.0 Digite a capacidade do tanque: 700 Digite o número de passageiros: 30 Digite o preço: 250 Digite o Nome: POO Digite a Data de Lançamento: 03/03/2021 Digite o número de tripulantes: 3 Capacidade do Tanque: 700 Número de passageiros: 30 Preco: 250.0 Nome: POO Data Lançamento: 03/03/2021 Número de Tripulantes: 3 Imprimindo a Relação passageiros por Tripulantes: 10.0 Digite a capacidade do tanque: 150000 Digite o número de passageiros: 200 Digite o preço: 150 Digite o Nome: GUGA Digite a Data de Lançamento: 15/07/2020 Digite o número de tripulantes: 10 Capacidade do Tanque: 150000 Número de passageiros: 200 Preco: 150.0 Nome: GUGA Data Lançamento: 15/07/2020 Número de Tripulantes: 10 Imprimindo a Relação passageiros por Tripulantes: 20.0 CONSTRUÍDO COM SUCESSO (tempo total: 15 minutos 52 segundos) Conclusão do trabalho Este trabalho demonstrou na prática os conceitos de Herança, um dos pilares de Programação Orientada a Objetos, determinando a hierarquiade classes e abordando o uso Vetores e Matrizes para o uso de construtores no instanciamento dos objetos. O conceito de tratamento de exceções também foi introduzido para identificar e tratar as exceções, para que o programa continue sendo executado sem erros.