Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Lucas Assunção de Sousa

Java Conceitos e terminologias em Orientação a Objetos

Recommended Posts

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("lucasassuncao.98@gmail.com");
			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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

Editado por Boko Moko
erros de digitaçào

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×