Ir ao conteúdo
  • Cadastre-se

Java Como setar um atributo para uma classe não-executável?


Posts recomendados

Olá gente, meus cumprimentos... estou fazendo um código e a minha lógica está assim: quero criar três classe, uma a principal, outra aluno e a outra cadastro. Na classe Aluno crio os atributos (nesse caso só o atributo nome), na classe Cadastro eu crio métodos que setem o atributo nome da classe Aluno, por fim pra na classe Principal eu chamar o método da classe Cadastro.

 

public class Aluno {
	
	private String nome;
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	

}
public class Cadastro {
	
	void cadastrar() {
		boolean cadastrando = true;

		while (cadastrando) {
			System.out.println("=============================\nUsuário\n");
			
			Aluno aluno = new Aluno();
			
			aluno.setNome(textInput(" --> Nome:")); //aqui tá dando erro

			
			System.out.println("=============================\n");
		}


	}
	


	private void listarCadastros() {
			System.out.println("==================================\nLista de Usuários\n");

				//Aluno d = alunos.get();
				
				//System.out.println("\tNome: " + d.getNome());
				
			System.out.println("\nLista Finalizada\n==================================\n");
		}
	
	
	

}
public class Principal {
	
	public static void main(String[] args) {
		
		Cadastro cadastro = new Cadastro();
		
		cadastro.cadastrar();
		cadastro.listarCadastro();
		
	}
	


}

É algum conceito simples que eu estou em passando? Estou fazendo isso pra treinar!

 

Link para o comentário
Compartilhar em outros sites

Você está confundindo algumas coisas aí. Essa classe Principal não deve existir, pois a função principal do Java é a função main(), sem está dentro de uma classe. Mesmo porquê, onde você vai iniciar esse classe?

 

Essa classe cadastro também não precisa, declare simplesmente a função Cadastro.

Link para o comentário
Compartilhar em outros sites

@Luís Roberto C. da Silva Beleza, a convenção do nome em colocar Principal é só um vício mesmo, mas valeu ^^

Mas a ideia de criar uma classe Cadastro é pra que a classe Principal não fique com muita coisa, essa é a intenção.

 

Na Main tem muito método como cadastrarAluno(), listarCadastro() que dá pra colocar em uma outra classe pra função Main não ficar poluída.

adicionado 2 minutos depois

o código completo é esse da Principal (Main):

 

import java.util.List;
import java.util.Scanner;
import java.util.ArrayList;

public class Principal {

	private Scanner l;
	private boolean execute;
	private List<Aluno> alunos;

	public static void main(String[] args) {
		new Principal();
	}

	private Principal() {
		l = new Scanner(System.in);
		execute = true;
		alunos = new ArrayList<Aluno>();

		System.out.println("=============================\nBEM VINDO AO CADASTRO DE USUÁRIOS\n=============================");

		while (execute) {
			String opcao = menu();

			if (opcao.equalsIgnoreCase("n")) {
				cadastrar();
			} else if (opcao.equalsIgnoreCase("l")) {
				listarCadastros();
			} else if (opcao.equalsIgnoreCase("x")) {
				execute = false;
			} else {
				System.out.println("\nOpção Inválida seu iniciante !!! \n");
			}
		}
	}

	private String menu() {
		System.out.println("Selecione a opção:\n");
		System.out.println("N - Novo cadastro");
		System.out.println("L - Listar cadastros");
		System.out.println("X - Sair\n");
		return l.nextLine();
	}
	

	
	

	private void cadastrar() {
		boolean cadastrando = true;

		while (cadastrando) {
			System.out.println("=============================\nCadastro de Usuários\n");
			Aluno aluno = new Aluno();
			aluno.setNome(textInput(" --> Nome:"));
			aluno.setCpf(textInput(" --> CPF: "));
			aluno.setNascimento(textInput(" --> Data de Nascimento: "));
			System.out.println("=============================\n");

			String cadastrar = textInput("==================\nCONFIRMAR CADASTRO (S/N)?\n==================");
			if (cadastrar.equalsIgnoreCase("s")) {
				System.out.println("==================\n STATUS: Adicionado com sucesso  \n==================\n");
				alunos.add(aluno);
			} else if (cadastrar.equalsIgnoreCase("n")){
				System.out.println("==================\n STATUS: Cadastro Ignorado\n==================\n");
			} else {
				System.out.println("\nOpção inválida seu iniciante, vou ignorar o cadastro só pra você ter que digitar de novo !!! \n");
			}

			String continua = textInput("Continuar cadastrando (S/N) ?");
			if (continua.equalsIgnoreCase("N")) {
				cadastrando = false;
			} else if (continua.equalsIgnoreCase("s")){
				// se for s sai do if e volta para o inicio do while
			} else {
				System.out.println("\nOpção inválida seu iniciante, eu vou sair só porque você não colabora !!! \n");
				cadastrando = false;
			}
		}
	}

	private void listarCadastros() {
		if (alunos.size() == 0) {
			System.out.println("\nNão existem cadastros !!!\n");
		} else {
			System.out.println("==================================\nLista de Cadastros\n");
			for (int i = 0; i < alunos.size(); i++) {
				Aluno d = alunos.get(i);
				System.out.println("Cadastro número: " + i);
				System.out.println("\tNome: " + d.getNome());
				System.out.println("\tCPF: " + d.getCpf());
				System.out.println("\tData de Nascimento: " + d.getNascimento() + "\n");
			}
			System.out.println("\nLista Finalizada\n==================================\n");
		}
	}

	private String textInput(String label) {
		System.out.println(label);
		return l.nextLine();
	}
}

 

adicionado 5 minutos depois

@Luís Roberto C. da Silva Essa não seria uma prática ideal? Se não, como posso fazer com que a função Main não fique com muita coisa (poluída)?

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...