Criar classe

3 respostas
L
Ai pessoal blz?? eu to com um probleminha aqui, tenho que criar uma classe contato para implementar uma agendinha básica de nome+telefone, a classe contato, que irá pegar os nome e os numeros etá dando erro na hora de compilar. vejam o codigo e por favor, que puder me ajuda! :p
import java.io.*;
public class contato 
{
	BufferedReader tec = new BufferedReader(new InputStreamReader(System.in));
	
	private String nome;
	private String telefone;
	
	public contato (String n, String t)
	{
		nome=n;
		telefone=t;
	}
	public String getnome() throws IOException
	{
		nome=tec.readLine();
		return nome;
	}
	public String setnome(String s)
	{
		nome=s;
	}
	public String gettelefone() throws IOException
	{
		telefone=tec.readLine();
		return telefone;
	}
	public String settelefone(String c)
	{
		telefone=c;
	}
}

Valeu!!

3 Respostas

M

é sempre bom postar tanto o código quanto o erro que está dando.

bom, eu achei essa sua classe muito confusa, cara… na hora de instanciar ela, o construtor recebe o nome e o telefone… mas os getters do nome e telefone não retornam esse valor, eles lêem de System.in e retornam oq eles leram, ou seja, os parametros do construtor nunca vão servir para nada.

mas isso nao impediria sua classe de compilar. O erro que eu imagino que seja, é que sempre que voce cria um método cujo tipo de retorno é algo diferente de void, esse método deve sempre retornar um valor através da instrução return.
os seus setters(setnome, settelefone), foram declarados de forma a retornarem valores String, mas em momento algum voce fez isso. Como os setters servem apenas para ajustar o valor de algum atributo da classe que nao seja acessivel diretamente(como os seus atributos nome e telefone, que são privados[isso sim vc fez corretamente]), o recomendavel é fazer eles retornarem void, ou seja, não retornam nada.

outra coisa: as regras que vou citar, são parte de uma convenção, não faz diferença nenhuma no q diz respeito a compilação e execução, mas ajuda na leitura do código, seja por voce mesmo ou por terceiros:
para nomes de classes, sempre utilize a primeira letra de cada palavra que compoe o nome em maiuscula, e as outras em minusculo. ex:
Contato, MinhaClasse, FormPrincipal, etc.

para nomes de atributos e métodos, variaveis, parametros, vc faz algo parecido, a diferença é que a primeira letra da primeira palavra será minuscula.
ex: setNome(), setTelefone(), telefone, nome, getText(), etc…

nomes de atributos, métodos, classes, parametros, etc, devem deixar claro o seu proposito, ou seja, ao invés de receber uma String chamada s no método setnome(), vc poderia utilizar uma String chamada nome, ou novoNome, ou algo assim.

reescrevendo o seu método setnome de acordo com as convenções, ficaria assim:

public void setNome(String novoNome) {

nome = novoNome;

}
L

Cara, Valeu! Foi uma verdadeira aula ! Valeu muito mesmo, e não repare meus erros, absurdos, pq estou apenas começando mesmo em Java, estou vendo OO de verdade a menso de uma mês. heheheheh

Brigadão amsi uam vez. Pelo menso dessa vez compilou, mas deu certo, eu troquei tbm os construtores para n=nome e t=telefone, achoq ue agora tem sentido. estou certo???

abração!

M

eh, esse lance de trocar os nomes dos parametros, é apenas uma recomendação para melhorar a legibilidade do seu codigo. Nem sempre vc vai ter na ponta da lingua oq faz cara parametro de cada método, por isso é bom q eles tenham nomes sugestivos :wink:

Criado 20 de novembro de 2004
Ultima resposta 20 de nov. de 2004
Respostas 3
Participantes 2