Ir ao conteúdo

Posts recomendados

Postado

Boa noite!

 

Estou começando a ver programação orientada a objetos em Java (antes estava nas estruturadas).

 

Minhas principais dúvidas são a respeito das terminologias e da organização do código que ainda não peguei muito bem.

 

import java.util.Scanner;


public class usuario 
{
	private String nome;
	private String email; 
	private String login; 
	private String senha; 
	private double media; 

	public usuario ()
	{
		this("","","",""); 
	}

	public usuario (String nome, String email, String login, String senha)
	{
		this.nome = nome; 
		this.email = email; 
		this.login = login; 
		this.senha = senha; 
	}
	
	//Setters

	public void setNome(String nome)
	{
		this.nome = nome; 
	}
	
	public void setEmail(String email)
	{
		this.email = email; 
	}
	
	public void setLogin(String login)
	{
		this.login = login;
	}
	
	
	//Getters
    	
    public String getNome()
	{
		return this.nome;
	}
	

	public String getEmail()
	{
		return this.email;
	}
	
		public void setSenha(String senha)
	{
		this.senha = senha; 
	}
	

	public String getLogin()
	{
		return this.login;
	}

	public String getSenha()
	{
		return this.senha; 
	}

	public void provarExistencia()
	{
		System.out.println("Oi, eu existo");
	}
	
	public void setMedia(double media)
	{
	    this.media = media; 
	}
	
	public double getMedia()
	{
	    return this.media;
	    
	}
	
	public void testaMedia(double media)
	{
	    if(this.media >= 6)
	    {
	        System.out.println("Media: " + this.media);
	        System.out.println("APROVADO");
	    } else
	    {
	        System.out.println("Media: " + this.media);
	        System.out.println("REPROVADO");
	        
	    }
	}
	
}

Essa daqui séria então a classe objeto que possui todos os dados a serem pegos. Eu terminei programação estruturada vendo muito pouco a respeito de funções,

então me corrijam se eu estiver errado, mas programação orientada  a objetos possui muita modularização? Seria correto afirmar que são funções dentro de funções?

class Exemplo1
{
	public static void main (String[] args)
	{
			usuario usuario1 = new usuario();
			
			Scanner scanf = new Scanner(System.in);

			usuario1.setNome("Lucas");
			usuario1.setEmail("[email protected]");
			usuario1.setLogin("Tecnologgamer"); 
			usuario1.setSenha("27031998");
			
			usuario1.setNome() = scanf.nextLine();
			usuario1.setEmail()  = scanf.nextLine();
			usuario1.setLogin()  = scanf.nextLine();
			usuario1.setSenha()  = scanf.nextLine();
			

	}
}

Por último eu queria saber onde eu errei nesse momento onde eu estava tentando pegar os valores de entrada, mas deu erro de compilação. Qual seria o jeito certo de atribuir um valor de entrada?

Postado

O import  java.util.Scanner foi usado no arquivo da classe usuario. Acontece que não é usado nessa classe.

 

Melhor importá-lo no programa principal, na classe Exemplo1, onde de fato é usado.

 

Dica, prefira dar as classes nomes com letras maiúsculas e variáveis (instancias) nomes com letras minúsculas. Afeta nada na lógica porém ajuda na documentação e manutenção futura do programa a ser feita por você mesmo ou por um coleguinha de trabalho.

 

Outra dica. Quando usamos uma IDE que gera os setter/getter para nós. ela tende a escrever setter/getter para todos os atributos da classe. As vezes não é necessário. Por exemplo, setter de média a rigor não deveria atuar direto na média e sim calculá-la de acordo como "notas" que seriam fornecidas como parametros ou ... a partir dos atributos. No caso, como não tem atributo com as notas, acho que seria melhor usar passando parametros (mais de uma nota). Também não é um erro de programação, não está errado. É apenas uma recomendação de boa prática.

 

Agora vamos depressa a questão do seu programa não compilar.

 

No programa principal, observe como você usa o setNome() no primeiro exemplo

usuario1.setNome("Lucas");

 

Depois você usa o setNome() uma segunda vez, mas com um formato diferente, observe ...

usuario1.setNome() = scanf.nextLine();

 

Concorda que estão diferentes ? Então uma forma está correta e a outra está errada.

 

Aqui o problema é que você não respeitou a sintaxe. 

 

A primeira forma é a forma correta de invocar um método, ou seja, objeto.metodo( parametros );

No caso o objeto é usuario1

o método é setNome(),  que atribui um nome ao infeliz do usuário

o parâmetro é "Lucas", que passará a ser o nome do coitado.

 

A segunda forma está sintaticamente errada pois você está tentando atribuir ao método um valor. Métodos não são campos, não são variáveis. O máximo que se faz com um método é invocá-lo e passar um parâmetro para ele dentro dos parenteses. No caso, você quer dar ao usuário o nome que foi digitado. Então a forma correta seria

usario1.setNome(scanf.nextLine());

 

Então como ficariam os outros ??? Pense um pouco.

 

PS.:  esse nome que você deu a instancia do teclado denuncia sua origem hein ?? scanf hein ?? Tö ligado ! :)

 

Dá uma olhada nesse fonte aqui

https://repl.it/@bokomoko/cadastro-de-usuarios

 

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...