Dificuldade com gets

Blz Pessoal?

entao to com uma dificuldade em entender o get e o set, até consigo fazer AS VEZES, mas quero entender!!

vamos supor que eu tenho as variaveis:


public class Classe1 {
     private String texto1, texto2, texto3;
     private int teste;

     public Classe1() {
      //aqui seto os valores das Strings e do int teste;
     }
}

entao, ACHO que tem q ter um Construtor, certo? mas pra que serve isso?

public Classe1(String texto1, String texto2, String texto3, int teste) {
		super();
		this.texto1 = texto1;
		this.texto2 = texto2;
		this.texto3 = texto3;
		this.teste = teste;
	}

e os gett e os set, certo?

public String getTexto1() {
		return texto1;
	}
	public void setTexto1(String texto1) {
		this.texto1 = texto1;
	}
	public String getTexto2() {
		return texto2;
	}
	public void setTexto2(String texto2) {
		this.texto2 = texto2;
	}
	public String getTexto3() {
		return texto3;
	}
	public void setTexto3(String texto3) {
		this.texto3 = texto3;
	}
	public int getTeste() {
		return teste;
	}
	public void setTeste(int teste) {
		this.teste = teste;
	}

agora, em outra classe, quero apenas pegar o valor da variavel int
tentei assim:

public class Testar {
    public Testar() {
       Classe1 cl = new Classe1(); //criei um objeto cl da Classe1, correto?
       system.outr.println(cl.getTeste()); //imprimo no console o valor do int teste da classe Classe1 nessa outra classe, porem ele nao funciona.
    }
}

alguem poderia me explicar?
pode ter algum errinho de sintax aqui pq n fiz no eclipse, fiz aki no forum msm;

olha, vou tentar exemplificar de uma forma simples:

você usa os getters e setters para configurar, validar e retornas variaves de escopo private

por exemplo

public class teste()
{
    private String Texto1;
    private int Numero1;
    private double Numero2;

}

ae, você usa os métodos getters e setter para configurar e acessar essas variaveis private, para nenhuma outra classe
ter acesso direto.

o construtor, é pra pre-definir esses valores assim que instancia a classe:

[code] public teste(String texto1, int numero1, double numero2)
{
// ae aqui você chama os metdos setters para configurar e validar as variaveis private

       this.setText1(texto1);  // lembrando, que esse texto1 é o do construtor do método teste
       this.setNumero1(numero1);   // lembrando, que esse numero1 é o do construtor do método teste
       this.setNumero2(numero2);   // lembrando, que esse numero1 é o do construtor do método teste

}

// os métodos setters configurar e validam as variaveis
public void setText1(String texto)

{
this.Texto1 = texto; // o this, referencia a variavel private
}

public void setNumero1(int numero)
{
// se por exemplo, precisar validar um numero, coloca um if, vou citar o exemplo
if (Numero1 > 0)
this.Numero1 = numero;
else
this.Numero1 = 0;
}

public void setNumero2(double numero)
{
// aqui, se não precisar validar, é so atribuir diretamente
this.Numero2 = numero;
}

// e os métodos getters para simplesmente pegar o valor

public String getTexto1() // retorna a variavel private Texto1
{
return this.Texto1;
}

public int getNumero1() // retorna a variavel private Numero1
{
return this.Numero1;
}

public double getNumero2() // retorna a variavel private Numero2
{
return this.Numero2;
}

}[/code]

e agora, instancia um metodo main, instancia o teste, e joga os valores, se precisar acessar, so usar os metodos getters.
abraços

O que é um construtor?
Um construtor é desenvolvido da mesma forma que uma função a unica diferença é que ele tem o nome da classe.
Quando vc não declara nenhum construtor, o java faz isso pra vc. Esse construtor é um construtor default, ele não recebe nenhum argumento e o corpo dele é vazio.
A partir do momento que vc declarar um construto, o construtor default não é mais fornecido.
Não pode criar um construtor com retorno void.
Um construtor pode parece, mas não é um método. alguma pessoa chama de metodo especial, mas não é, já que possui retorno e so é chamado durante a construção do objeto

