-Tentar acessar um método de um objeto que não existe:
Exemplo: Defina em Java a classe Cliente cujos objetos são clientes de uma empresa telefônica; os clientes têm nome e endereço (rua,num). Defina também a operação rua que retorna a rua onde um determinado cliente reside.
Errado:
class Endereco {
private String rua;
private String num;
public String rua() {
return rua;
}
}
class Cliente {
String nome;
Endereco end;
String rua() {
return (end.rua()); //Estou tentando acessar um objeto
// que eu não sei se existe
}
}
class Cliente{
.
.
String rua() {
String temp=" ";
if(end != null) // assim eu tenho certeza de que o objeto existe
temp = end.rua();
return temp; // o return deve vim no fim do método
}
}
class Cliente{
.
.
Cliente (String n) {
nome = n;
end = new Endereco ();
}
// Assim, eu tenho certeza de que toda vez que eu crio o objeto Cliente, eu
// crio tambem o objeto Endereco e então posso acessá-lo
String rua() {
return (end.rua())
}
}
- Usar um tipo como um objeto:
Errado:
char a = null; //ou int i = null;"char" e "int" são tipos e não objetos. Os objetos são "Character" e "Integer", que podem ser criados através dos tipos.
Por exemplo, String é um objeto, logo, o código abaixo está
String str = null;
class ConjA {
.
.
.
void insere(int a){ ... }
.
.
.
}
class ConjB extends ConjA {
int x =0;
.
.
void reinsere () {
super.insere(x); //ERRO, pois o método "insere" pertence à classe
//ConjB por herança e, portano, não é necessário
//escrever "super.insere(x)", basta colocar "insere(x)".
//Só quando houver overriding de um método é que se
//escreve com "super.".
Errado:
boolean procura (int elem) {
if (elem == 0)
return true;
else
return false;
}
Certo:
boolean procura (int elem) {
boolean retorno = false;
if (elem == 0)
retorno = true;
else
retorno = false;
return retorno;
}
Errado:
Ex: String str = "teste"; String str1 = str.clone();//errado, pois como o método clone() pertence à classe //Object,(classe que todas as outras classes são filhas) //é preciso um "cast" para especificar que é um clone de //um String, nesse caso particular.
Certo:
String str = "teste"; String str1 = (String)str.clone();
public class DadosPessoais {-Mal Uso do Atributo Private:
Ao se criar um atributo privado em uma classe
, é aconselhável criar formas de acesso a este atributo,
tanto para leitura quanto para escrita, a não ser que ele seja
usado apenas para controle interno da classe.
O código abaixo, por exemplo, compila sem acusar erro nenhum,
mas não serve para absolutamente nada,ou seja, nenhuma outra classe pode
acessá-lo, nem eles estão sendo usados por sua própria classe.
private long identidade;
private String cpf;
private String Endereco;
private int anoNascimento;
}
-Colocar Atributos Numa Classe que não Pertencem a Ela:
saldoTotal, pois ele (deveria) ser
exatamente igual ao saldo!
![]() |
Luciano Barbosa (lab@di.ufpe.br) |