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