Buscar

Prévia do material em texto

Sumário
Desenvolvimento de projeto de aplicação com uso de vetores de objetos com tratamento de exceções	2
Introdução a documentação	3
Diagrama de hierarquia de classes	4
Codificação em linguagem Java – Superclasse	5
Codificação em linguagem Java – Classe Navio	6
Codificação em linguagem Java – Classe Avião	8
Codificação em linguagem Java – Aplicação	10
Entrada de dados pelo usuário	12
Resultado impresso através da entrada de dados	16
Conclusão	20
Bibliografia	20
Desenvolvimento de projeto de aplicação com uso de vetores de objetos com tratamento de exceções
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.
Introdução a documentação
Abordaremos um projeto com aplicação em linguagem Java, criaremos uma superclasse (pai) que possuirá dois métodos construtores, atributos com herança, atributos protegidos contra acesso direto e classes (filhas) com funcionalidades métodos de acesso setters e getters. 
Observações de classes:
	 Classe
	Atributos
	Métodos
	 Aviao
	Prefixo : Texto
CapacidadeTanque : inteiro
NumeroPassageiros : inteiro
Preco : real
DataRevisao : Texto
	· Acesso (setters e getters).
· 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.
Diagrama de hierarquia de classes
Como podemos visualizar abaixo, uma pequena representação em diagrama da lógica de programação que será aplicada a essas classes.
Codificação em linguagem Java – Superclasse
import java.util.Scanner;
// Classe Transporte (superclasse)
public abstract class Transporte {
 protected int capacidadeTanque;
 protected int numeroPassageiros;
 protected double preco;
 // Construtor padrão
 public Transporte() {
 this.capacidadeTanque = 0;
 this.numeroPassageiros = 0;
 this.preco = 0.0;
 }
 // Construtor com parâmetros
 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 imprimir() {
 System.out.println("Capacidade do tanque: " + capacidadeTanque);
 System.out.println("Número de passageiros: " + numeroPassageiros);
 System.out.println("Preço: " + preco);
 }
 public void setPreco(double preco) {
 this.preco = preco;
 }
 }
