Prévia do material em texto
Universidade Veiga de Almeida – Campus Tijuca
Curso: Análise e Desenvolvimento de Sistemas
Disciplina: Linguagem de Programação
Projeto: Desenvolvimento de aplicação com uso de vetores de objetos e tratamento de exceções
Aluno: Marcos Vinicius Pereira de Paula
Professora: Ana Paula Santos Vasconcelos
Rio de Janeiro – 03/09/2025
Universidade Veiga de Almeida – Campus Tijuca
Curso: Análise e Desenvolvimento de Sistemas
Disciplina: Linguagem de Programação
Projeto apresentado como requisito parcial para avaliação da disciplina de Linguagem de Programação.
Professora: Ana Paula Santos Vasconcelos
Aluno: Marcos Vinicius Pereira de Paula
Rio de Janeiro – 03/09/2025
Índice
1. Introdução
2. Conteúdo
2.1 Conceito de herança em POO
2.2 Uso de vetores de objetos
2.3 Tratamento de exceções em Java
3. Diagrama hierárquico das classes
4. Codificação das classes
4.1 Superclasse Transporte
4.2 Classe Aviao
4.3 Classe Navio
4.4 Classe de Aplicação
5. Resultados dos testes
6. Conclusão
7. Bibliografia
Introdução
O presente trabalho tem como objetivo aplicar os conceitos de Programação Orientada a Objetos (POO) utilizando herança, polimorfismo, encapsulamento e tratamento de exceções.
A atividade proposta busca demonstrar a criação de uma superclasse que represente as características comuns a meios de transporte, possibilitando a especialização em subclasses como Avião e Navio.
Além disso, será explorado o uso de vetores de objetos para armazenar múltiplas instâncias, garantindo organização e manutenibilidade do código.
Conteúdo
2.1 Conceito de herança em POO
A herança permite a criação de uma estrutura hierárquica entre classes, possibilitando que atributos e métodos comuns sejam definidos em uma superclasse e reaproveitados em subclasses.
2.2 Uso de vetores de objetos
Vetores possibilitam armazenar múltiplos objetos de um mesmo tipo. Neste projeto, serão criados 10 aviões e 10 navios utilizando apenas o construtor vazio.
2.3 Tratamento de exceções em Java
Será utilizado o try/catch em conjunto com a classe Scanner para garantir que valores inválidos não interrompam a execução do programa.
Diagrama Hierárquico
Codificação
Superclasse Transporte.java
import java.util.InputMismatchException;
import java.util.Scanner;
public class Transporte {
protected int capacidadeTanque;
protected int numeroPassageiros;
protected double preco;
// Construtor vazio
public Transporte() {}
// Construtor completo
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 setPreco(double preco) { this.preco = preco; }
// Entrada de dados com tratamento de exceções
public void entrada() {
Scanner sc = new Scanner(System.in);
try {
System.out.print("Capacidade do tanque: ");
this.capacidadeTanque = sc.nextInt();
System.out.print("Número de passageiros: ");
this.numeroPassageiros = sc.nextInt();
System.out.print("Preço: ");
this.preco = sc.nextDouble();
} catch (InputMismatchException e) {
System.out.println("Erro: valor inválido. Tente novamente.");
sc.nextLine(); // limpar buffer
entrada(); // chama recursivamente
}
}
public void imprimir() {
System.out.println("Capacidade do tanque: " + capacidadeTanque);
System.out.println("Número de passageiros: " + numeroPassageiros);
System.out.println("Preço: " + preco);
}
}
Classe Aviao.java
public class Aviao extends Transporte {
private String prefixo;
private String dataRevisao;
// Construtor vazio
public Aviao() { super(); }
// Construtor completo
public Aviao(String prefixo, int capacidadeTanque, int numeroPassageiros, double preco, 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() {
System.out.println("\n--- Dados do Avião ---");
super.imprimir();
System.out.println("Prefixo: " + prefixo);
System.out.println("Data de revisão: " + dataRevisao);
}
public void reajustarPreco(double percentual) {
this.preco += this.preco * (percentual / 100);
}
}
Classe Navio.java
public class Navio extends Transporte {
private String nome;
private int numeroTripulantes;
private String dataLancamento;
// Construtores
public Navio() { super(); }
public Navio(String nome) { this.nome = nome; }
public Navio(String nome, int numeroTripulantes) { this.nome = nome; this.numeroTripulantes = numeroTripulantes; }
public Navio(String nome, int capacidadeTanque, int numeroPassageiros, double preco) {
super(capacidadeTanque, numeroPassageiros, preco);
this.nome = nome;
}
public Navio(String nome, int capacidadeTanque, int numeroPassageiros, double preco, int numeroTripulantes, String dataLancamento) {
super(capacidadeTanque, numeroPassageiros, preco);
this.nome = nome;
this.numeroTripulantes = numeroTripulantes;
this.dataLancamento = dataLancamento;
}
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() {
System.out.println("\n--- Dados do Navio ---");
super.imprimir();
System.out.println("Nome: " + nome);
System.out.println("Número de tripulantes: " + numeroTripulantes);
System.out.println("Data de lançamento: " + dataLancamento);
}
public double passageirosPorTripulantes() {
if (numeroTripulantes == 0) return 0;
return (double) numeroPassageiros / numeroTripulantes;
}
}
Classe Principal App.java
public class App {
public static void main(String[] args) {
Aviao[] avioes = new Aviao[10];
Navio[] navios = new Navio[10];
// Criando 10 aviões
for (int i = 0; ie exibidos ao final.
Conclusão
O projeto demonstrou a importância da herança para reduzir redundâncias no código, além do uso de vetores de objetos para manipulação em massa de instâncias.
O tratamento de exceções garantiu robustez ao sistema, prevenindo falhas de execução.
Bibliografia
· DEITEL, H. M.; DEITEL, P. J. Java: Como Programar. 10ª ed. São Paulo: Pearson, 2016.
· SAVITCH, W. J. Java: An Introduction to Problem Solving and Programming. Pearson, 2017.
· Documentação oficial Java: https://docs.oracle.com/javase/
image1.png
image2.png