Prévia do material em texto
Aluno: Tiago da Silva Palma Matrícula: 2230108914 Disciplina: Programação Orientada a Objeto Tutor: Magno Luã de Jesus Souza Desenvolvimento de projeto de aplicação com uso de vetores de objetos com tratamento de exceções Salvador/BA 2025 UNIJORGE Trabalho da disciplina: Programação Orientada a Objeto (AVA 2) Aluno: Tiago da Silva Palma Matrícula: 2230108914 Curso: Tecnologia em Análise e Desenvolvimento de Sistemas Campus: Paralela Turno: Virtual ÍNDICE Introdução……………………………………………………………………....4 Conteúdo………………………………………………………………………..4 Conclusão……………………………………………………………………….12 Referências……………………………………………………………………..12 1. Introdução De acordo com as diretrizes estabelecidas no enunciado do trabalho AVA2, foi desenvolvida uma aplicação em Java que emprega o conceito de herança, onde uma superclasse atende às necessidades comuns de suas subclasses. Para ilustrar a estrutura hierárquica das classes e suas relações, elaboramos um diagrama de classes. Veiculo - CapacidadeTanque - NumeroPassageiros - Preco +setCapacidadeTanque() +setNumeropassageiros() +setPreco() +entradaDados() +imprimir() Navio - Nome - DataLancamento -NumeroTripulantes +setNome() +setDatalacamento() +setNumeroTripulantes() +entradaDados() +imprimir() Aviao - Prefixo - DataRevisao +setPrefixo() +setDataRevisao() +entradaDados() +imprimir() Este trabalho detalha o desenvolvimento de um projeto em Java que utiliza vetores de objetos e tratamento de exceções. O projeto envolve a criação de uma superclasse e subclasses para representar veículos (aviões e navios), além de uma aplicação que gerencia um vetor de objetos desses tipos. 2. Superclasse Veiculo A superclasse Veiculo contém os atributos e métodos comuns às subclasses Aviao e Navio. Código da classe Veiculo: package aplicacaoveiculos; public class Veiculo { private int capacidadeTanque; private int numeroPassageiros; private double preco; public Veiculo() { } public Veiculo(int capacidadeTanque, int numeroPassageiros, double preco) { this.capacidadeTanque = capacidadeTanque; this.numeroPassageiros = numeroPassageiros; this.preco = 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 void imprimir() { System.out.println("Capacidade do Tanque: " + capacidadeTanque); System.out.println("Número de Passageiros: " + numeroPassageiros); System.out.println("Preço: " + preco); } } 3. Subclasse Aviao A classe Aviao herda os atributos e métodos da superclasse Veiculo e adiciona atributos específicos. Código da classe Aviao: package aplicacaoveiculos; import java.util.Scanner; public class Aviao extends Veiculo { private String prefixo; private String dataRevisao; public Aviao() { super(); } public Aviao(int capacidadeTanque, int numeroPassageiros, double preco, String prefixo, String dataRevisao) { super(capacidadeTanque, numeroPassageiros, preco); this.prefixo = prefixo; this.dataRevisao = 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; } @Override public void imprimir() { super.imprimir(); System.out.println("Prefixo: " + prefixo); System.out.println("Data de Revisão: " + dataRevisao); } public void entrada() { Scanner scanner = new Scanner(System.in); try { System.out.print("Capacidade do Tanque: "); setCapacidadeTanque(scanner.nextInt()); System.out.print("Número de Passageiros: "); setNumeroPassageiros(scanner.nextInt()); System.out.print("Preço: "); setPreco(scanner.nextDouble()); scanner.nextLine(); System.out.print("Prefixo: "); setPrefixo(scanner.nextLine()); System.out.print("Data de Revisão: "); setDataRevisao(scanner.nextLine()); } catch (java.util.InputMismatchException e) { System.out.println("Entrada inválida. Certifique-se de inserir os dados corretamente."); } } public void reajustarPreco(double percentual) { setPreco(getPreco() * (1 + percentual / 100)); } } 4. Subclasse Navio A classe Navio também herda os atributos e métodos da superclasse Veiculo e adiciona atributos específicos. Código da classe Navio: import java.util.Scanner; public class Navio extends Veiculo { private String nome; private int numeroTripulantes; private String dataLancamento; public Navio() { super(); } public Navio(int capacidadeTanque, int numeroPassageiros, double preco, String nome, int numeroTripulantes, String dataLancamento) { super(capacidadeTanque, numeroPassageiros, preco); this.nome = nome; this.numeroTripulantes = numeroTripulantes; this.dataLancamento = dataLancamento; } public Navio(String nome, int numeroTripulantes, String dataLancamento) { this.nome = nome; this.numeroTripulantes = numeroTripulantes; this.dataLancamento = dataLancamento; } public Navio(int capacidadeTanque, int numeroPassageiros, double preco, String nome, int numeroTripulantes) { super(capacidadeTanque, numeroPassageiros, preco); this.nome = nome; this.numeroTripulantes = numeroTripulantes; } public Navio(int capacidadeTanque, int numeroPassageiros, double preco, String nome) { super(capacidadeTanque, numeroPassageiros, preco); this.nome = nome; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getNumeroTripulantes() { return numeroTripulantes; } public void setNumeroTripulantes(int numeroTripulantes) { this.numeroTripulantes = numeroTripulantes; } public String getDataLancamento() { return dataLancamento; } public void setDataLancamento(String dataLancamento) { this.dataLancamento = dataLancamento; } @Override public void imprimir() { super.imprimir(); System.out.println("Nome: " + nome); System.out.println("Número de Tripulantes: " + numeroTripulantes); System.out.println("Data de Lançamento: " + dataLancamento); } public void entrada() { Scanner scanner = new Scanner(System.in); try { System.out.print("Capacidade do Tanque: "); setCapacidadeTanque(scanner.nextInt()); System.out.print("Número de Passageiros: "); setNumeroPassageiros(scanner.nextInt()); System.out.print("Preço: "); setPreco(scanner.nextDouble()); scanner.nextLine(); System.out.print("Nome: "); setNome(scanner.nextLine()); System.out.print("Número de Tripulantes: "); setNumeroTripulantes(scanner.nextInt()); scanner.nextLine(); System.out.print("Data de Lançamento: "); setDataLancamento(scanner.nextLine()); } catch (java.util.InputMismatchException e) { System.out.println("Entrada inválida. Certifique-se de inserir os dados corretamente."); }} public double passageirosPorTripulantes() { return (double) getNumeroPassageiros() / getNumeroTripulantes(); } } 5. Classe de Aplicação (AplicacaoVeiculos) A classe AplicacaoVeiculos gerencia um vetor de objetos Veiculo, instanciando aviões e navios com o construtor vazio e utilizando tratamento de exceções para entradas inválidas. Código da classe AplicacaoVeiculos: package aplicacaoveiculos; public class AplicacaoVeiculos { public static void main(String[] args) { Veiculo[] veiculos = new Veiculo[20]; for (int i = 0; i