Acesso a objetos criados por metodos

5 respostas
S

Tenho uma duvida bastante simples, eu tenho uma classe Diretor, uma Secretário quem ambas herdam dados da classe pessoa, dentro da classe diretor vai ter um método que cadastra o secretario e outro método que edita o secretario, como posso editar o objeto secretario(que foi criado apatir do metodo contido na classe diretor) ??

public class  Pessoa
{
 protected String nome;
 protected String endereço;
 protected String cpf;
 protected String data_nascimento;

}

class Secretario extends Pessoa  {



}


class Diretor extends Pessoa  {
	



	public void cadastrarSecretario()
	{
		
		Scanner sc = new Scanner(System.in);
		Secretario secretario = new Secretario();
		System.out.println("Digite o nome do secretário");  
		secretario.nome=sc.nextLine();  
        System.out.println("Digite o cpf do secretário");  
        secretario.cpf=sc.nextLine();  
        System.out.println("Digite o endereço do secretário");  
        secretario.endereço=sc.nextLine();  
        System.out.println("Digite a data de nascimento do secretário"); 
        secretario.data_nascimento=sc.next();
       
		
	
		
	}
	
	public void editarSecretario()
	{  
		                                                  // quero basicamente acessar os dados que foram criados no metodo cadastrarSecretario
		if(Secretario==null){
			System.out.println("secretario n cadastrado"); }
		
	}

5 Respostas

Rodrigo_Sasaki

Não tem como.. se você declara uma variável dentro do escopo de um método, ao final da execução do mesmo ela é "eliminada". você não tem mais referências à ela.

Você precisa ou criar o objeto antes e enviar como parâmetro, ou persistir o objeto em um BD ou um arquivo talvez.

EDIT: Ou usar atributos da classe.. ex:

class Diretor extends Pessoa {

    private Secretario secretario;

    public void cadastrarSecretario(){
        //aqui você usa o objeto que tem na sua classe, que está fora do escopo do método
    }
}

Mas tem que ver se algo assim faria sentido.

S

Eu pensei em criar uma lista no final do metodo

public void cadastrarSecretario(){ List <Secretario> lista_secretario = new ArrayList<Secretario>(); Scanner sc = new Scanner(System.in); Secretario secretario = new Secretario(); System.out.println("Digite o nome do secretário"); secretario.nome=sc.nextLine(); System.out.println("Digite o cpf do secretário"); secretario.cpf=sc.nextLine(); System.out.println("Digite o endereço do secretário"); secretario.endereço=sc.nextLine(); System.out.println("Digite a data de nascimento do secretário"); secretario.data_nascimento=sc.next(); lista_secretario.add(secretario);

Rodrigo_Sasaki

Isso pode resolver seu problema do acesso, mas você precisa ver se realmente faz sentido o Diretor ter uma lista de Secretario.

S

Nesse caso não faz sentido, porque o diretor vai ter apenas um secretário, tem algum jeito mais simples de fazer?

Rodrigo_Sasaki
class Diretor extends Pessoa  {

    private secretario; // Assim ele fica fora do escopo do método

    public void cadastrarSecretario(){
        Scanner sc = new Scanner(System.in);
        secretario = new Secretario(); // usa a referência do atributo da classe
        System.out.println("Digite o nome do secretário");  
        secretario.nome=sc.nextLine();  
        System.out.println("Digite o cpf do secretário");  
        secretario.cpf=sc.nextLine();  
        System.out.println("Digite o endereço do secretário");  
        secretario.endereço=sc.nextLine();  
        System.out.println("Digite a data de nascimento do secretário"); 
        secretario.data_nascimento=sc.next();
    }   

    // Continuação da classe		
	
}
Adicione um atributo Secretario na própria classe.
Criado 30 de abril de 2012
Ultima resposta 30 de abr. de 2012
Respostas 5
Participantes 2