Pra que um construtor?
Voce pode ter um objeto dog que já vai ter um nome, ou pode dá um novo nome á ele.
Outro exemplo: Se todo animal precisa de um nome, como obrigar todos objetos que forem criado a ter um valor desse tipo? para isso é só criar um construtor.

Exemplo:


public class Animal {

	String nome;
	
	Animal(String novoNome){
		this.nome = novoNome;
	}
	public static void main(String[] args) {
      Animal dog = new Animal("Rex");
      System.out.println(dog.nome);
	}

}

Get se Set.
Quando vc declara um atributo com o modificador private, ele fica acessivel apenas pela classe de origem, ou seja você não conseguira acessar em outras classe, para usar esses atributos privates em outras classe, vc terá que criar os famosos gets e set.

Set = inserir(setar)
Get = Pegar

Obs: Os metodos gets e sets esão certos.
Na classe Testar você não usou o metodo main: public static void main(String [] args){}
O “S” e o “out” do System.out.printl(); está errado, o S é maiusculo já que é uma classe, e se vc declarar um construtor terá que dá os valores, na hora de criar um objeto.

é que assim, eu tenho 3 classes:
Login: a classe Login, q é uma gui onde tem 2 JTextField que o usuario digita seu id de login e sua senha. Quando o usuário clicar no JButton “Entrar”, a acao desse botao
faz isso:

LoginPass lp; //criei um objeto lp do tipo LoginPass, certo?
lp = new LoginPass(user.getText(), pass.getText(), con); //aqui to passando os paramentros que o usuario digitar nos textfield user e pass
lp.verifica(); //chama o metodo verifica na classe LoginPass pelo objeto lp, certo?

na segunda classe, a classe LoginPass tenho isso:

public class LoginPass {
        private String usuario1;
	private String senha1;
	private Connection con;
        int permissao;

        public LoginPass(String usuario1, String senha1, Connection con) { //esse é o construtor
		this.usuario1 = usuario1; //pq aqui tem q dizer q ESTE usuario1 é igual a usuario1? this.usuario1(esse usuario é o que eu declarei nessa classe) e o = usuario1(é qual?)
		this.senha1 = senha1;
		this.con = con;
	}

        public void verifica() {
          //aqui é o metodo que verifica os dados no banco, esta funcionando normal
          //aqui tb a variavel permissao dessa classe recebe o valor do banco conforme quem logou, admin ou user
          permissao = 1;
       }

       public int getPermissao() {
		return permissao; //aqui é onde eu tenho meu problema, quero de uma outra classe, pegar esse valor de permissao, mas nao consigo
     
	}

}

na outra classe eu fiz o seguinte para tentar pegar o valor da variavel permissao da classe LoginPass:

public class Exibir {
     
    LoginPass lp;
    public Exibir() {
    system.out.println(lp.getPermissao); //da erro aki, ja tentei de varias formas! QUando ele chega a copilar, ele imprimi 0, ou seja, nao me retornou o valor, sendo que
                                                         //na classe LoginPass eu colokei um system.out.println para ver se a variavel permissao realmente tava recebendo valor e imprimiu corretamente
}
}

Fexx, os erros do S minusculo do System e o outr errado, é pq escrevi errado mesmo, é pq n to copiando meu codigo e colando aqui, to fazendo aqui na hora me baseando neles. meu problema mesmo é pegar o valor da variavel permissao da classe LoginPass na classe Exibir.

Obrigado pela ajuda

para isso, se é outra classe, na outra classe você terá que ter um método que retorne o valor dela,
por exemplo, se ela retorna uma String, coloque um método, por exemplo:

public String toString() { return String.format("o que deve retornar"); }

ae instancie um objeto dessa classe, e coloque pra retornar o toString.

seria bom você da uma revisão em orientação a objetos, eu infelizmente não tenho um tutorial bom, mas uso o livro de deitel.

um abraço

breno

hehe vc chegou na raiz da minha dificuldde, a orientacao a objeto, pior q ja li, mas nao consigo entender, tenho muita visao procedural que me complica pra entender oop =\

