Olá pessoal, tudo bem?
Estou fazendo um exercício e quebrando a cabeça para concluir essa classe de teste. A intenção aqui seriam cadastros de cidades e estudantes, sendo que cada estudante teria que definir uma nova senha após feito o cadastro. Acredito que eu fiz um salseiro no código, e estou com muitas dúvidas sobre como fazer isso funcionar. Alguém poderia me ajudar? Desde já agradeço a paciência.
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.*;
public class TesteFun4Study {
public static void main(String[] args) {
System.out.println("Cadastre a Cidade 1: ");
Cidade c1 = new Cidade(
Teclado.leInt("Informe o código: "),
Teclado.leString("Informe a descrição: "),
Teclado.leString("Informe a UF: ")
);
System.out.println("Cadastre o Estudante 1: ");
Estudante e1 = new Estudante(
Teclado.leInt("Informe o código: "),
Teclado.leString("Informe o nome: "),
Teclado.leString("Informe a data de nascimento: "),
Teclado.leString("Informe o e-mail: "),
Teclado.leString.Senha("Informe a senha: "),
c1
);
String senhaAnterior = Teclado.leString("Digite a senha do Estudante 1: ");
if ((e1.getSenha()).equals(senhaAnterior)) {
e1.setSenha(novaSenha);
} else {
System.out.println("Não foi possível alterar a senha! As senhas digitadas não conferem!");
}
System.out.println("Cadastre o Estudante 2: ");
Estudante e2 = new Estudante(
Teclado.leInt("Informe o código: "),
Teclado.leString("Informe o nome: "),
Teclado.leString("Informe a data de nascimento: "),
Teclado.leString("Informe o e-mail: "),
Teclado.leString("Informe a senha: "),
c1
);
String senhaAnterior = Teclado.leString("Digite a senha do Estudante 2: ");
if ((e2.getSenha()).equals(senhaAnterior)) {
e2.setSenha(novaSenha);
} else {
System.out.println("Não foi possível alterar a senha! As senhas digitadas não conferem!");
}
c1.exibeDados();
e1.exibeDados();
e2.exibeDados();
System.out.println("Cadastre a Cidade 2: ");
Cidade c2 = new Cidade(
Teclado.leInt("Informe o código: "),
Teclado.leString("Informe a descrição: "),
Teclado.leString("Informe a UF: ")
);
System.out.println("Cadastre o Estudante 3: ");
Estudante e3 = new Estudante(
Teclado.leInt("Informe o código: "),
Teclado.leString("Informe o nome: "),
Teclado.leString("Informe a data de nascimento: "),
Teclado.leString("Informe o e-mail: "),
Teclado.leString("Informe a senha: "),
c2
);
String senhaAnterior = Teclado.leString("Digite a senha do Estudante 2: ");
if ((e3.getSenha()).equals(senhaAnterior)) {
e3.setSenha(novaSenha);
} else {
System.out.println("Não foi possível alterar a senha! As senhas digitadas não conferem!");
}
System.out.println("Cadastre o Estudante 4: ");
Estudante e4 = new Estudante(
Teclado.leInt("Informe o código: "),
Teclado.leString("Informe o nome: "),
Teclado.leString("Informe a data de nascimento: "),
Teclado.leString("Informe o e-mail: "),
Teclado.leString("Informe a senha: "),
c2
);
String senhaAnterior = Teclado.leString("Digite a senha do Estudante 2: ");
if ((e4.getSenha()).equals(senhaAnterior)) {
e4.setSenha(novaSenha);
} else {
System.out.println("Não foi possível alterar a senha! As senhas digitadas não conferem!");
}
c2.exibeDados();
e3.exibeDados();
e4.exibeDados();
}
}
O que vc exatamente quer testar?
Fala Victor, blz?
Não cheguei a rodar oq vc fez mas parece q esta do jeito q vc quer.
Qual Seria a sua duvida? e cada passagem d construtor, vc ja pega a senha digitada e set no atributo, certo?
Sua duvida seria no .equals? se a variavel senhaAnterior estiver vazia, vai dar sempre q a senha não confere
Espero ter ajudado
package org.jus.trf1.trf1webapi.temp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* ------------------------------
* Vamos reescrever a classe para
* entender melhor os pontos
* ------------------------------
* @author codethebasics
*/
public class TesteFun4Study {
/**
* Você mencionou que sua intenção seriam realizar
* cadastros de CIDADES e ESTUDANTES.
* Logo, precisaremos de ações que realizem esse comportamento
* além das classes Cidade e Pessoa.
* Vamos supor que a relação entre esta classe, a classe Pessoa
* e a classe Cidade seja uma composição. Sendo assim, vamos declarar
* essas classes de forma interna (classe interna).
*/
/**
* ------------------------------------------
* Classe interna que representa um estudante
* ------------------------------------------
*/
static class Estudante {
private final Integer codigo;
private final String nome;
private final String dataNascimento;
private final String senha;
public Estudante(Integer codigo, String nome, String dataNascimento, String senha) {
this.codigo = codigo;
this.nome = nome;
this.dataNascimento = dataNascimento;
this.senha = senha;
}
public Integer getCodigo() {
return codigo;
}
public String getNome() {
return nome;
}
public String getDataNascimento() {
return dataNascimento;
}
public String getSenha() {
return senha;
}
}
/**
* ----------------------------------------
* Classe interna que representa uma cidade
* ----------------------------------------
*/
static class Cidade {
private final Integer codigo;
private final String descricao;
private final String uf;
public Cidade(Integer codigo, String descricao, String uf) {
this.codigo = codigo;
this.descricao = descricao;
this.uf = uf;
}
public Integer getCodigo() {
return codigo;
}
public String getDescricao() {
return descricao;
}
public String getUf() {
return uf;
}
}
/**
* Tudo pronto para declararmos nossas coleções que armazenarão
* os objetos Estudante e Cidade
*/
private static final List<Estudante> estudantes = new ArrayList<>();
private static final List<Cidade> cidades = new ArrayList<>();
/**
* Agora que já temos os objetos os quais queremos trabalhar,
* vamos criar as funções para realizar o cadastro.
* As funções serão declaradas com o modificador static apenas
* para ser mais fácil de exemplificar, visto que será rodado pelo
* método main, o qual também é static. Fazendo isso não precisaremos
* criar uma instância da própria classe dentro do método main com o fim
* de utilizar os métodos.
*/
/**
* -------------------------------------------
* Adiciona um estudante à lista de estudantes
* -------------------------------------------
* @param estudante Estudante a ser cadastrado
* @return Estudante cadastrado
*/
public Estudante cadastrarEstudante(Estudante estudante) {
try {
this.estudantes.add(estudante);
return estudante;
}
catch (Exception e) {
// Aqui você poderia incluir alguma lógica para se recuperar da exception
e.printStackTrace();
}
return null;
}
/**
* ----------------------------------------
* Adiciona um estudante à lista de cidades
* ----------------------------------------
* @param cidade Cidade a ser cadastrada
* @return Cidade cadastrada
*/
public Cidade cadastrarCidade(Cidade cidade) {
try {
this.cidades.add(cidade);
return cidade;
}
catch (Exception e) {
// Aqui você poderia incluir alguma lógica para se recuperar da exception
e.printStackTrace();
}
return null;
}
/**
* --------------------------------------------
* Vamos criar um método para exibir a lista de
* Cidades e de Estudantes
* --------------------------------------------
*/
public static void exibirListaDeEstudantes(boolean exibirSenha) {
estudantes.forEach(estudante -> {
System.out.println("Código ...........................: " + estudante.getCodigo());
System.out.println("Nome .............................: " + estudante.getNome());
System.out.println("Data de nascimento ...............: " + estudante.getDataNascimento());
if (exibirSenha)
System.out.println("Senha ........................: " + estudante.getSenha());
});
}
public static void exibirListaDeCidades() {
cidades.forEach(cidade -> {
System.out.println("Código ...........................: " + cidade.getCodigo());
System.out.println("Descrição ........................: " + cidade.getDescricao());
System.out.println("UF ...............................: " + cidade.getUf());
});
}
/**
* -------------------------------------------------------------
* Vamos criar mais 2 métodos para buscar um registro individual
* de Estudante ou Cidade
* -------------------------------------------------------------
*/
public static Estudante buscarEstudantePeloCodigo(Integer codigo) {
return estudantes
.stream()
.filter(estudante -> estudante.getCodigo() == codigo)
.findFirst()
.orElseThrow(() -> new RuntimeException("Não foi possível encontrar o registo com o código de número: " + codigo));
}
public static Cidade buscarCidadePeloCodigo(Integer codigo) {
return cidades
.stream()
.filter(cidade -> cidade.getCodigo() == codigo)
.findFirst()
.orElseThrow(() -> new RuntimeException("Não foi possível encontrar o registo com o código de número: " + codigo));
}
/**
* ---------------------------------------------
* Vamos isolar a lógica para exibir os detalhes
* ---------------------------------------------
*/
public static void exibirDadosDoEstutante(Estudante estudante) {
System.out.println("Código ......................: " + estudante.getCodigo());
System.out.println("Nome ........................: " + estudante.getNome());
System.out.println("Data de Nascimento ..........: " + estudante.getDataNascimento());
}
public static void exibirDadosDaCidade(Cidade cidade) {
System.out.println("Código ......................: " + cidade.getCodigo());
System.out.println("Descrição ...................: " + cidade.getDescricao());
System.out.println("UF ..........................: " + cidade.getUf());
}
/**
* ------------------------------------------
* Por fim vamos escrever o nosso método main
* para executar o que foi desenvolvido
* ------------------------------------------
*/
public static void main(String [] args) {
System.out.println("--------------------");
System.out.println("Cadastre a Cidade 1 ");
System.out.println("--------------------");
System.out.println("Informe o código: ");
Integer codigoCidade = 0; // <-- Pegue o que o usuário digitou no teclado
System.out.println("Informe a descricao: ");
String descricaoCidade = ""; // <-- Pegue o que o usuário digitou no teclado
System.out.println("Informe a UF: ");
String ufCidade = ""; // <-- Pegue o que o usuário digitou no teclado
// Criando e cadastrando o objeto Cidade...
Cidade cidade1 = new Cidade(codigoCidade, descricaoCidade, ufCidade);
cidades.add(cidade1);
// faça o mesmo para as demais cidades
System.out.println("----------------------");
System.out.println("Cadastre o Estudante 1");
System.out.println("----------------------");
System.out.println("Informe o código: ");
Integer codigoEstudante = 0; // <-- Pegue o que o usuário digitou no teclado
System.out.println("Informe o nome: ");
String nomeEstudante = ""; // <-- Pegue o que o usuário digitou no teclado
System.out.println("Informe a data de nascimento: ");
String dataNascimentoEstudante = ""; // <-- Pegue o que o usuário digitou no teclado
System.out.println("Informe o email: ");
String emailEstudante = ""; // <-- Pegue o que o usuário digitou no teclado;
System.out.println("Informe senha: ");
String senhaEstudante = "";// <-- Pegue o que o usuário digitou no teclado
// Criando o objeto Estudante
Estudante estudante1 = new Estudante(codigoEstudante, nomeEstudante, dataNascimentoEstudante, senhaEstudante);
estudantes.add(estudante1);
// faça o mesmo para os demais estudantes
// Para listar:
exibirListaDeEstudantes(false /* <- true para mostrar a senha */);
exibirListaDeCidades();
// Para buscar:
exibirDadosDoEstutante(estudante1);
exibirDadosDaCidade(cidade1);
}
}