Preciso de ajuda pra resolver esse exercício com código em Java e não estou conseguindo desenvolvê-lo:
Desenvolva uma aplicação de gerenciamento de dados de usuários que atenda aos seguintes requisitos: 1) Um usuário deverá ter os seguintes dados armazenados: login, senha, nome, idade;
As seguintes operações deverão ser suportadas pela aplicação: criação de um novo usuário, atualização de dados de um usuário cadastrado, remoção de um usuário cadastrado, visualização de dados de um usuário cadastrado, listagem de todos os usuários existentes;
Os dados deveram ser armazenados em estruturas do tipo Collection do java ou em arrays.
Algumas coisas eu consegui começar, mas não consegui ir adiante.
OBJETO:
package aplicacaolpoo;
import javax.swing.JOptionPane;
public class Registering {
String [ ] c = new String [3];
private String l, s, n, id;
public void SetL (String l) {
this.l = l;
}
public String getL() {
return l;
}
public void SetS (String s) {
this.s = s;
}
public String getS() {
return s;
}
public void SetN (String n) {
this.n = n;
}
public String getN() {
return n;
}
public void SetId (String id) {
this.id = id;
}
public String getId() {
return id;
}
public void fazerCadastro(String c[]) {
for(int i = 1; i <= 3; i++){
n = JOptionPane.showInputDialog("Digite o seu nome: ");
id = JOptionPane.showInputDialog("Digite a sua idade: ");
l = JOptionPane.showInputDialog("Crie um nome de usuário: ");
s = JOptionPane.showInputDialog("Crie uma senha para o login: ");
}
}
public void usuariosCadastrados() {
JOptionPane.showMessageDialog(null,"Os usuários cadastrados e seus dados são: " + c[0] + "\n" + c[1] + "\n" +c[2]/* + "\n" +c[3] + "\n" +c[4]*/);
}
}
INSTANCIAÇÃO DO OBJETO:
package aplicacaolpoo;
public class Registered {
public static void main(String [] args) {
Registering r1 = new Registering ();
r1.fazerCadastro();
r1.usuariosCadastrados();
}
}
Eu não consegui sair disso e o que eu consegui fazer ainda não me retorna o que deveria.
Desde já agradeço a ajuda.
Então crie a classe usuário contendo os atributos a serem armazenados, nunca use l,s ou n:
public class Usuario {
String login;
String senha;
String nome;
int idade;
// setters and getters
}
Aqui não é possível determinar um nome para a classe para fazer as operações, então usarei o nome que vc indicou no código postado:
public class Registering {
public Usuário criarNovoUsuario() {
}
public void atualizarUsuario(Usuario usuario) {
}
public void removerUsuario(Usuário usuario) {
}
public Usuário[] listarUsuarios() {
}
}
Os parâmetros e retornos das funções podem ser outras.
Recomendo o uso de listas:
public class Registering {
ArrayList<Usuario> listaDeUsuarios = new ArrayList<>();
public Usuario criarNovoUsuario() {
}
public void atualizarUsuario(Usuário usuario) {
}
public void removerUsuario(Usuário usuario) {
}
public Usuario[] listarUsuarios() {
return listaDeUsuarios.toArray(new Usuário[listaDeUsuarios.size()]);
}
}
Então deixa eu ver se eu entendi direito:
Eu vou ter que criar três classes pra esse exercício? Uma classe chamada Usuario, uma classe chamada Registering e outra classe chamada Registered? Seria isso?
Porque a classe Registering (Registrando, Cadastrando) eu criei pra poder entrar com os dados do usuário (Nome, idade, login e senha) e a classe Registered (Registrado, Cadastrado) eu criei com a intenção de instanciar a classe Registering que faz o mesmo papel da classe Usuario que você citou logo acima. Poderia me dar esse exercício todo respondido e separadas as classes pra servir de exemplo pra outros que eu tenho aqui pra fazer, por favor?
Desculpa eu estar perguntando tanto, mas é a primeira vez que eu estou tentando resolver esse tipo de exercício e estou me enrolando todo.
Opa, eae? O comentário do amigão Diego ta super completo… Vou te dar uma dica: Faz o diagrama de classe antes, eu geralmente me perco quando recebo um problema como esse… Fazendo o diagrama de classe você entra no “conceito de abstração da OO” e tudo acaba ficando mais claro!
EU entendo, mas o problema é que eu estou pior do que cego em tiroteio… rsrsrsrs. E como é a primeira vez que faço algo do tipo, eu sempre preciso de um exemplo feito pra eu ter uma ideia de como fazer o resto do exercício. O que eu não sei, é como referenciar cada método dentro da lista e como usar as variáveis nos métodos. Claro, com exceção do método que eu criei pra coletar dados do usuário.
Não, a classe Usuário é um tipo de classe que armazena informação de apenas um Usuário. Registering seria uma classe que armazena informações de vários usuários, também dei a funcionalidade da entrada dos dados. O Registered seria uma classe que inicia e manipula o Registering. Na verdade a estrutura poderia ser de vários jeitos. Talvez fosse até mais simples fazer um pouco diferente, mas o que fiz foi só um exemplo.
O que falta ali são só as entradas e a manipulação da lista, exemplo no criarNovoUsuario:
Usuário usuário = new Usuário();
usuário.setNome(JOptionPane.showInputDialog("Nome: ");
// outros
listaDeUsuarios.add(usuario);
return usuário;
recomendo que crie uma forma para imprimir os dados no usuário e no registerign:
class Registerign {
void imprimir() {
for (int i = 0; i < lista.size; i+=1 {
Usuário usuário = lista.get(i);
usuário.imprimir();
}
}
}
class Usuário() {
void imprimir() {
System.out.println("Login:" + getLogin());;
// outros
}
}