Escolar Documentos
Profissional Documentos
Cultura Documentos
UVA
CURSO SUPERIOR DE SISTEMAS DE
INFORMAÇÃO
0
Introdução
1
Dadas as classes a seguir, crie uma superclasse para atender às necessidades das
subclasses, com todas as funcionalidades comuns às classes similares. Crie também
uma aplicação que gere, por meio de um vetor único com dez objetos de cada tipo,
utilizando sempre o construtor vazio. Utilize o tratamento de exceções para
proteger a aplicação contra possíveis entradas de dados inválida com os métodos
da classe Scanner.
Classes:
Nome : Texto
· Acesso (setters e getters).
CapacidadeTanque : inteiro
· Construtores: pelo menos cinco métodos
Navio NumeroPassageiros : construtores.
inteiro
· imprimir(): exibe os dados do objeto.
NumeroTripulantes : inteiro
2
Preco : real · entrada(): realiza a entrada de dados pelo
teclado
DataLancamento : Texto
· passageirosPorTripulantes(): retorna a
divisão do número de passageiros pelo
número de tripulantes. Os valores usados
nesse método são atributos, por isso não
precisam ser passados como parâmetros.
Observações:
1. A superclasse deverá possuir dois métodos construtores também.
2. Apenas atributos com o mesmo nome e do mesmo tipo podem ser
considerados similares para a herança.
3. Os atributos devem ser protegidos contra acesso direto.
Monte o diagrama de hierarquia das classes e defina onde ficará cada atributo após
a aplicação do conceito de herança. Após a determinação da hierarquia, desenvolva
separadamente as classes (incluindo a classe de aplicação)
Veiculo (Pai)
Atributos:
3
Classe Veiculo:
public Veiculo() {
}
Classe Aviao:
4
public Aviao() {
}
Classe Navio:
public Navio() {
}
5
protected 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);
}
Classe Principal:
try {
for (int i = 0; i < 10; i++) {
avioes[i] = new Aviao();
System.out.println("Preenchendo dados para o Avião #" + (i +
1));
avioes[i].entrada();
System.out.println("/////////////////////////////////");
}
6
System.out.println("Preenchendo dados para o Navio #" + (i +
1));
navios[i].entrada();
System.out.println("/////////////////////////////////");
}
} catch (Exception e) {
System.out.println("Ocorreu um erro durante a entrada de
dados.");
e.printStackTrace();
} finally {
Utility.getInstance().closeScanner();
}
Singleton Utility:
import java.util.Scanner;
private Utility() {
scanner = new Scanner(System.in);
}
7
}
return instance;
}
8
Conclusão
Após os exemplos acima, e a construção de classes utilizando-se de atributos
compartilhados e hierarquia é possível notar somando ao trabalho anterior o ainda maior
ganho não somente em agilidade ao construir e a trabalhar com objetos, mas também no
ganho de estrutura, onde classes podem ser atribuídas a uma cascata organizada.
9
Bibliografia
DEVMEDIA. Trabalhando com Singleton - Java. Disponível em:
https://www.devmedia.com.br/trabalhando-com-singleton-java/23632. Acesso em: 02
set. 2023.
10