Prévia do material em texto
UVA – UNIVERSIDADE VEIGA DE ALMEIDA
SISTEMA DE INFORMAÇÃO
CAMPUS: TIJUCA
Rio de Janeiro
2022.3
2
RODRIGO MAIA DINIZ
PROGRAMAÇÃO ORIENTADA A OBJETOS I
AVA2 – Desenvolvimento de projeto de aplicação com uso
de vetores de objetos com tratamento de exceções
Trabalho de avaliação de curso
apresentado a Universidade Veiga de
Almeida como requisito para o
recebimento de Graduação em Sistema
de Informação, Avaliação 2
Professor: Gabriel Andrade de Santana
Rio de Janeiro
2022.3
3
ÍNDICE
1 Introdução .......................................................................................................3
2 Conteúdo.........................................................................................................3
3 Gráfico Hieráquico Das Classes.....................................................................4
4 Codificação De Todas As Classes E Aplicação..............................................5
5 Resultados Dos Testes Realizados Com O Projeto......................................12
6 Conclusão......................................................................................................19
Referências.......................................................................................................20
1 INTRODUÇÃO
Esse trabalho tem como objetivo desenvolver as habilidades de
programação com Java, da disciplina de programação a objeto I AVA 2,
aplicando o uso de vetores e matrizes de objetos para facilitar o desenvolvimento
de determinados projetos, facilitando o desenvolvimento, diminuindo a
complexidade e favorecendo a manutenção de sistema.
Criando uma subclasse para atender às necessidades das subclasses,
com todas as funcionalidades comuns às classes similares. Criando também
uma aplicação que rege, por meio de um vetor único com dez objetos de cada
tipo, utilizando sempre um construtor vazio. Utilizando o tratamento de
execuções para proteger a aplicação contra possíveis entradas de dados
inválidos com os métodos de classe Scanner.
2 CONTEÚDO
Classes:
Classe Atributos Métodos
Aviao Prefixo : Texto · Acesso (setters e getters).
4
CapacidadeTanque :
inteiro
NumeroPassageiros :
inteiro
Preco : real
DataRevisao : Texto
· Construtores: pelo menos dois
métodos construtores.
· imprimir(): exibe os dados do objeto.
. entrada(): realiza a entrada de dados
pelo teclado
· reajustarPreco(percentual : real):
reajusta o preço do avião, alterando o
valor do atributo de acordo com o
percentual passado como parâmetro.
Navio
Nome : Texto
CapacidadeTanque :
inteiro
NumeroPassageiros :
inteiro
NumeroTripulantes :
inteiro
Preco : real
DataLancamento : Texto
· Acesso (setters e getters).
· Construtores: pelo menos cinco
métodos construtores.
· imprimir(): exibe os dados do objeto.
· entrada(): realiza a entrada de dados
pelo teclado
· 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).
3 GRÁFICO HIERÁQUICO DAS CLASSES
5
4 CODIFICAÇÃO DE TODAS AS CLASSES E APLICAÇÃO
SUPER CLASSE
package superclasse;
import java.util.Scanner;
/**
*
* @author Rodrigo
*/
public class SuperClasse {
//Attibutos
private int capacidadedetanque;
private int numeropassageiros;
private float preco;
Scanner sc = new Scanner(System.in);
public int getCapacidadedetanque() {
6
return capacidadedetanque;
}
public void setCapacidadedetanque(int capacidadedetanque) {
this.capacidadedetanque = capacidadedetanque;
}
public int getNumeropassageiros() {
return numeropassageiros;
}
public void setNumeropassageiros(int numeropassageiros) {
this.numeropassageiros = numeropassageiros;
}
public float getPreco() {
return preco;
}
public void setPreco(float preco) {
this.preco = preco;
}
public void EntradaCapacidadetanque() {
System.out.print("Capacidade do tanque: ");
setCapacidadedetanque(Integer.parseInt(sc.nextLine()));
}
public void EntradanumeroPassageiros() {
System.out.print("Numero de Passageiros: ");
setNumeropassageiros(Integer.parseInt(sc.nextLine()));
}
public void EntradaPreco() {
7
System.out.print("Preço: ");
setPreco(Float.parseFloat(sc.nextLine()));
}
public void Cadastrar() {
EntradaCapacidadetanque();
EntradanumeroPassageiros();
EntradaPreco();
}
public void Imprimir() {
System.out.print("Capacidade do tanque: " + getCapacidadedetanque() +
"\n");
System.out.print("NumeroPassageiros: " + getNumeropassageiros() + "\n");
System.out.print("Preço: " + getPreco() + "\n");
}
}
AVIAO
package superclasse;
import java.util.Scanner;
/**
*
* @author Rodrigo
*/
public class Aviao extends SuperClasse {
//Atributo
private String prefixo;
private String datarevisao;
public String getPrefixo() {
8
return prefixo;
}
public void setPrefixo(String prefixo) {
this.prefixo = prefixo;
}
public String getDatarevisao() {
return datarevisao;
}
public void setDatarevisao(String datarevisao) {
this.datarevisao = datarevisao;
}
public void reajustapreco() {
String reajustar;
String teste = "s";
float reajuste;
System.out.println("Deseja reajustar o preço? digite s para continuar");
reajustar = sc.nextLine();
if (teste.equals(reajustar)) {
System.out.print("Digite o valor percentual para ajustar o preço, exemplo
20 para20% de reajuste: ");
reajuste = Float.parseFloat(sc.nextLine());
System.out.print("Preço Reajustado: " + (getPreco() * ((reajuste / 100) +
1)) + "\n");
}
}
public void EntradaPrefixo() {
System.out.print("Digite o prefixo: ");
setPrefixo(sc.nextLine());
}
9
public void EntradadataRevisao() {
System.out.print("Digite a data de Revisão: ");
setDatarevisao(sc.nextLine());
}
public void Cadastrar() {
super.Cadastrar();
EntradadataRevisao();
EntradaPrefixo();
}
public void Imprimir() {
super.Imprimir();
getPrefixo();
getDatarevisao();
reajustapreco();
}
}
NAVIO
package superclasse;
import java.util.Scanner;
/**
*
* @author Rodrigo
*/
public class Navio extends SuperClasse {
//Atributo
private String nome;
10
private int numerotripulantes;
private String 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;
}
public void passageirosportripulante() {
int passag = getNumerotripulantes();
int tripu = getNumerotripulantes();
float razao = (passag / tripu);
if (passag >= tripu) {
System.out.println("numero de passageiros x tripulantes = " + razao);
} else {
11
System.out.println("numero de tripulantes é maior do que o de
passageiros ");
}
}
public void EntradaNumerodeTripulantes() {
System.out.print("Numero de Tripulantes: ");
setNumerotripulantes(Integer.parseInt(sc.nextLine()));
}
@Override
public void Cadastrar() {
Scanner sc = new Scanner(System.in);
super.Cadastrar();
EntradaNumerodeTripulantes();
}
@Override
public void Imprimir() {
super.Imprimir();
System.out.print("Numero de Tripulantes: " + getNumerotripulantes() + "\n");
passageirosportripulante();
}
}
APLICACAO
package superclasse;
/**
*
* @author Rodrigo
*/
public class Aplicacao {
12
public static void main(String[] args) {
Aviao vetAviao[] = new Aviao[10];
for (int i = 0; i < vetAviao.length; i++) {
vetAviao[i] = new Aviao();
System.out.println("------ Insira os Dados do " + (i + 1) + "º Avião ------");
vetAviao[i].Cadastrar();
System.out.println("------ Listagem dos Dados do " + (i + 1) + "º Avião ----
--");
vetAviao[i].Imprimir();
}
Navio vetNavio[] = new Navio[10];
System.out.println("------ Dados do Navio ------");
for (int i = 0; i < vetNavio.length; i++) {
vetNavio[i] = new Navio();
System.out.println("------ Insira os Dados do " + (i + 1) + "º Navio ------");
vetNavio[i].Cadastrar();
System.out.println("------ Listagem dos Dados do " + (i + 1) + "º Navio ----
--");
vetNavio[i].Imprimir();
}
}
}
5 RESULTADOS DOS TESTES REALIZADOS COM O PROJETO
run:
------ Insira os Dados do 1° Avião ------
Capacidade do tanque: 900
Numero de Passageiros: 876
Preço: 560.00
Digite a data de Revisão: 01/02/2022
Digite o prefixo: RD123
13
------ Listagem dos Dados do 1° Avião ------
Capacidade do tanque: 900
NumeroPassageiros: 876
Preço: 560.0
Deseja reajustar o preço? digite s para continuar
n
------ Insira os Dados do 2° Avião ------
Capacidade do tanque: 800
Numero de Passageiros: 560
Preço: 450.00
Digite a data de Revisão: 02/02/2022
Digite o prefixo: TR543
------ Listagem dos Dados do 2° Avião ------
Capacidade do tanque: 800
NumeroPassageiros: 560
Preço: 450.0
Deseja reajustar o preço? digite s para continuar
s
Digite o valor percentual para ajustar o preço, exemplo 20 para20% de reajuste: 20
Preço Reajustado: 540.0
------ Insira os Dados do 3° Avião ------
Capacidade do tanque: 750
Numero de Passageiros: 568
Preço: 543.00
Digite a data de Revisão: 05/03/2022
Digite o prefixo: GF346
------ Listagem dos Dados do 3° Avião ------
Capacidade do tanque: 750
NumeroPassageiros: 568
Preço: 543.0
Deseja reajustar o preço? digite s para continuar
s
Digite o valor percentual para ajustar o preço, exemplo 20 para20% de reajuste: 10
Preço Reajustado: 597.3
------ Insira os Dados do 4° Avião ------
14
Capacidade do tanque: 700
Numero de Passageiros: 876
Preço: 450.00
Digite a data de Revisão: 05/04/2022
Digite o prefixo: YT623
------ Listagem dos Dados do 4° Avião ------
Capacidade do tanque: 700
NumeroPassageiros: 876
Preço: 450.0
Deseja reajustar o preço? digite s para continuar
n
------ Insira os Dados do 5° Avião ------
Capacidade do tanque: 700
Numero de Passageiros: 600
Preço: 750.00
Digite a data de Revisão: 10/06/2022
Digite o prefixo: HY987
------ Listagem dos Dados do 5° Avião ------
Capacidade do tanque: 700
NumeroPassageiros: 600
Preço: 750.0
Deseja reajustar o preço? digite s para continuar
n
------ Insira os Dados do 6° Avião ------
Capacidade do tanque: 600
Numero de Passageiros: 500
Preço: 670.00
Digite a data de Revisão: 15/06/2022
Digite o prefixo: GF654
------ Listagem dos Dados do 6° Avião ------
Capacidade do tanque: 600
NumeroPassageiros: 500
Preço: 670.0
Deseja reajustar o preço? digite s para continuar
s
15
Digite o valor percentual para ajustar o preço, exemplo 20 para20% de reajuste: 50
Preço Reajustado: 1005.0
------ Insira os Dados do 7° Avião ------
Capacidade do tanque: 950
Numero de Passageiros: 760
Preço: 980.00
Digite a data de Revisão: 15/08/2022
Digite o prefixo: KYW34
------ Listagem dos Dados do 7° Avião ------
Capacidade do tanque: 950
NumeroPassageiros: 760
Preço: 980.0
Deseja reajustar o preço? digite s para continuar
n
------ Insira os Dados do 8° Avião ------
Capacidade do tanque: 400
Numero de Passageiros: 300
Preço: 675.00
Digite a data de Revisão: 20/09/2022
Digite o prefixo: ZX765
------ Listagem dos Dados do 8° Avião ------
Capacidade do tanque: 400
NumeroPassageiros: 300
Preço: 675.0
Deseja reajustar o preço? digite s para continuar
n
------ Insira os Dados do 9° Avião ------
Capacidade do tanque: 300
Numero de Passageiros: 98
Preço: 350.00
Digite a data de Revisão: 25/10/2022
Digite o prefixo: BCD43
------ Listagem dos Dados do 9° Avião ------
Capacidade do tanque: 300
NumeroPassageiros: 98
16
Preço: 350.0
Deseja reajustar o preço? digite s para continuar
s
Digite o valor percentual para ajustar o preço, exemplo 20 para20% de reajuste: 60
Preço Reajustado: 560.0
------ Insira os Dados do 10° Avião ------
Capacidade do tanque: 900
Numero de Passageiros: 750
Preço: 798.0
Digite a data de Revisão: 16/09/2022
Digite o prefixo: RMD41
------ Listagem dos Dados do 10° Avião ------
Capacidade do tanque: 900
NumeroPassageiros: 750
Preço: 798.0
Deseja reajustar o preço? digite s para continuar
s
Digite o valor percentual para ajustar o preço, exemplo 20 para20% de reajuste: 30
Preço Reajustado: 1037.3999
------ Dados do Navio ------
------ Insira os Dados do 1° Navio ------
Capacidade do tanque: 900
Numero de Passageiros: 98
Preço: 450.00
Numero de Tripulantes: 45
------ Listagem dos Dados do 1° Navio ------
Capacidade do tanque: 900
NumeroPassageiros: 98
Preço: 450.0
Numero de Tripulantes: 45
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 2° Navio ------
Capacidade do tanque: 800
Numero de Passageiros: 78
Preço: 67.00
17
Numero de Tripulantes: 34
------ Listagem dos Dados do 2° Navio ------
Capacidade do tanque: 800
NumeroPassageiros: 78
Preço: 67.0
Numero de Tripulantes: 34
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 3° Navio ------
Capacidade do tanque: 700
Numero de Passageiros: 45
Preço: 98.00
Numero de Tripulantes: 97
------ Listagem dos Dados do 3° Navio ------
Capacidade do tanque: 700
NumeroPassageiros: 45
Preço: 98.0
Numero de Tripulantes: 97
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 4° Navio ------
Capacidade do tanque: 900
Numero de Passageiros: 79
Preço: 760.00
Numero de Tripulantes: 63
------ Listagem dos Dados do 4° Navio ------
Capacidade do tanque: 900
NumeroPassageiros: 79
Preço: 760.0
Numero de Tripulantes: 63
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 5° Navio ------
Capacidade do tanque: 500
Numero de Passageiros: 87
Preço: 350.0
Numero de Tripulantes: 34------ Listagem dos Dados do 5° Navio ------
18
Capacidade do tanque: 500
NumeroPassageiros: 87
Preço: 350.0
Numero de Tripulantes: 34
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 6° Navio ------
Capacidade do tanque: 760
Numero de Passageiros: 23
Preço: 560.0
Numero de Tripulantes: 76
------ Listagem dos Dados do 6° Navio ------
Capacidade do tanque: 760
NumeroPassageiros: 23
Preço: 560.0
Numero de Tripulantes: 76
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 7° Navio ------
Capacidade do tanque: 500
Numero de Passageiros: 300
Preço: 400.0
Numero de Tripulantes: 67
------ Listagem dos Dados do 7° Navio ------
Capacidade do tanque: 500
NumeroPassageiros: 300
Preço: 400.0
Numero de Tripulantes: 67
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 8° Navio ------
Capacidade do tanque: 600
Numero de Passageiros: 39
Preço: 550.0
Numero de Tripulantes: 85
------ Listagem dos Dados do 8° Navio ------
Capacidade do tanque: 600
NumeroPassageiros: 39
19
Preço: 550.0
Numero de Tripulantes: 85
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 9° Navio ------
Capacidade do tanque: 800
Numero de Passageiros: 45
Preço: 785.0
Numero de Tripulantes: 87
------ Listagem dos Dados do 9° Navio ------
Capacidade do tanque: 800
NumeroPassageiros: 45
Preço: 785.0
Numero de Tripulantes: 87
numero de passageiros x tripulantes = 1.0
------ Insira os Dados do 10° Navio ------
Capacidade do tanque: 450
Numero de Passageiros: 87
Preço: 300.0
Numero de Tripulantes: 29
------ Listagem dos Dados do 10° Navio ------
Capacidade do tanque: 450
NumeroPassageiros: 87
Preço: 300.0
Numero de Tripulantes: 29
numero de passageiros x tripulantes = 1.0
BUILD SUCCESSFUL (total time: 12 minutes 28 seconds)
6 CONCLUSÃO
Trabalho realizado em java apresentando as respostas como solicitado no
enunciado. Criando uma subclasse atendendo às necessidades das subclasses,
com todas as funcionalidades comuns às classes similares. Foi criado uma
aplicação que rege, por meio de um vetor único com dez objetos de cada tipo,
utilizando sempre um construtor vazio. Utilizando o tratamento de execuções
20
para proteger a aplicação contra possíveis entradas de dados inválidos com os
métodos de classe Scanner.
Como solicitado foi criado o diagrama de hierarquia das classes e defina
onde contém cada atributo após a aplicação do conceito de herança.
Determinando a hierarquia, desenvolvendo separadamente as classes (incluindo
a classe de aplicação). O diagrama foi desenvolvido UML após ser instalado no
Netbeans.
REFERÊNCIAS
NASCIMENTO, Adriana; CAVALCANTI, Theo; LIMA, Lydianna. Programação
Orientada a Objetos I.Projeto Gráfico UVA, 2019.
RAFEEQ, Dr; How to generate UML diagram in NetBeans 2020. Youtube. Dispnível
em: < https://www.youtube.com/watch?v=i-HFFxj3Klk&ab_channel=Dr.Rafeeq>.
Acesso em 16 set. 2022.
PINTO, Pérez, Patricio; [EasyUML] Diagrama de clases con Netbeans 8.2. Youtube.
Disponível em: <
https://www.youtube.com/watch?v=z3wvygC1VBc&ab_channel=PatricioP%C3%A9re
zPinto>. Acesso em 16 set. 2022.
TELLES, Josué, Marcelo; Geração de Classe Java com Diagrama UML no
NetBeans. Youtube. Disponível em: <
https://www.youtube.com/watch?v=J8DPbkuznZQ&ab_channel=MarceloJosu%C3%
A9Telles>. Acesso em 16 set. 2022.
CIMINO, Charly; Diagrama UML Automático en NETBEANS con EasyUML.
Youtube. Disponível em: <
https://www.youtube.com/watch?v=MiysL0MC2ck&t=3s&ab_channel=CharlyCimino>
. Acesso em 16 set. 2022.
https://www.youtube.com/watch?v=i-HFFxj3Klk&ab_channel=Dr.Rafeeq
https://www.youtube.com/watch?v=z3wvygC1VBc&ab_channel=PatricioP%C3%A9rezPinto
https://www.youtube.com/watch?v=z3wvygC1VBc&ab_channel=PatricioP%C3%A9rezPinto
https://www.youtube.com/watch?v=J8DPbkuznZQ&ab_channel=MarceloJosu%C3%A9Telles
https://www.youtube.com/watch?v=J8DPbkuznZQ&ab_channel=MarceloJosu%C3%A9Telles
https://www.youtube.com/watch?v=MiysL0MC2ck&t=3s&ab_channel=CharlyCimino