Caros colegas
Gostaria de algumas dicas do que seria melhor no momento de validar os atributos na criação de um objeto de uma classe qualquer.
Essa validação deveria ficar na interface???
Essa validação deveria ficar na classe de negócio???
Para tentar ilustrar melhor, criei uma classe cliente que tem dois atributos e seus respectivos métodos e validações. Também criei uma outra classe somente para fazer um teste, imaginem que esta seja a classe de interface. Pelo que já li sobre o assunto, me pareceu uma boa saída. Gostaria de opiniões se realmente posso continuar por esse caminho na construção das minhas aplicações.
Classe Cliente com as validaçõespublic class Cliente {
private int codigo;
private String nome;
public Cliente (){
}
public Cliente (int codigo, String nome) {
setCodigo(codigo);
setNome(nome);
}
public void setCodigo(int codigo) throws IllegalArgumentException {
if (codigo <=0)
throw new IllegalArgumentException("Codigo Invalido", new Throwable("Cliente.codigo"));
else
this.codigo = codigo;
}
public void setNome(String nome) throws IllegalArgumentException {
if (nome == null || nome.trim().length()==0)
throw new IllegalArgumentException("Nome invalido", new Throwable("Cliente.nome"));
else
this.nome = nome;
}
public int getCodigo() {
return this.codigo;
}
public String getNome() {
return this.nome;
}
}
import javax.swing.*;
public class Cadastro {
public static void main (String args[]) {
int codigo = Integer.parseInt(JOptionPane.showInputDialog("Informe o Codigo"));
String nome = JOptionPane.showInputDialog("Informe o Nome");
try {
Cliente c = new Cliente(codigo, nome);
// faz o que tem que fazer com o objeto e coisa e tal
}
catch(Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
if (ex.getCause().getMessage().equals("Cliente.codigo"))
JOptionPane.showMessageDialog(null, "O erro ocorreu no codigo do cliente");
if (ex.getCause().getMessage().equals("Cliente.nome"))
JOptionPane.showMessageDialog(null, "O erro ocorreu no nome do cliente");
}
System.exit(0);
}
}