Prévia do material em texto
1
UNIVERSIDADE VEIGA DE ALMEIDA
Sistema da Informação EAD
Tijuca/RJ
2
Aluna: Nathassha Silvia Leite da Silva Figueredo
Matrícula: 1240113768
Professor: Marco Aurelio Novaes Esteves
Disciplina: Linguagem e Técnica de Programação (IL10309)
https://uva.instructure.com/courses/49741/users/65161
https://uva.instructure.com/courses/41685
3
Sumário
Introdução .................................................................................................................................... 4
Diagrama .................................................................................................................................... 5
Descrição das Classes ............................................................................................................... 6
Codigo das Classes .................................................................................................................. 7
Resultados ............................................................................................................................... 15
Conclusão ................................................................................................................................. 16
Bibliografia ................................................................................................................................. 16
4
INTRODUÇÃO
O presente projeto tem como objetivo a implementação de uma hierarquia de classes em Java,
utilizando o conceito de herança, bem como a criação de vetores de objetos com tratamento de
exceções. Foram implementadas as classes Transporte (superclasse), Aviao e Navio
(subclasses), que representam meios de transporte distintos, porém compartilham características
comuns. Além disso, foi desenvolvida uma aplicação que utiliza vetores para armazenar múltiplos
objetos de cada tipo, com entrada de dados via teclado.
5
Diagrama de Hierarquia de Classes (UML)
Transporte
+-------------------------------+
| - capacidadeTanque : int |
| - numeroPassageiros : int |
| - preco : double |
+-------------------------------+
| + imprimir() |
| + entrada(Scanner) |
+---------------+---------------+
|
+-------------+-------------+
| |
Aviao Navio
+------------------+ +----------------------+
| - prefixo : String| | - nome : String |
| - dataRevisao:Str.| | - numeroTripulantes: |
+------------------+ | int |
| + reajustarPreco()| | - dataLancamento:Str.|
+------------------+ +----------------------+
6
Descrição das Classes
Classe Transporte (Superclasse)
A classe Transporte possui os atributos comuns entre aviões e navios: capacidade do tanque,
número de passageiros e preço. Possui dois construtores (vazio e com parâmetros), métodos de
acesso (getters e setters), além dos métodos imprimir() e entrada() com tratamento de exceções
para entradas inválidas.
Classe Aviao (Subclasse)
A classe Aviao herda de Transporte e adiciona os atributos prefixo e dataRevisao. Possui dois
construtores, além dos métodos específicos imprimir(), entrada() e reajustarPreco(), que permite
alterar o valor do preço com base em um percentual fornecido.
Classe Navio (Subclasse)
A classe Navio também herda de Transporte e adiciona os atributos nome, numeroTripulantes e
dataLancamento. Possui cinco construtores sobrecarregados, métodos imprimir() e entrada(),
além do método passageirosPorTripulantes(), que retorna a razão entre passageiros e tripulantes.
7
Código das Classes
import java.util.InputMismatchException;
import java.util.Scanner;
public class MeioDeTransporte {
protected int capacidadeTanque;
protected int numeroPassageiros;
protected double preco;
// Construtor vazio
public MeioDeTransporte() {
this.capacidadeTanque = 0;
this.numeroPassageiros = 0;
this.preco = 0.0;
}
// Construtor com parâmetros
public MeioDeTransporte(int capacidadeTanque, int numeroPassageiros, double preco) {
8
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; }
// Métodos comuns
public void imprimir() {
System.out.println("Capacidade do tanque: " + capacidadeTanque);
System.out.println("Número de passageiros: " + numeroPassageiros);
System.out.println("Preço: " + preco);
}
9
public void entrada() {
Scanner sc = new Scanner(System.in);
try {
System.out.print("Capacidade do tanque: ");
capacidadeTanque = sc.nextInt();
System.out.print("Número de passageiros: ");
numeroPassageiros = sc.nextInt();
System.out.print("Preço: ");
preco = sc.nextDouble();
} catch (InputMismatchException e) {
System.out.println("Erro: tipo de dado inválido. Tente novamente!");
sc.nextLine(); // limpa o buffer
}
}
}
Aviao.java
public class Aviao extends MeioDeTransporte {
private String prefixo;
private String dataRevisao;
10
// Construtores
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; }
// Métodos
@Override
public void imprimir() {
System.out.println("=== AVIÃO ===");
System.out.println("Prefixo: " + prefixo);
super.imprimir();
11
System.out.println("Data da Revisão: " + dataRevisao);
}
@Override
public void entrada() {
super.entrada();
Scanner sc = new Scanner(System.in);
System.out.print("Prefixo: ");
prefixo = sc.nextLine();
System.out.print("Data da Revisão: ");
dataRevisao = sc.nextLine();
}
public void reajustarPreco(double percentual) {
this.preco += this.preco * (percentual / 100);
}
}
Navio.java
public class Navio extends MeioDeTransporte {
private String nome;
private int numeroTripulantes;
private String dataLancamento;
// Construtores
public Navio() {
12
super();
this.nome= "";
this.numeroTripulantes = 0;
this.dataLancamento = "";
}
public Navio(String nome, int capacidadeTanque, int numeroPassageiros, int
numeroTripulantes, double preco, String dataLancamento) {
super(capacidadeTanque, numeroPassageiros, preco);
this.nome = nome;
this.numeroTripulantes = numeroTripulantes;
this.dataLancamento = dataLancamento;
}
// Getters e Setters
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; }
// Métodos
13
@Override
public void imprimir() {
System.out.println("=== NAVIO ===");
System.out.println("Nome: " + nome);
super.imprimir();
System.out.println("Número de tripulantes: " + numeroTripulantes);
System.out.println("Data de Lançamento: " + dataLancamento);
}
@Override
public void entrada() {
super.entrada();
Scanner sc = new Scanner(System.in);
System.out.print("Nome: ");
nome = sc.nextLine();
try {
System.out.print("Número de tripulantes: ");
numeroTripulantes = sc.nextInt();
} catch (Exception e) {
System.out.println("Erro: número de tripulantes inválido.");
sc.nextLine();
}
System.out.print("Data de Lançamento: ");
sc.nextLine(); // limpeza do buffer
14
dataLancamento = sc.nextLine();
}
public double passageirosPorTripulantes() {
if (numeroTripulantes == 0) return 0;
return (double) numeroPassageiros / numeroTripulantes;
}
}
Classe Principal:
public class App {
public static void main(String[] args) {
MeioDeTransporte[] transportes = new MeioDeTransporte[20];
// 10 aviões
for (int i = 0; i