public Livro (String t, String a, int n)
Alguém pode dizer que parâmetros devem ser
passados para este construtor de Livro? Nem eu.
A regra de ouro do jogo é a seguinte: os
nomes dos parâmetros devem indicar os seus significados. Esta é a
única forma de se garantir que uma outra pessoa (possivelmente um
membro da sua equipe do projeto) possa compreender o que a sua
classe faz.
public class DadosPessoais {
private long identidade;
private String cpf;
private String Endereco;
private int anoNascimento;
}
saldoTotal
, pois ele (deveria) ser
exatamente igual ao saldo! Outro exemplo: na classe Pessoa,
será que faz sentido um dos atributos da classe ser o ano
atual? Tudo bem, fica mais fácil para se fazer as contas da
idade da pessoa, você pode implementar um método mudaAno()
ou coisa parecida, mas isto não é natural! E a naturalidade da
implementação é uma das principais características da orientação a
objetos! Para que nadar contra a corrente? Você provavelmente irá
apenas se cansar...
class Pessoa { private String nome; ... private DadosPessoais dados; ... Pessoa (String nom, String sobrenom, DadosPessoais dadosPessoais, String tel) { ... } ... DadosPessoais dados() { return dados; } ... } class DadosPessoais { private boolean ehcasado; ... private Endereco endereco; ... DadosPessoais (boolean ehCasado, String numCpf, Endereco end, int anoNasc) { ... } ... Endereco endereco() { return endereco; } ... } class Endereco { ... private String bairro; ... String bairro() { return bairro; } }Este exercício estava completamente correto! Mas imagine o trabalho para se saber o bairro de uma determinada pessoa:
Pessoa p;
...
DadosPessoais dp = p.dados();
Endereco e = dp.endereco();
String bairro = e.bairro();
System.out.println(bairro);
Será que esta granularidade tão fina da
implementação é realmente necessária? O que vocês tem de
verificar é se o problema que vocês estão tratando
realmente precisa de todo este detalhamento. Para o controle
academico do DI, por exemplo, as unicas informações necessárias
para as "Pessoa"s seriam seus nomes, talvez endereços e numero de
matrícula. Não há a necessidade de tanto trabalho assim...
A decisão é de vocês. A minha
sugestão: não compliquem, a não ser que o problema seja realmente
complicado. Nestes exercícios vocês podem até achar fácil
lidar com esta complexidade, mas quando vocês forem fazer algum
projeto grande mesmo, ou até mesmo o projeto da disciplina,
vocês com certeza terão muito mais trabalho do que realmente
precisariam ter.
Carlos Figueira Filho(csff@di.ufpe.br) |