entendo brother, mas é como disse, da uma estudada.
eu procurei uma aqui, os exemplos que usam são muito parecidos com o do meu livro (isso é, se num for iguais rsrs).

da uma olhada:

http://docs.google.com/viewer?a=v&q=cache:GRT__urRPEwJ:gustavogois.sites.uol.com.br/disciplinas/2006-1-LTPIII/cap09.pdf+java+cap09+-+herança+filetype:pdf&hl=pt-BR&gl=br&pid=bl&srcid=ADGEESgXXXoPn3vMwSl3wlTjsUK9gvwGVEIhnj21GDd-0gpTE30jQoqirrRQSlTunbD-noG4h_pCcCMemfCnidc4hyo2Hkpg8OVEqbz0NUTZb2MU-lTQpug5YpDUepLT6ScIuQun58ny&sig=AHIEtbQKuu9vZKRlILZLaPTIxRETdN0NLA&pli=1

um abraço

essa outra aqui já é de polimorfismo: http://www.inf.ufsc.br/~frank/INE5605/10.Polimorfismo.pdf

e só pra finalizar, esse aqui, o primeiro dos três sobre orientação a objetos.
bons estudos, tomara que te ajude: http://gustavogois.sites.uol.com.br/disciplinas/2006-1-LTPIII/cap08.pdf

um abraço, agora deixa eu ir estudar… rsrs

mais duvidas…estou praticando pra ver se vao clareando as coisas aki

seguinte, fiz isso:

GUi, View > Login;

//nessa classe, tem o gui e tals, com Jtextfield user e pass;
//acoes botao entrar
		entrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				while (true) {
					if (user.getText().isEmpty() || pass.getText().isEmpty()) {
						JOptionPane.showMessageDialog(null, "Campos usuário ou senha vazio!");
						break;
					}
				//cria um objeto do tipo LoginDados e seta os valores dos TextField;	
				LoginDados ld = new LoginDados();
				ld.setUsuario(user.getText());
				ld.setSenha(pass.getText());
				LoginSenha ls = new LoginSenha();
				ls.teste();
				System.out.println("verificando dados..");
//				if (ls.isConseguiu() == true) {
//					sair2();
//				}
				break;
			}
				
			}
		});	

Model > LoginDados


package Model;

public class LoginDados {
	private String usuario, senha; 
	private boolean conseguiu;
	private int permissao;
		
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	public boolean isConseguiu() {
		return conseguiu;
	}
	public void setConseguiu(boolean conseguiu) {
		this.conseguiu = conseguiu;
	}
	public int getPermissao() {
		return permissao;
	}
	public void setPermissao(int permissao) {
		this.permissao = permissao;
	}
}

VerificarLogin > LoginSenha;

package VerificarLogin;

import java.sql.Connection;
import java.sql.ResultSet;
import javax.swing.JOptionPane;

import Model.LoginDados;



public class LoginSenha {
	LoginDados ld;
	//private String modo1;

	public void teste() {
		System.out.println(ld.getUsuario());
		System.out.println(ld.getSenha());
	}
	
}

minha duvida cruel, pq nao consigo imprimir isso? o que tem de errado? tem a classe modelo, do sets nela, e depois os gets, mas da erro =(

alguem?

Olá amigão,

Você quer imprimir os valores do método teste()?

Se quiser apenas exibir no console este valores, você deve criar um método main e manipular seus objetos de outras classes dentro dele.

public static void main(String[] args) {
    //Instanciando e criando um objeto ld chamando o construtor default
    LoginDados ld = new LoginDados();

    /*Agora voce pode chamar os métodos getters e setters e todos os outros de sua classe LoginDados
       Mas aqui imprimirá null, pois você não setou nenhum usuário.
    */
    System.out.println(ld.getUsuario());

    //Setar o usuário e imprimir Admin
    ld.setUsuario("Admin");
    System.out.println(ld.getUsuario());
}

Cara, acho que tu tá indo um pouco mais rápido e tá com bastante dificuldade nos conceitos de OO. Dá uma estudada na apostila do curso fj-11 de Orientação Objetos da Caelum.
É um excelente material e lá você poderá aprender bastante estes conceitos.

Abraços,