OO iniciante

5 respostas
F

Estou com dificuldades com o método separar(). Não consigo fazer ele mudar o extadoCivil da Pessoa. E se eu eu atribuo a string "Separado" ao método separar, gera este erro: The left-hand side of an assignment must be a variable

public class Pessoa {  
        private String nome, estadoCivil;  
          
        public Pessoa(String nome, String estadoCivil){  
                this.nome = nome;  
                this.estadoCivil = estadoCivil;  
        }  
  
        public String getEstadoCivil(){  
                return estadoCivil;  
        }  
        public void setEstadoCivil(){  
                this.estadoCivil = estadoCivil;  
        }  
          
}
public class Casamento {  
        private String pessoa1, pessoa2;  
  
        public Casamento(String pessoa1, String pessoa2){  
                this.pessoa1 = pessoa1;  
                this.pessoa2 = pessoa2;  
        }  
        public void separar(){  
                pessoa1.getEstadoCivil();    
        }  
          
}
public class app {  
  
   public static void main(String[] args) {  
        
      Pessoa pessoa1 = new Pessoa("josé", "casado");  
      Pessoa pessoa2 = new Pessoa("maria", "casado");  
        
      System.out.println(pessoa1.getNome() + ", " + pessoa1.getEstadoCivil());  
      System.out.println(pessoa2.getNome() + ", " + pessoa2.getEstadoCivil());  
        
      Casamento casamento1 = new Casamento(pessoa1, pessoa2);  
        
      casamento1.separar(pessoa1, pessoa2);  
        
      System.out.println(pessoa1.getNome() + ", " + pessoa1.getEstadoCivil());  
      System.out.println(pessoa2.getNome() + ", " + pessoa2.getEstadoCivil());  
  
   }  
  
}

5 Respostas

Henrique_Moraes

Olá amigo, fiz algumas alterações, veja se entenda:

public class Pessoa {    
	
	private String nome, estadoCivil;    
            
    public Pessoa(String nome, String estadoCivil){    
    	setNome(nome);
        setEstadoCivil(estadoCivil);    
    }    
    
    public String getNome(){    
    	return nome;    
    }    
    
    public void setNome(String nome){    
        this.nome = nome;    
    }    
    
    public String getEstadoCivil(){    
    	return estadoCivil;    
    }    
    
    public void setEstadoCivil(String estadoCivil){    
        this.estadoCivil = estadoCivil;    
    }    
            
}
public class Casamento {    
       
	//private String pessoa1, pessoa2;    
    
    public Casamento(Pessoa pessoa1, Pessoa pessoa2){    
    	pessoa1.setEstadoCivil("CASADO");
      	pessoa2.setEstadoCivil("CASADO"); 
    }    
        
    public void separar(Pessoa pessoa1, Pessoa pessoa2){    
    	pessoa1.setEstadoCivil("SEPARADO");      
    	pessoa2.setEstadoCivil("SEPARADO");
    }    
            
}
public class App {    
    
   public static void main(String[] args) {    
          
      Pessoa pessoa1 = new Pessoa("josé", "SOLTEIRO");    
      Pessoa pessoa2 = new Pessoa("maria","SOLTEIRO");    
          
      System.out.println(pessoa1.getNome() + ", " + pessoa1.getEstadoCivil());    
      System.out.println(pessoa2.getNome() + ", " + pessoa2.getEstadoCivil());    
          
      Casamento casamento1 = new Casamento(pessoa1, pessoa2);    

      System.out.println(pessoa1.getNome() + ", " + pessoa1.getEstadoCivil());    
      System.out.println(pessoa2.getNome() + ", " + pessoa2.getEstadoCivil());    
          
      casamento1.separar(pessoa1, pessoa2);    
          
      System.out.println(pessoa1.getNome() + ", " + pessoa1.getEstadoCivil());    
      System.out.println(pessoa2.getNome() + ", " + pessoa2.getEstadoCivil());    
    
   }    
    
}

Qualquer dúvida me pergunte... vlw

wssjwss

O erro está aqui:

public void setEstadoCivil(){  
                this.estadoCivil = estadoCivil;  
        }

Voce atribuiu o valor da mesma variável. Tanto this.estadoCivil como estadoCivil são a mesma variável.

Faça assim:

public void setEstadoCivil(String estado){  
                this.estadoCivil = estado;  
        }
ivansalvadori

usar o método separar quase sempre gera problemas, principalmente se exister classes filhas.
O ideal mesmo é evitar invocar o método casar();

F

Deu certo! Valeu rapazeada!

marco-oliveira

ivansalvadori:
usar o método separar quase sempre gera problemas, principalmente se exister classes filhas.
O ideal mesmo é evitar invocar o método casar();

belo exemplo… kkkkk

Criado 20 de junho de 2012
Ultima resposta 21 de jun. de 2012
Respostas 5
Participantes 5