Baixe o app para aproveitar ainda mais
Prévia do material em texto
CENTRO UNIVERSITÁRIO JORGE AMADO – UNIJORGE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS YURI DOS SANTOS FERREIRA PROGRAMAÇÃO ORIENTADA A OBJETO SALVADOR 2022 2 YURI DOS SANTOS FERREIRA PROGRAMAÇÃO ORIENTADA A OBJETO Trabalho apresentado a língua brasileira de sinais para composição da nota AVA1 do Centro Universitário Jorge Amado-UNIJORGE PROGRAMAÇÃO ORIENTADA A OBJETO Orientadores: SALVADOR 2022 3 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 ......................................................... 18 Conclusão do trabalho..................................................................................................... 30 Bibliografia ....................................................................................................................... 31 4 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. 5 Conteúdo Documentação do projeto com o gráfico hierárquico das classes 6 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){ 7 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 { 8 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() { } 9 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()); 10 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(); 11 } } 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() { 12 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); 13 } 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()); 14 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(); 15 } }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(); } } 16 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; 17 } 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()); } 18 @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 19 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 20 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 21 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 22 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 23 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 24 ----- 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 25 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 26 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 detripulantes: 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 27 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 28 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 29 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) 30 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 hierarquia de 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. 31 Bibliografia https://www.youtube.com/watch?v=_PZldwo0vVo&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe- aGsY&index=20 CENTRO UNIVERSITÁRIO JORGE AMADO – UNIJORGE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS YURI DOS SANTOS FERREIRA SALVADOR 2022 Programa Principal “Aplicação” Super Classe “Transporte” Sub Classe “Navio” Sub Classe “Aviao”
Compartilhar