Atributos private

3 respostas
D

Tenho um programa dividido em dois arquivos; Registro e principal

public class Registro { 
   public String nome; 
   public String fone; 
    
   //construtor 
   public Registro (String novoNome, String novoFone) { 
      nome = novoNome; 
      fone = novoFone; 
   } 
}

então, no principal é um banco de dados que armazena nomes e fones; Eu preciso mudar os atributos nome e o fone do registro para private e ainda continuar usando eles no principal. Como posso fazer isso?

import java.util.Vector;
// foi preciso importar o pacote java.io.* para as classes BufferedReader e InputStreamReader
import java.io.*;

public class Principal
{
	/** objeto que armazena objetos como em uma lista encadeada dinamicamente **/
	Vector listaTelefones;    
	
	public Principal() {
		listaTelefones = new Vector();
	}
	
	//método que cria novo registro e adiciona na lista
	public void adicionarFone() {
		String nome,fone;
	
BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
		
		try {
			System.out.print ("Nome: ");
			nome = entrada.readLine();
			System.out.print ("Fone: ");
			fone = entrada.readLine();
			
			listaTelefones.add(new Registro(nome,fone));
			System.out.println ("Registro adicionado com sucesso!!!");
		}
		catch (IOException e) {
			System.out.println ("Houve um erro: " + e.getMessage());
		}
	}
		
	//método p/ remover um telefone na posição n
	public void removerFone() {
		int indice;
		BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
		
		try {
			boolean removido = false;
			System.out.print ("Indice a remover: ");
				
			//converte string p/ inteiro
			indice = Integer.parseInt(entrada.readLine());
			
			if (indice >= 0)
				if (listaTelefones.size() > indice) {
					listaTelefones.removeElementAt(indice);
					removido = true;
				}
		
			if (removido)
				System.out.println ("Remocao OK!!");
			else
				System.out.println ("Erro, entre com um indice valido!!");
		}
		catch (Exception e) {
			//mostrar alguma msg de erro!!
		}
	}
			
	//método p/ listar nomes e fones da agenda
	public void listarFones() {
		if (listaTelefones.size() == 0)
			System.out.println ("Nao ha fones!!!");
		else {
			int j;
			for (j = 0; j < listaTelefones.size(); j++) {
				Registro r = (Registro) listaTelefones.get(j);
				System.out.println ("Posicao: " + j + " - Nome: " + r.getNome + "		Telefone: " + r.fone);
			}
		}
	}
			
	//método que gera o menu
	public boolean menu() {
		boolean terminar;
		int nOpcao = 0;
		
		BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
		
		System.out.println(); //para deixar uma linha em branco
		System.out.println ("* Menu *");
		System.out.println ("1-Inscrever; 2-Listar; 3-Remover; 4-Sair");
		System.out.print ("Opcao: ");
		
		try {
			nOpcao = Integer.parseInt(entrada.readLine());
		}
		catch (Exception e) {
			// mostrar alguma msg de erro!!
		}
				
		switch (nOpcao) {
			case 1: {
						adicionarFone();
						break;
					}
			case 2: {
						listarFones();
						break;
					}
			case 3: {
						removerFone();
						break;
					}							
			case 4: break;
					
		    default: System.out.println ("Opcao Invalida");
		}
		
		terminar = (nOpcao == 4);
				
	    return (terminar == false);		
	}
			
	public static void main (String args[]) {
		Principal p = new Principal();
		do {
			// soh para repetir o método menu() da classe Principal1
		} while (p.menu());
	}
}

3 Respostas

J

Declara os métodos gets e sets dos atributos da classe Registro.
Assim vc pode alterar e resgatar os valores do atributos private.

public class Registro {
   private String nome;
   private String fone;
   
   //construtor
   public Registro (String novoNome, String novoFone) {
      nome = novoNome;
      fone = novoFone;
   }
  
  public String getFone() {
    return fone;
  }
  
  public String getNome() {
    return nome;
  }
  
  public void setFone(String fone) {
    this.fone = fone;
  }
  
  public void setNome(String nome) {
    this.nome = nome;
  }
}

blz?

D

Mas e no principal, o q q eu faço?

J

Ai na classe principal, em vez que vc chamar direto o nome do atributo(que agora não é mais possivel), chame os métodos get para retorna o nome ou fone e o set para atribuir algum valor…

Criado 25 de maio de 2004
Ultima resposta 26 de mai. de 2004
Respostas 3
Participantes 2