Codificação em linguagem Java – Classe Navio
import java.util.Scanner;
public class Navio extends Transporte {
 private String nome;
 private String dataLancamento;
 private int numeroTripulantes;
 public Navio() {
 }
 public Navio(String nome, int capacidadeTanque, int numeroPassageiros, double preco, String dataLancamento, int numeroTripulantes) {
 super(capacidadeTanque, numeroPassageiros, preco);
 this.nome = nome;
 this.dataLancamento = dataLancamento;
 this.numeroTripulantes = numeroTripulantes;
 }
 public Navio (String nome){
 this.nome = nome;
 }
 public Navio(String nome, String dataLancamento){
 this.nome = nome;
 this.dataLancamento = dataLancamento;
 }
 public Navio( int numeroTripulantes, String nome, String dataLancamento){
 this.numeroTripulantes = numeroTripulantes;
 this.nome = nome;
 this.dataLancamento = dataLancamento;
 }
 //Getters e Setters
 public void setNome(String nome) {
 this.nome = nome;
 }
 public String getNome() {
 return nome;
 }
 public void setDataLancamento (String dataLancamento) {
 this.dataLancamento = dataLancamento;
 }
 public String getDataLancamento() {
 return dataLancamento;
 }
 public int getNumeroTripulantes() {
 return numeroTripulantes;
 }
 public void setNumeroTripulantes(int numeroTripulantes) {
 this.numeroTripulantes = numeroTripulantes;
 }
 public void imprimir() {
 super.imprimir();
 System.out.println("Nome: " + nome);
 System.out.println("Data Lançamento: " + dataLancamento);
 System.out.println("Numero de Tripulantes" + numeroTripulantes);
 }
 public double passageirosPorTripulantes(){
 return this.numeroPassageiros/this.numeroTripulantes;
 }
 public void entrada() {
 Scanner sc = new Scanner(System.in);
 try {
 System.out.print("Digite o nome: ");
 nome = sc.nextLine();
 System.out.print("Digite a capacidade do tanque: ");
 capacidadeTanque = sc.nextInt();
 System.out.print("Digite o número de passageiros: ");
 numeroPassageiros = sc.nextInt();
 System.out.print("Digite o número de Tripulantes: ");
 numeroTripulantes = sc.nextInt();
 System.out.print("Digite o preço: ");
 preco = sc.nextDouble();
 sc.nextLine();
 System.out.print("Digite a data de Lançamento: ");
 dataLancamento = sc.nextLine();
 } catch (Exception e) {
 System.out.println("Entrada inválida. Tente novamente.");
 entrada(); // Chama novamente o método para tentar novamente
 }
 }
}
Codificação em linguagem Java – Classe Avião
import java.util.Scanner;
public class Aviao extends Transporte {
 private String prefixo;
 private String dataRevisao;
 // Construtor vazio
 public Aviao() {
 }
 // Construtor com parâmetros
 public Aviao(String prefixo, int capacidadeTanque, int numeroPassageiros, double preco, String dataRevisao) {
 super(capacidadeTanque, numeroPassageiros, preco);
 this.prefixo = prefixo;
 this.dataRevisao = dataRevisao;
 }
 // Setters e Getters
 public void setPrefixo(String prefixo) {
 this.prefixo = prefixo;
 }
 public String getPrefixo() {
 return prefixo;
 }
 public void setCapacidadeTanque(int capacidadeTanque) {
 this.capacidadeTanque = capacidadeTanque;
 }
 public int getCapacidadeTanque() {
 return capacidadeTanque;
 }
 public void setNumeroPassageiros(int numeroPassageiros) {
 this.numeroPassageiros = numeroPassageiros;
 }
 public int getNumeroPassageiros(){
 return numeroPassageiros;
 }
 public void setPreco(double preco) {
 this.preco = preco;
 }
 public double getPreco() {
 return preco;
 }
 public void setDataRevisao(String dataRevisao) {
 this.dataRevisao = dataRevisao;
 }
 public String getDataRevisao() {
 return dataRevisao;
 }
 public void imprimir() {
 super.imprimir();
 System.out.println("Prefixo: " + prefixo);
 System.out.println("Data de revisão: " + dataRevisao);
 }
 // Método para realizar a entrada de dados pelo teclado
 public void entrada() {
 Scanner sc = new Scanner(System.in);
 try {
 System.out.print("Digite o prefixo: ");
 prefixo = sc.nextLine();
 System.out.print("Digite a capacidade do tanque: ");
 capacidadeTanque = sc.nextInt();
 System.out.print("Digite o número de passageiros: ");
 numeroPassageiros = sc.nextInt();
 System.out.print("Digite o preço: ");
 preco = sc.nextDouble();
 sc.nextLine();
 System.out.print("Digite a data de revisão: ");
 dataRevisao = sc.nextLine();
 } catch (Exception e) {
 System.out.println("Entrada inválida. Tente novamente.");
 entrada(); // Chama novamente o método para tentar novamente
 }
 }
 // Método para reajustar o preço do avião
 public void reajustarPreco(double percentual) {
 this.preco = this.preco * (1 + percentual / 100);
 }
}
Codificação em linguagem Java – Aplicação
import java.util.Scanner;
public class Aviao extends Transporte {
 private String prefixo;
 private String dataRevisao;
 // Construtor vazio
 public Aviao() {
 }
 // Construtor com parâmetros
 public Aviao(String prefixo, int capacidadeTanque, int numeroPassageiros, double preco, String dataRevisao) {
 super(capacidadeTanque, numeroPassageiros, preco);
 this.prefixo = prefixo;
 this.dataRevisao = dataRevisao;
 }
 // Setters e Getters
 public void setPrefixo(String prefixo) {
 this.prefixo = prefixo;
 }
 public String getPrefixo() {
 return prefixo;
 }
 public void setCapacidadeTanque(int capacidadeTanque) {
 this.capacidadeTanque = capacidadeTanque;
 }
 public int getCapacidadeTanque() {
 return capacidadeTanque;
 }
 public void setNumeroPassageiros(int numeroPassageiros) {
 this.numeroPassageiros = numeroPassageiros;
 }
 public int getNumeroPassageiros() {
 return numeroPassageiros;
 }
 public void setPreco(double preco) {
 this.preco = preco;
 }
 public double getPreco() {
 return preco;
 }
 public void setDataRevisao(String dataRevisao) {
 this.dataRevisao = dataRevisao;
 }
 public String getDataRevisao() {
 return dataRevisao;
 }
 public void imprimir() {
 super.imprimir();
 System.out.println("Prefixo: " + prefixo);
 System.out.println("Data de revisão: " + dataRevisao);
 }
 // Método para realizar a entrada de dados pelo teclado
 public void entrada() {
 Scanner sc = new Scanner(System.in);
 try {
 System.out.print("Digite o prefixo: ");
 prefixo = sc.nextLine();
 System.out.print("Digite a capacidade do tanque: ");
 capacidadeTanque = sc.nextInt();
 System.out.print("Digite o número de passageiros: ");
 numeroPassageiros = sc.nextInt();
 System.out.print("Digite o preço: ");
 preco = sc.nextDouble();
 sc.nextLine();
 System.out.print("Digite a data de revisão: ");
 dataRevisao = sc.nextLine();
 } catch (Exception e) {
 System.out.println("Entrada inválida. Tente novamente.");
 entrada(); // Chama novamente o método para tentar novamente
 }
 }
 // Método para reajustar o preço do avião
 public void reajustarPreco(double percentual) {
 this.preco = this.preco * (1 + percentual / 100);
 }
}
Entrada de dados pelo usuário
Digite o prefixo: Ancora
Digite a capacidade do tanque: 200
Digite o número de passageiros: 100
Digite o preço: 100,00
Digite a data de revisão: 10.10.2020
Digite o prefixo: Ancora
Digite a capacidade do tanque: 350
Digite o número de passageiros: 200
Digite o preço: 120,00
Digite a data de revisão: 10.10.2020
Digite o prefixo: Ancora
Digite a capacidade do tanque: 120
Digite o número de passageiros: 130
Digite o preço: 130,00
Digite a data de revisão: 10.10.2020
Digite o prefixo: Ancora
Digite a capacidade do tanque: 100
Digite o número de passageiros: 40
Digite o preço: 140,00
Digite a data de revisão: 10.09.2021
Digite o prefixo: Ancor
Digite a capacidade do tanque: 400
Digite o número de passageiros: 200
Digite o preço: 90,00
Digite a data de revisão: 10.11.2023
Digite o prefixo: Ancora
Digite a capacidade do tanque: 200
Digite o número de passageiros: 305
Digite o preço: 300,00
Digite a data de revisão: 10.10.2019
Digite o prefixo: Garix
Digite a capacidade do tanque: 300
Digite o número de passageiros: 130
Digite o preço: 30,00
Digite a data de revisão: 29.08.2009
Digite o prefixo: Ancora
Digite a capacidade do tanque: 
20.11.2012
Entrada inválida. Tente novamente.
Digite o prefixo: 20.10.2012
Digite a capacidade do tanque: 30.01.2020
Entrada inválida. Tente novamente.
Digite o prefixo: Ancora
Digite a capacidade do tanque: 459
Digite o número de passageiros: 259
Digite o preço: 399,99
Digite a data de revisão: 10.03.2022
Digite o prefixo: Pierce
Digite a capacidade do tanque: 399
Digite o número de passageiros: 300
Digite o preço: 39,00
Digite a data de revisão: 30.04.2021
Digite o prefixo: Fighter
Digite a capacidade do tanque: 500
Digite o número de passageiros: 389
Digite o preço: 350,00 
Digite a data de revisão: 20.01.2019
Digite o nome: Ancor
Digite a capacidade do tanque: 3000
Digite o número de passageiros: 850
Digite o número de Tripulantes: 388
Digite o preço: 200
Digite a data de Lançamento: 20.01.2021
Digite o nome: Ancor
Digite a capacidade do tanque: 799
Digite o número de passageiros: 300
Digite o número de Tripulantes: 200
Digite o preço: 400,00
Digite a data de Lançamento: 07.07.2021
Digite o nome: Ancor
Digite a capacidade do tanque: 899
Digite o número de passageiros: 3434
Digite o número de Tripulantes: 232
Digite o preço: 800,00
Digite a data de Lançamento: 20.02.2020
Digite o nome: Acoria
Digite a capacidade do tanque: 20323
Digite o número de passageiros: 232
Digite o número de Tripulantes: 234
Digite o preço: 800,00
Digite a data de Lançamento: 20.02.2018
Digite o nome: Ancorinha
Digite a capacidade do tanque: 3435
Digite o número de passageiros: 221
Digite o número de Tripulantes: 233
Digite o preço: 600,00
Digite a data de Lançamento: 03.04.2020
Digite o nome: Ancoraa
Digite a capacidade do tanque: 2452
Digite o número de passageiros: 235
Digite o número de Tripulantes: 654
Digite o preço: 800,00
Digite a data de Lançamento: 06.06.2020
Digite o nome: Angora
Digite a capacidade do tanque: 5453
Digite o número de passageiros: 235
Digite o número de Tripulantes: 676
Digite o preço: 800,00
Digite a data de Lançamento: 04.04.2021
Digite o nome: fila
Digite a capacidade do tanque: 2455
Digite o número de passageiros: 356
Digite o número de Tripulantes: 653
Digite o preço: 700,00
Digite a data de Lançamento: 04.04.2020
Digite o nome: tyla
Digite a capacidade do tanque: 42546
Digite o número de passageiros: 343
Digite o número de Tripulantes: 467
Digite o preço: 400,00
Digite a data de Lançamento: 04.04.2020
Digite o nome: vyla
Digite a capacidade do tanque: 3435
Digite o número de passageiros: 343
Digite o número de Tripulantes: 467
Digite o preço: 900,00
Digite a data de Lançamento: 08.08.2021
Resultado impresso através da entrada de dados
Informações dos aviões:
Prefixo: Ancora
Data de revisão: 10.10.2020
Capacidadedo tanque: 200
Número de passageiros: 100
Preço: 100.0
Prefixo: Ancora
Data de revisão: 10.10.2020
Capacidade do tanque: 350
Número de passageiros: 200
Preço: 120.0
Prefixo: Ancora
Data de revisão: 10.10.2020
Capacidade do tanque: 120
Número de passageiros: 130
Preço: 130.0
Prefixo: Ancora
Data de revisão: 10.10.2020
Capacidade do tanque: 100
Número de passageiros: 40
Preço: 140.0
Prefixo: Ancora
Data de revisão: 10.09.2021
Capacidade do tanque: 400
Número de passageiros: 200
Preço: 90.0
Prefixo: Ancor
Data de revisão: 10.11.2023
Capacidade do tanque: 200
Número de passageiros: 305
Preço: 300.0
Prefixo: Ancora
Data de revisão: 10.10.2019
Capacidade do tanque: 300
Número de passageiros: 130
Preço: 30.0
Prefixo: Garix
Data de revisão: 29.08.2009
Capacidade do tanque: 459
Número de passageiros: 259
Preço: 399.99
Prefixo: Ancora
Data de revisão: 10.03.2022
Capacidade do tanque: 399
Número de passageiros: 300
Preço: 39.0
Prefixo: Pierce
Data de revisão: 30.04.2021
Capacidade do tanque: 500
Número de passageiros: 389
Preço: 350.0
Prefixo: Fighter
Data de revisão: 20.01.2019
Informações dos navios:
Capacidade do tanque: 3000
Número de passageiros: 850
Preço: 200.0
Nome: Ancor
Data Lançamento: 20.01.2021
Numero de Tripulantes388
Capacidade do tanque: 799
Número de passageiros: 300
Preço: 400.0
Nome: Ancor
Data Lançamento: 07.07.2021
Numero de Tripulantes200
Capacidade do tanque: 899
Número de passageiros: 3434
Preço: 800.0
Nome: Ancor
Data Lançamento: 20.02.2020
Numero de Tripulantes232
Capacidade do tanque: 20323
Número de passageiros: 232
Preço: 800.0
Nome: Acoria
Data Lançamento: 20.02.2018
Numero de Tripulantes234
Capacidade do tanque: 3435
Número de passageiros: 221
Preço: 600.0
Nome: Ancorinha
Data Lançamento: 03.04.2020
Numero de Tripulantes233
Capacidade do tanque: 2452
Número de passageiros: 235
Preço: 800.0
Nome: Ancoraa
Data Lançamento: 06.06.2020
Numero de Tripulantes654
Capacidade do tanque: 5453
Número de passageiros: 235
Preço: 800.0
Nome: Angora
Data Lançamento: 04.04.2021
Numero de Tripulantes676
Capacidade do tanque: 2455
Número de passageiros: 356
Preço: 700.0
Nome: fila
Data Lançamento: 04.04.2020
Numero de Tripulantes653
Capacidade do tanque: 42546
Número de passageiros: 343
Preço: 400.0
Nome: tyla
Data Lançamento: 04.04.2020
Numero de Tripulantes467
Capacidade do tanque: 3435
Número de passageiros: 343
Preço: 900.0
Nome: vyla
Data Lançamento: 08.08.2021
Numero de Tripulantes467
Process finished with exit code 0
Conclusão
Conforme é apresentado pelo diagrama, codificação e impressão acima, foram desenvolvidos de acordo com o que é proposto pelo enunciado. Dadas as classes, foram criadas uma superclasse para que atendesse às necessidades das subclasses, com todas as funcionalidades comuns às classes similares.
Bibliografia
Curso POO Teoria #02a - O que é um Objeto?
https://www.youtube.com/watch?v=aR7CKNFECx0&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=3&ab_channel=CursoemV%C3%ADdeo
Curso POO Teoria #01a - O que é Programação Orientada a Objetos
https://www.youtube.com/watch?v=KlIL63MeyMY&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=1&ab_channel=CursoemV%C3%ADdeo
Curso POO Teoria #10a - Herança (Parte 1)
https://www.youtube.com/watch?v=_PZldwo0vVo&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=21&ab_channel=CursoemV%C3%ADdeo
Curso POO Java #02b - Criando Classes e Objetos em Java
https://www.youtube.com/watch?v=wNaoX6VOj54&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY&index=4&ab_channel=CursoemV%C3%ADdeo
image2.png
image3.jpeg
image4.png
image1.png

Mais conteúdos dessa disciplina