Prévia do material em texto
CENTRO UNIVERSITÁRIO JORGE AMADO – UNIJORGE ANÁLISE E
DESENVOLVIMENTO DE SISTEMAS
YURI DOS SANTOS FERREIRA
PROGRAMAÇÃO ORIENTADA A OBJETO
SALVADOR
2022
2
YURI DOS SANTOS FERREIRA
PROGRAMAÇÃO ORIENTADA A OBJETO
Trabalho apresentado a língua brasileira de sinais para composição da nota AVA1
do Centro Universitário Jorge Amado-UNIJORGE PROGRAMAÇÃO ORIENTADA A
OBJETO
Orientadores:
SALVADOR 2022
3
Sumário
Introdução .......................................................................................................................... 4
Conteúdo ........................................................................................................................... 5
Documentação do projeto com o gráfico hierárquico das classes ............................... 5
Codificação de todas as classes e aplicação ................................................................ 6
Programa Principal “Aplicação” ................................................................................... 6
Super Classe “Transporte” ............................................................................................ 7
Sub Classe “Navio” ....................................................................................................... 11
Sub Classe “Aviao” ....................................................................................................... 16
Resultados dos testes realizados com o projeto ......................................................... 18
Conclusão do trabalho..................................................................................................... 30
Bibliografia ....................................................................................................................... 31
4
Introdução
Este trabalho visa demonstrar o uso de vetores e matrizes de objetos
facilitando o desenvolvimento do projeto, diminuindo assim a complexidade e
favorecendo a manutenção do sistema. A utilização da SuperClasse
"Transporte" atende às necessidades das SubClasses "Avião e Navio", com
todas as funcionalidades comuns às classes similares.
5
Conteúdo
Documentação do projeto com o gráfico hierárquico das classes
6
Codificação de todas as classes e aplicação
Programa Principal “Aplicação”
package aplicacao;
import java.util.Scanner;
import transporte.*;
public class Aplicacao {
public static void main(String[] args) {
Aviao a[] = new Aviao[10];
Navio n[] = new Navio[10];
System.out.println("\n----- Aviões ---- \n");
for (int i=0; i<a.length; i++) {
a[i] = new Aviao();
Scanner scan = new Scanner(System.in);
try{
System.out.print("\nPercentual: ");
Double percentual = scan.nextDouble();
a[i].entrada();
a[i].reajustarPreco(percentual);
a[i].imprimir();
}catch(Exception e){
7
System.out.print("Tipo Inválido. Atribuição Automática de Valor Default de
4% ");
Double percentual = 4.0;
a[i].entrada();
a[i].reajustarPreco(percentual);
a[i].imprimir();
}
Aviao av01 = new Aviao();
av01.cadastrar(100, 50, 4250, "Grub", "01/01/1985");
av01.imprimir();
}
System.out.println("\n----- Navios ----\n");
for (int i=0; i<n.length; i++) {
n[i] = new Navio();
n[i].entrada();
n[i].imprimir();
System.out.println("Imprimindo a Relação passageiros por Tripulantes: " +
n[i].passageirosPorTripulantes());
}
nav01.cadastrar(500, 150, 400f, "Grub", "25/04", 10);
nav01.imprimir();
}
}
Super Classe “Transporte”
package transporte;
import java.util.Scanner;
public class Transporte {
8
protected int capacidadeTanque, numeroPassageiros;
protected double preco;
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 Transporte() {
}
9
public Transporte(int capacidadeTanque) {
this.capacidadeTanque = capacidadeTanque;
}
public Transporte(int capacidadeTanque, int numeroPassageiros) {
this.capacidadeTanque = capacidadeTanque;
this.numeroPassageiros = numeroPassageiros;
}
public Transporte(double preco) {
this.preco = preco;
}
public Transporte(int capacidadeTanque, int numeroPassageiros, double
preco) {
this.capacidadeTanque = capacidadeTanque;
this.numeroPassageiros = numeroPassageiros;
this.preco = preco;
}
public void cadastrar (int capacidadeTanque, int numeroPassageiros, double
preco) {
setCapacidadeTanque(capacidadeTanque);
setNumeroPassageiros(numeroPassageiros);
setPreco(preco);
}
public void imprimir() {
System.out.println();
System.out.println("Capacidade do Tanque: " +getCapacidadeTanque());
10
System.out.println("Número de passageiros: " +getNumeroPassageiros());
System.out.println("Preco: " +getPreco());
}
int indice = 0;
public void entrada () {
Scanner scan = new Scanner(System.in);
while(indice == 0){
try {
System.out.print("\n\nDigite a capacidade do tanque: ");
setCapacidadeTanque(scan.nextInt());
indice = 1;
}catch(Exception e){
System.out.print("Valor Incorreto .... " +e +"\n");
entrada();
}
}
while(indice == 1){
try{
System.out.print("Digite o número de passageiros: ");
setNumeroPassageiros(scan.nextInt());
indice = 2;
}catch(Exception e){
System.out.print("Valor de passageiros invalidos " +e + "\n");
indice = 1;
entrada();
11
}
}
while(indice == 2){
try{
System.out.print("Digite o preço: ");
setPreco(scan.nextDouble());
indice = 3;
}catch(Exception e){
System.out.print("Valor de Preço " +e + "\n");
// System.out.print("Digite o número de passageiros: ");
indice = 2;
entrada();
}
}
}
}
Sub Classe “Navio”
package transporte;
import java.util.Scanner;
public class Navio extends Transporte {
private String nome, dataLancamento;
private int numeroTripulantes;
public String getNome() {
12
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDataLancamento() {
return dataLancamento;
}
public void setDataLancamento(String dataLancamento) {
this.dataLancamento = dataLancamento;
}
public int getNumeroTripulantes() {
return numeroTripulantes;
}
public void setNumeroTripulantes(int numeroTripulantes) {
this.numeroTripulantes = numeroTripulantes;
}
public void cadastrar (int capacidadeTanque, int numeroPassageiros, double
preco, String nome, String dataLancamento, int numeroTripulantes) {
super.cadastrar(capacidadeTanque,numeroPassageiros,preco);
setNome(nome);
setDataLancamento(dataLancamento);
setNumeroTripulantes(numeroTripulantes);
13
}
public Navio() {
}
public Navio(String nome) {
this.nome = nome;
}
public Navio(String nome, String dataLancamento) {
this.nome = nome;
this.dataLancamento = dataLancamento;
}
public Navio(String nome, String dataLancamento, int numeroTripulantes) {
this.nome = nome;
this.dataLancamento = dataLancamento;
this.numeroTripulantes = numeroTripulantes;
}
public Navio(String nome, String dataLancamento, int numeroTripulantes, int
capacidadeTanque, int numeroPassageiros, double preco) {
super(capacidadeTanque, numeroPassageiros, preco);
this.nome = nome;this.dataLancamento = dataLancamento;
this.numeroTripulantes = numeroTripulantes;
}
@Override
public void imprimir () {
super.imprimir();
System.out.println("Nome: " +getNome());
14
System.out.println("Data Lançamento: " +getDataLancamento());
System.out.println("Número de Tripulantes: " +getNumeroTripulantes());
}
@Override
public void entrada() {
Scanner scan = new Scanner(System.in);
super.entrada();
while(indice == 3){
try{
System.out.print("Digite o Nome: ");
setNome(scan.nextLine());
indice = 4;
}catch(Exception e){
System.out.print("Nome Invalidos " +e + "\n");
indice = 3;
entrada();
}
}
while(indice == 4){
try{
System.out.print("Digite a Data de Lançamento: ");
setDataLancamento(scan.nextLine());
indice = 5;
}catch(Exception e){
System.out.print("Data Invalida " +e + "\n");
indice = 4;
entrada();
15
}
}while(indice == 5){
try{
System.out.print("Digite o número de tripulantes: ");
setNumeroTripulantes(scan.nextInt());
if(this.getNumeroTripulantes()>0){
indice = 0;
}else{
System.out.print("Valor menor que 1 (um) de Tripulantes \n");
indice = 5;
this.entrada();
}
}catch(Exception e){
System.out.print("Valor de Tripulantes Invalidos " +e + "\n");
indice = 5;
this.entrada();
}
}
}
public float passageirosPorTripulantes(){
return getNumeroPassageiros()/getNumeroTripulantes();
}
}
16
Sub Classe “Aviao”
package transporte;
import java.util.Scanner;
public class Aviao extends Transporte {
private String prefixo, 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;
}
public Aviao() {
}
public Aviao(String prefixo) {
this.prefixo = prefixo;
17
}
public Aviao(String prefixo, String dataRevisao) {
this.prefixo = prefixo;
this.dataRevisao = dataRevisao;
}
public Aviao(double preco) {
super(preco);
}
public Aviao(int capacidadeTanque, int numeroPassageiros, double preco) {
super(capacidadeTanque, numeroPassageiros, preco);
}
public void cadastrar (int capacidadeTanque, int numeroPassageiros,
double preco, String prefixo, String dataRevisao) {
super.cadastrar(capacidadeTanque,numeroPassageiros,preco);
setPrefixo(prefixo);
setDataRevisao(dataRevisao);
}
@Override
public void imprimir () {
super.imprimir();
System.out.println("Prefixo: " +getPrefixo());
System.out.println("Data da revisão: " +getDataRevisao());
}
18
@Override
public void entrada() {
Scanner scan = new Scanner(System.in);
super.entrada();
System.out.print("Digite o Prefixo: ");
setPrefixo(scan.nextLine());
System.out.print("Digite a Data da Revisão: ");
setDataRevisao(scan.nextLine());
}
public void reajustarPreco(double percentual) {
setPreco( getPreco() + (getPreco() * (percentual/100)));
}
}
Resultados dos testes realizados com o projeto
run:
----- Aviões ----
Defina o Percentual: 15
19
Digite a capacidade do tanque: 1500
Digite o número de passageiros: 250
Digite o preço: 25
Digite o Prefixo: iguacu
Digite a Data da Revisão: 12/04/2021
Capacidade do Tanque: 1500
Número de passageiros: 250
Preco: 28.75
Prefixo: iguacu
Data da revisão: 12/04/2021
Defina o Percentual: 20
Digite a capacidade do tanque: 500
Digite o número de passageiros: 0
Digite o preço: 50,45
Digite o Prefixo: Vxien
Digite a Data da Revisão: 05/05/2020
Capacidade do Tanque: 500
Número de passageiros: 0
Preco: 60.540000000000006
Prefixo: Vxien
Data da revisão: 05/05/2020
Defina o Percentual: 50
20
Digite a capacidade do tanque: 46
Digite o número de passageiros: 100
Digite o preço: 120
Digite o Prefixo: GUi
Digite a Data da Revisão: 06/12/2019
Capacidade do Tanque: 46
Número de passageiros: 100
Preco: 180.0
Prefixo: GUi
Data da revisão: 06/12/2019
Defina o Percentual: 100
Digite a capacidade do tanque: 60
Digite o número de passageiros: 48
Digite o preço: 49
Digite o Prefixo: FAUNA
Digite a Data da Revisão: 09/08/2022
Capacidade do Tanque: 60
Número de passageiros: 48
Preco: 98.0
Prefixo: FAUNA
Data da revisão: 09/08/2022
Defina o Percentual: 79
21
Digite a capacidade do tanque: 12
Digite o número de passageiros: 90
Digite o preço: 100
Digite o Prefixo: BrZi
Digite a Data da Revisão: 02/02/2023
Capacidade do Tanque: 12
Número de passageiros: 90
Preco: 179.0
Prefixo: BrZi
Data da revisão: 02/02/2023
Defina o Percentual: 80
Digite a capacidade do tanque: 78
Digite o número de passageiros: 120
Digite o preço: 28,75
Digite o Prefixo: DUdl
Digite a Data da Revisão: 07/11/2020
Capacidade do Tanque: 78
Número de passageiros: 120
Preco: 51.75
Prefixo: DUdl
Data da revisão: 07/11/2020
Defina o Percentual: 95
22
Digite a capacidade do tanque: 150
Digite o número de passageiros: 0
Digite o preço: 90
Digite o Prefixo: Horo
Digite a Data da Revisão: 30/07/2020
Capacidade do Tanque: 150
Número de passageiros: 0
Preco: 175.5
Prefixo: Horo
Data da revisão: 30/07/2020
Defina o Percentual: 25
Digite a capacidade do tanque: 40
Digite o número de passageiros: 10
Digite o preço: 0,50
Digite o Prefixo: Ale
Digite a Data da Revisão: 30/02/2030
Capacidade do Tanque: 40
Número de passageiros: 10
Preco: 0.625
Prefixo: Ale
Data da revisão: 30/02/2030
Defina o Percentual: 36
23
Digite a capacidade do tanque: 800
Digite o número de passageiros: 64
Digite o preço: 1500
Digite o Prefixo: Prog
Digite a Data da Revisão: 12/12/2025
Capacidade do Tanque: 800
Número de passageiros: 64
Preco: 2040.0
Prefixo: Prog
Data da revisão: 12/12/2025
Defina o Percentual: 100
Digite a capacidade do tanque: 560
Digite o número de passageiros: 10
Digite o preço: 81
Digite o Prefixo: Prtss
Digite a Data da Revisão: 25/07/2020
Capacidade do Tanque: 560
Número de passageiros: 10
Preco: 162.0
Prefixo: Prtss
Data da revisão: 25/07/2020
24
----- Navios ----
Digite a capacidade do tanque: 500
Digite o número de passageiros: 50
Digite o preço: 45
Digite o Nome: BRASIL
Digite a Data de Lançamento: 12/12/2019
Digite o número de tripulantes: 10
Capacidade do Tanque: 500
Número de passageiros: 10
Preco: 45.0
Nome: BRASIL
Data Lançamento: 12/12/2019
Número de Tripulantes: 50
Imprimindo a Relação passageiros por Tripulantes: 5.0
25
Digite a capacidade do tanque: 10000
Digite o número de passageiros: 10
Digite o preço: 250
Digite o Nome: AVI200
Digite a Data de Lançamento: 01/02/2020
Digite o número de tripulantes: 4
Capacidade do Tanque: 10000
Número de passageiros: 10
Preco: 250.0
Nome: AVI200
Data Lançamento: 01/02/2020
Número de Tripulantes: 4
Imprimindo a Relação passageiros por Tripulantes: 2.0
Digite a capacidade do tanque: 780
Digite o número de passageiros: 100
Digite o preço: 400
Digite o Nome: BRZAV1
Digite a Data de Lançamento: 02/03/2019
Digite o número de tripulantes: 10
Capacidade do Tanque: 780
Número de passageiros: 100
Preco: 400.0
26
Nome: BRZAV1
Data Lançamento: 02/03/2019
Número de Tripulantes: 10
Imprimindo a Relação passageiros por Tripulantes: 10.0
Digite a capacidade do tanque: 900
Digite o número de passageiros: 40
Digite o preço: 2,50
Digite o Nome: VAREJO
Digite a Data de Lançamento: 25/11/2019
Digite o número detripulantes: 6
Capacidade do Tanque: 900
Número de passageiros: 40
Preco: 2.5
Nome: VAREJO
Data Lançamento: 25/11/2019
Número de Tripulantes: 6
Imprimindo a Relação passageiros por Tripulantes: 6.0
Digite a capacidade do tanque: 82000
Digite o número de passageiros: 300
Digite o preço: 45
Digite o Nome: BOTAFOGO
Digite a Data de Lançamento: 01/01/2021
Digite o número de tripulantes: 12
Capacidade do Tanque: 82000
Número de passageiros: 300
Preco: 45.0
27
Nome: BOTAFOGO
Data Lançamento: 01/01/2021
Número de Tripulantes: 12
Imprimindo a Relação passageiros por Tripulantes: 25.0
Digite a capacidade do tanque: 40000
Digite o número de passageiros: 60
Digite o preço: 21
Digite o Nome: TRUST
Digite a Data de Lançamento: 07/07/2020
Digite o número de tripulantes: 8
Capacidade do Tanque: 40000
Número de passageiros: 60
Preco: 21.0
Nome: TRUST
Data Lançamento: 07/07/2020
Número de Tripulantes: 8
Imprimindo a Relação passageiros por Tripulantes: 7.0
Digite a capacidade do tanque: 965000
Digite o número de passageiros: 9
Digite o preço: 800
Digite o Nome: PRESIDENTE
Digite a Data de Lançamento: 21/05/2021
Digite o número de tripulantes: 3
Capacidade do Tanque: 965000
Número de passageiros: 9
Preco: 800.0
28
Nome: PRESIDENTE
Data Lançamento: 21/05/2021
Número de Tripulantes: 3
Imprimindo a Relação passageiros por Tripulantes: 3.0
Digite a capacidade do tanque: 50
Digite o número de passageiros: 2
Digite o preço: 4
Digite o Nome: BASICO
Digite a Data de Lançamento: 27/01/2021
Digite o número de tripulantes: 1
Capacidade do Tanque: 50
Número de passageiros: 2
Preco: 4.0
Nome: BASICO
Data Lançamento: 27/01/2021
Número de Tripulantes: 1
Imprimindo a Relação passageiros por Tripulantes: 2.0
Digite a capacidade do tanque: 700
Digite o número de passageiros: 30
Digite o preço: 250
Digite o Nome: POO
Digite a Data de Lançamento: 03/03/2021
Digite o número de tripulantes: 3
Capacidade do Tanque: 700
Número de passageiros: 30
Preco: 250.0
29
Nome: POO
Data Lançamento: 03/03/2021
Número de Tripulantes: 3
Imprimindo a Relação passageiros por Tripulantes: 10.0
Digite a capacidade do tanque: 150000
Digite o número de passageiros: 200
Digite o preço: 150
Digite o Nome: GUGA
Digite a Data de Lançamento: 15/07/2020
Digite o número de tripulantes: 10
Capacidade do Tanque: 150000
Número de passageiros: 200
Preco: 150.0
Nome: GUGA
Data Lançamento: 15/07/2020
Número de Tripulantes: 10
Imprimindo a Relação passageiros por Tripulantes: 20.0
CONSTRUÍDO COM SUCESSO (tempo total: 15 minutos 52 segundos)
30
Conclusão do trabalho
Este trabalho demonstrou na prática os conceitos de Herança, um dos
pilares de Programação Orientada a Objetos, determinando a hierarquia de
classes e abordando o uso Vetores e Matrizes para o uso de construtores no
instanciamento dos objetos. O conceito de tratamento de exceções também foi
introduzido para identificar e tratar as exceções, para que o programa continue
sendo executado sem erros.
31
Bibliografia
https://www.youtube.com/watch?v=_PZldwo0vVo&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-
aGsY&index=20
CENTRO UNIVERSITÁRIO JORGE AMADO – UNIJORGE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
YURI DOS SANTOS FERREIRA
SALVADOR 2022
Programa Principal “Aplicação”
Super Classe “Transporte”
Sub Classe “Navio”
Sub Classe “Aviao”