Prévia do material em texto
UNIVERSIDADE VEIGA DE ALMEIDA
Análise e Desenvolvimento de Sistemas EAD
IGOR WALTER DE MENDONÇA CALDINI
AVA 2 – Programação Orientada a Objetos 1
Desenvolvimento de projeto de aplicação com uso de vetores de objetos com tratamento de exceções
São João de Meriti
2025
UNIVERSIDADE VEIGA DE ALMEIDA
Análise e Desenvolvimento de Sistemas EAD
AVA 2 – Programação Orientada a Objetos 1
Desenvolvimento de projeto de aplicação com uso de vetores de objetos com tratamento de exceções
Avaliação do curso de graduação em Analise e Desenvolvimento de Sistemas na Universidade Veiga
de Almeida.
Orientador: Professor Marcos Aurelio Novaes Esteves
São João de Meriti
2025
Índice
1. Introdução ........................................... 3
2. Objetivos ............................................. 4
3. Conteúdo .............................................. 5
3.1 Hierarquia de Classes
3.2 Diagrama de Classes
3.3 Codificação
4. Conclusão ............................................ XX
5. Bibliografia ......................................... XX
1. Introdução
Este trabalho apresenta o desenvolvimento de uma aplicação em Java utilizando os conceitos de Programação Orientada a Objetos (POO), com foco em herança, uso de vetores de objetos e tratamento de exceções.
A proposta é criar uma superclasse genérica que contenha atributos e métodos comuns e, a partir dela, derivar subclasses específicas (Avião e Navio). Além disso, foi implementado um vetor único capaz de armazenar múltiplos objetos de diferentes tipos, garantindo flexibilidade e organização no código.
2. Objetivos
- Aplicar os conceitos de herança e polimorfismo em Java.
- Utilizar vetores de objetos para gerenciamento de diferentes instâncias.
- Implementar tratamento de exceções para evitar entradas inválidas.
- Demonstrar a organização de código com métodos construtores, getters/setters e sobrecarga.
- Produzir documentação formal do projeto.
3. Conteúdo
3.1 Hierarquia de Classes
A superclasse MeioTransporte contém os atributos e métodos comuns a todas as subclasses. As classes Aviao e Navio herdam de MeioTransporte e adicionam atributos e métodos específicos.
3.2 Diagrama de Classes
MeioTransporte
---------------------------
- capacidadeTanque : int
- numeroPassageiros : int
- preco : double
+ entrada()
+ imprimir()
+ reajustarPreco()
---------------------------
/ \
/ \
Aviao Navio
----------------- --------------------
- prefixo:String - nome:String
- dataRevisao:Str - numeroTripulantes:int
- dataLancamento:String
3.3 Codificação
Os códigos-fonte foram desenvolvidos em Java e estão organizados em arquivos separados.
// Transporte.java (superclasse abstrata)
public abstract class Transporte {
protected int capacidadeTanque;
protected int numeroPassageiros;
protected double preco;
public Transporte() {
this.capacidadeTanque = 0;
this.numeroPassageiros = 0;
this.preco = 0.0;
}
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; }
public void reajustarPreco(double percentual) {
this.preco = this.preco + this.preco * percentual / 100.0;
}
// método abstrato para imprimir e entrada
public abstract void imprimir();
public abstract void entrada(java.util.Scanner sc);
}
// Aviao.java
import java.util.InputMismatchException;
import java.util.Scanner;
public class Aviao extends Transporte {
private String prefixo;
private String dataRevisao;
public Aviao() {
super();
this.prefixo = "";
this.dataRevisao = "";
}
public Aviao(String prefixo, int capacidadeTanque, int numeroPassageiros, double preco, String dataRevisao) {
super(capacidadeTanque, numeroPassageiros, preco);
this.prefixo = prefixo;
this.dataRevisao = dataRevisao;
}
// getters e setters
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("=== Avião ===");
System.out.println("Prefixo: " + prefixo);
System.out.println("Capacidade Tanque: " + capacidadeTanque);
System.out.println("Número Passageiros: " + numeroPassageiros);
System.out.println("Preço: " + preco);
System.out.println("Data Revisão: " + dataRevisao);
}
@Override
public void entrada(Scanner sc) {
System.out.print("Prefixo: ");
this.prefixo = sc.nextLine();
while (true) {
try {
System.out.print("Capacidade Tanque (int): ");
this.capacidadeTanque = Integer.parseInt(sc.nextLine());
if (this.capacidadeTanquepublic void imprimir() {
System.out.println("=== Navio ===");
System.out.println("Nome: " + nome);
System.out.println("Capacidade Tanque: " + capacidadeTanque);
System.out.println("Número Passageiros: " + numeroPassageiros);
System.out.println("Número Tripulantes: " + numeroTripulantes);
System.out.println("Preço: " + preco);
System.out.println("Data Lançamento: " + dataLancamento);
}
@Override
public void entrada(Scanner sc) {
System.out.print("Nome: ");
this.nome = sc.nextLine();
while (true) {
try {
System.out.print("Capacidade Tanque (int): ");
this.capacidadeTanque = Integer.parseInt(sc.nextLine());
if (this.capacidadeTanque