Prévia do material em texto
Sumário Desenvolvimento de projeto de aplicação com uso de vetores de objetos com tratamento de exceções 2 Introdução a documentação 3 Diagrama de hierarquia de classes 4 Codificação em linguagem Java – Superclasse 5 Codificação em linguagem Java – Classe Navio 6 Codificação em linguagem Java – Classe Avião 8 Codificação em linguagem Java – Aplicação 10 Entrada de dados pelo usuário 12 Resultado impresso através da entrada de dados 16 Conclusão 20 Bibliografia 20 Desenvolvimento de projeto de aplicação com uso de vetores de objetos com tratamento de exceções Dadas as classes a seguir, crie uma superclasse para atender às necessidades das subclasses, com todas as funcionalidades comuns às classes similares. Crie também uma aplicação que gere, por meio de um vetor único com dez objetos de cada tipo, utilizando sempre o construtor vazio. Utilize o tratamento de exceções para proteger a aplicação contra possíveis entradas de dados inválida com os métodos da classe Scanner. Introdução a documentação Abordaremos um projeto com aplicação em linguagem Java, criaremos uma superclasse (pai) que possuirá dois métodos construtores, atributos com herança, atributos protegidos contra acesso direto e classes (filhas) com funcionalidades métodos de acesso setters e getters. Observações de classes: Classe Atributos Métodos Aviao Prefixo : Texto CapacidadeTanque : inteiro NumeroPassageiros : inteiro Preco : real DataRevisao : Texto · Acesso (setters e getters). · Construtores: pelo menos dois métodos construtores. · imprimir(): exibe os dados do objeto. . entrada(): realiza a entrada de dados pelo teclado · reajustarPreco(percentual : real): reajusta o preço do avião, alterando o valor do atributo de acordo com o percentual passado como parâmetro. Navio Nome : Texto CapacidadeTanque : inteiro NumeroPassageiros : inteiro NumeroTripulantes : inteiro Preco : real DataLancamento : Texto · Acesso (setters e getters). · Construtores: pelo menos cinco métodos construtores. · imprimir(): exibe os dados do objeto. · entrada(): realiza a entrada de dados pelo teclado · passageirosPorTripulantes(): retorna a divisão do número de passageiros pelo número de tripulantes. Os valores usados nesse método são atributos, por isso não precisam ser passados como parâmetros. Observações: 1. A superclasse deverá possuir dois métodos construtores também. 2. Apenas atributos com o mesmo nome e do mesmo tipo podem ser considerados similares para a herança. 3. Os atributos devem ser protegidos contra acesso direto. Diagrama de hierarquia de classes Como podemos visualizar abaixo, uma pequena representação em diagrama da lógica de programação que será aplicada a essas classes. Codificação em linguagem Java – Superclasse import java.util.Scanner; // Classe Transporte (superclasse) public abstract class Transporte { protected int capacidadeTanque; protected int numeroPassageiros; protected double preco; // Construtor padrão public Transporte() { this.capacidadeTanque = 0; this.numeroPassageiros = 0; this.preco = 0.0; } // Construtor com parâmetros public Transporte(int capacidadeTanque, int numeroPassageiros, double preco) { this.capacidadeTanque = capacidadeTanque; this.numeroPassageiros = numeroPassageiros; this.preco = preco; } // Getters e setters 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 imprimir() { System.out.println("Capacidade do tanque: " + capacidadeTanque); System.out.println("Número de passageiros: " + numeroPassageiros); System.out.println("Preço: " + preco); } public void setPreco(double preco) { this.preco = preco; } } Codificação em linguagem Java – Classe Navio import java.util.Scanner; public class Navio extends Transporte { private String nome; private String dataLancamento; private int numeroTripulantes; public Navio() { } public Navio(String nome, int capacidadeTanque, int numeroPassageiros, double preco, String dataLancamento, int numeroTripulantes) { super(capacidadeTanque, numeroPassageiros, preco); this.nome = nome; this.dataLancamento = dataLancamento; this.numeroTripulantes = numeroTripulantes; } public Navio (String nome){ this.nome = nome; } public Navio(String nome, String dataLancamento){ this.nome = nome; this.dataLancamento = dataLancamento; } public Navio( int numeroTripulantes, String nome, String dataLancamento){ this.numeroTripulantes = numeroTripulantes; this.nome = nome; this.dataLancamento = dataLancamento; } //Getters e Setters public void setNome(String nome) { this.nome = nome; } public String getNome() { return nome; } public void setDataLancamento (String dataLancamento) { this.dataLancamento = dataLancamento; } public String getDataLancamento() { return dataLancamento; } public int getNumeroTripulantes() { return numeroTripulantes; } public void setNumeroTripulantes(int numeroTripulantes) { this.numeroTripulantes = numeroTripulantes; } public void imprimir() { super.imprimir(); System.out.println("Nome: " + nome); System.out.println("Data Lançamento: " + dataLancamento); System.out.println("Numero de Tripulantes" + numeroTripulantes); } public double passageirosPorTripulantes(){ return this.numeroPassageiros/this.numeroTripulantes; } public void entrada() { Scanner sc = new Scanner(System.in); try { System.out.print("Digite o nome: "); nome = sc.nextLine(); System.out.print("Digite a capacidade do tanque: "); capacidadeTanque = sc.nextInt(); System.out.print("Digite o número de passageiros: "); numeroPassageiros = sc.nextInt(); System.out.print("Digite o número de Tripulantes: "); numeroTripulantes = sc.nextInt(); System.out.print("Digite o preço: "); preco = sc.nextDouble(); sc.nextLine(); System.out.print("Digite a data de Lançamento: "); dataLancamento = sc.nextLine(); } catch (Exception e) { System.out.println("Entrada inválida. Tente novamente."); entrada(); // Chama novamente o método para tentar novamente } } } Codificação em linguagem Java – Classe Avião import java.util.Scanner; public class Aviao extends Transporte { private String prefixo; private String dataRevisao; // Construtor vazio public Aviao() { } // Construtor com parâmetros public Aviao(String prefixo, int capacidadeTanque, int numeroPassageiros, double preco, String dataRevisao) { super(capacidadeTanque, numeroPassageiros, preco); this.prefixo = prefixo; this.dataRevisao = dataRevisao; } // Setters e Getters public void setPrefixo(String prefixo) { this.prefixo = prefixo; } public String getPrefixo() { return prefixo; } public void setCapacidadeTanque(int capacidadeTanque) { this.capacidadeTanque = capacidadeTanque; } public int getCapacidadeTanque() { return capacidadeTanque; } public void setNumeroPassageiros(int numeroPassageiros) { this.numeroPassageiros = numeroPassageiros; } public int getNumeroPassageiros(){ return numeroPassageiros; } public void setPreco(double preco) { this.preco = preco; } public double getPreco() { return preco; } public void setDataRevisao(String dataRevisao) { this.dataRevisao = dataRevisao; } public String getDataRevisao() { return dataRevisao; } public void imprimir() { super.imprimir(); System.out.println("Prefixo: " + prefixo); System.out.println("Data de revisão: " + dataRevisao); } // Método para realizar a entrada de dados pelo teclado public void entrada() { Scanner sc = new Scanner(System.in); try { System.out.print("Digite o prefixo: "); prefixo = sc.nextLine(); System.out.print("Digite a capacidade do tanque: "); capacidadeTanque = sc.nextInt(); System.out.print("Digite o número de passageiros: "); numeroPassageiros = sc.nextInt(); System.out.print("Digite o preço: "); preco = sc.nextDouble(); sc.nextLine(); System.out.print("Digite a data de revisão: "); dataRevisao = sc.nextLine(); } catch (Exception e) { System.out.println("Entrada inválida. Tente novamente."); entrada(); // Chama novamente o método para tentar novamente } } // Método para reajustar o preço do avião public void reajustarPreco(double percentual) { this.preco = this.preco * (1 + percentual / 100); } } Codificação em linguagem Java – Aplicação import java.util.Scanner; public class Aviao extends Transporte { private String prefixo; private String dataRevisao; // Construtor vazio public Aviao() { } // Construtor com parâmetros public Aviao(String prefixo, int capacidadeTanque, int numeroPassageiros, double preco, String dataRevisao) { super(capacidadeTanque, numeroPassageiros, preco); this.prefixo = prefixo; this.dataRevisao = dataRevisao; } // Setters e Getters public void setPrefixo(String prefixo) { this.prefixo = prefixo; } public String getPrefixo() { return prefixo; } public void setCapacidadeTanque(int capacidadeTanque) { this.capacidadeTanque = capacidadeTanque; } public int getCapacidadeTanque() { return capacidadeTanque; } public void setNumeroPassageiros(int numeroPassageiros) { this.numeroPassageiros = numeroPassageiros; } public int getNumeroPassageiros() { return numeroPassageiros; } public void setPreco(double preco) { this.preco = preco; } public double getPreco() { return preco; } public void setDataRevisao(String dataRevisao) { this.dataRevisao = dataRevisao; } public String getDataRevisao() { return dataRevisao; } public void imprimir() { super.imprimir(); System.out.println("Prefixo: " + prefixo); System.out.println("Data de revisão: " + dataRevisao); } // Método para realizar a entrada de dados pelo teclado public void entrada() { Scanner sc = new Scanner(System.in); try { System.out.print("Digite o prefixo: "); prefixo = sc.nextLine(); System.out.print("Digite a capacidade do tanque: "); capacidadeTanque = sc.nextInt(); System.out.print("Digite o número de passageiros: "); numeroPassageiros = sc.nextInt(); System.out.print("Digite o preço: "); preco = sc.nextDouble(); sc.nextLine(); System.out.print("Digite a data de revisão: "); dataRevisao = sc.nextLine(); } catch (Exception e) { System.out.println("Entrada inválida. Tente novamente."); entrada(); // Chama novamente o método para tentar novamente } } // Método para reajustar o preço do avião public void reajustarPreco(double percentual) { this.preco = this.preco * (1 + percentual / 100); } } Entrada de dados pelo usuário Digite o prefixo: Ancora Digite a capacidade do tanque: 200 Digite o número de passageiros: 100 Digite o preço: 100,00 Digite a data de revisão: 10.10.2020 Digite o prefixo: Ancora Digite a capacidade do tanque: 350 Digite o número de passageiros: 200 Digite o preço: 120,00 Digite a data de revisão: 10.10.2020 Digite o prefixo: Ancora Digite a capacidade do tanque: 120 Digite o número de passageiros: 130 Digite o preço: 130,00 Digite a data de revisão: 10.10.2020 Digite o prefixo: Ancora Digite a capacidade do tanque: 100 Digite o número de passageiros: 40 Digite o preço: 140,00 Digite a data de revisão: 10.09.2021 Digite o prefixo: Ancor Digite a capacidade do tanque: 400 Digite o número de passageiros: 200 Digite o preço: 90,00 Digite a data de revisão: 10.11.2023 Digite o prefixo: Ancora Digite a capacidade do tanque: 200 Digite o número de passageiros: 305 Digite o preço: 300,00 Digite a data de revisão: 10.10.2019 Digite o prefixo: Garix Digite a capacidade do tanque: 300 Digite o número de passageiros: 130 Digite o preço: 30,00 Digite a data de revisão: 29.08.2009 Digite o prefixo: Ancora Digite a capacidade do tanque: 20.11.2012 Entrada inválida. Tente novamente. Digite o prefixo: 20.10.2012 Digite a capacidade do tanque: 30.01.2020 Entrada inválida. Tente novamente. Digite o prefixo: Ancora Digite a capacidade do tanque: 459 Digite o número de passageiros: 259 Digite o preço: 399,99 Digite a data de revisão: 10.03.2022 Digite o prefixo: Pierce Digite a capacidade do tanque: 399 Digite o número de passageiros: 300 Digite o preço: 39,00 Digite a data de revisão: 30.04.2021 Digite o prefixo: Fighter Digite a capacidade do tanque: 500 Digite o número de passageiros: 389 Digite o preço: 350,00 Digite a data de revisão: 20.01.2019 Digite o nome: Ancor Digite a capacidade do tanque: 3000 Digite o número de passageiros: 850 Digite o número de Tripulantes: 388 Digite o preço: 200 Digite a data de Lançamento: 20.01.2021 Digite o nome: Ancor Digite a capacidade do tanque: 799 Digite o número de passageiros: 300 Digite o número de Tripulantes: 200 Digite o preço: 400,00 Digite a data de Lançamento: 07.07.2021 Digite o nome: Ancor Digite a capacidade do tanque: 899 Digite o número de passageiros: 3434 Digite o número de Tripulantes: 232 Digite o preço: 800,00 Digite a data de Lançamento: 20.02.2020 Digite o nome: Acoria Digite a capacidade do tanque: 20323 Digite o número de passageiros: 232 Digite o número de Tripulantes: 234 Digite o preço: 800,00 Digite a data de Lançamento: 20.02.2018 Digite o nome: Ancorinha Digite a capacidade do tanque: 3435 Digite o número de passageiros: 221 Digite o número de Tripulantes: 233 Digite o preço: 600,00 Digite a data de Lançamento: 03.04.2020 Digite o nome: Ancoraa Digite a capacidade do tanque: 2452 Digite o número de passageiros: 235 Digite o número de Tripulantes: 654 Digite o preço: 800,00 Digite a data de Lançamento: 06.06.2020 Digite o nome: Angora Digite a capacidade do tanque: 5453 Digite o número de passageiros: 235 Digite o número de Tripulantes: 676 Digite o preço: 800,00 Digite a data de Lançamento: 04.04.2021 Digite o nome: fila Digite a capacidade do tanque: 2455 Digite o número de passageiros: 356 Digite o número de Tripulantes: 653 Digite o preço: 700,00 Digite a data de Lançamento: 04.04.2020 Digite o nome: tyla Digite a capacidade do tanque: 42546 Digite o número de passageiros: 343 Digite o número de Tripulantes: 467 Digite o preço: 400,00 Digite a data de Lançamento: 04.04.2020 Digite o nome: vyla Digite a capacidade do tanque: 3435 Digite o número de passageiros: 343 Digite o número de Tripulantes: 467 Digite o preço: 900,00 Digite a data de Lançamento: 08.08.2021 Resultado impresso através da entrada de dados Informações dos aviões: Prefixo: Ancora Data de revisão: 10.10.2020 Capacidadedo tanque: 200 Número de passageiros: 100 Preço: 100.0 Prefixo: Ancora Data de revisão: 10.10.2020 Capacidade do tanque: 350 Número de passageiros: 200 Preço: 120.0 Prefixo: Ancora Data de revisão: 10.10.2020 Capacidade do tanque: 120 Número de passageiros: 130 Preço: 130.0 Prefixo: Ancora Data de revisão: 10.10.2020 Capacidade do tanque: 100 Número de passageiros: 40 Preço: 140.0 Prefixo: Ancora Data de revisão: 10.09.2021 Capacidade do tanque: 400 Número de passageiros: 200 Preço: 90.0 Prefixo: Ancor Data de revisão: 10.11.2023 Capacidade do tanque: 200 Número de passageiros: 305 Preço: 300.0 Prefixo: Ancora Data de revisão: 10.10.2019 Capacidade do tanque: 300 Número de passageiros: 130 Preço: 30.0 Prefixo: Garix Data de revisão: 29.08.2009 Capacidade do tanque: 459 Número de passageiros: 259 Preço: 399.99 Prefixo: Ancora Data de revisão: 10.03.2022 Capacidade do tanque: 399 Número de passageiros: 300 Preço: 39.0 Prefixo: Pierce Data de revisão: 30.04.2021 Capacidade do tanque: 500 Número de passageiros: 389 Preço: 350.0 Prefixo: Fighter Data de revisão: 20.01.2019 Informações dos navios: Capacidade do tanque: 3000 Número de passageiros: 850 Preço: 200.0 Nome: Ancor Data Lançamento: 20.01.2021 Numero de Tripulantes388 Capacidade do tanque: 799 Número de passageiros: 300 Preço: 400.0 Nome: Ancor Data Lançamento: 07.07.2021 Numero de Tripulantes200 Capacidade do tanque: 899 Número de passageiros: 3434 Preço: 800.0 Nome: Ancor Data Lançamento: 20.02.2020 Numero de Tripulantes232 Capacidade do tanque: 20323 Número de passageiros: 232 Preço: 800.0 Nome: Acoria Data Lançamento: 20.02.2018 Numero de Tripulantes234 Capacidade do tanque: 3435 Número de passageiros: 221 Preço: 600.0 Nome: Ancorinha Data Lançamento: 03.04.2020 Numero de Tripulantes233 Capacidade do tanque: 2452 Número de passageiros: 235 Preço: 800.0 Nome: Ancoraa Data Lançamento: 06.06.2020 Numero de Tripulantes654 Capacidade do tanque: 5453 Número de passageiros: 235 Preço: 800.0 Nome: Angora Data Lançamento: 04.04.2021 Numero de Tripulantes676 Capacidade do tanque: 2455 Número de passageiros: 356 Preço: 700.0 Nome: fila Data Lançamento: 04.04.2020 Numero de Tripulantes653 Capacidade do tanque: 42546 Número de passageiros: 343 Preço: 400.0 Nome: tyla Data Lançamento: 04.04.2020 Numero de Tripulantes467 Capacidade do tanque: 3435 Número de passageiros: 343 Preço: 900.0 Nome: vyla Data Lançamento: 08.08.2021 Numero de Tripulantes467 Process finished with exit code 0 Conclusão Conforme é apresentado pelo diagrama, codificação e impressão acima, foram desenvolvidos de acordo com o que é proposto pelo enunciado. Dadas as classes, foram criadas uma superclasse para que atendesse às necessidades das subclasses, com todas as funcionalidades comuns às classes similares. Bibliografia Curso POO Teoria #02a - O que é um Objeto? https://www.youtube.com/watch?v=aR7CKNFECx0&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=3&ab_channel=CursoemV%C3%ADdeo Curso POO Teoria #01a - O que é Programação Orientada a Objetos https://www.youtube.com/watch?v=KlIL63MeyMY&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=1&ab_channel=CursoemV%C3%ADdeo Curso POO Teoria #10a - Herança (Parte 1) https://www.youtube.com/watch?v=_PZldwo0vVo&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=21&ab_channel=CursoemV%C3%ADdeo Curso POO Java #02b - Criando Classes e Objetos em Java https://www.youtube.com/watch?v=wNaoX6VOj54&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=4&ab_channel=CursoemV%C3%ADdeo image2.png image3.jpeg image4.png image1.png