Olá,
Eu já li bastante sobre OO mas ainda tenho algumas dúvidas cruciais, como estou iniciando esse projeto, gostaria de saber as técnicas / convenções para facilitar os problemas que poderão surgir.
É o velho exemplo de aplicação bancária:
Tenho um cliente:public class Cliente {
private String nome;
private String rg;
private String fraseSecreta;
private String dataNascimento;
private Conta conta; //O cliente tem uma Conta (HAS-A)
//getters e setters
//equals e toString sobrescritos
}
1) A primeira dúvida minha: essa classe Cliente seria um bean, correto? E o que o bean deve conter é apenas isso(variáveis e getters/setters)? Métodos como saque(), deposito(), transferenciaBancaria() devem ir em outra classe? É a questão da coesão.
2) Sobre datas ,no caso a data de nascimento, usar um objeto String para armazená-la é a melhor escolha?
Ainda no mesmo pacote tenho outra classe: Conta.public class Conta {
private String numeroConta;
private int numeroAgencia;
private double saldo;
private enum Tipo{ SIMPLES, ESPECIAL, POUPANCA};
//getters e setters
}
3)A conta pode ter três tipos: Simples, Especial ou Poupança.
Usar enum é o melhor jeito nesse caso?
4)No caso desse exemplo, haverá um Gerente, que será responsável pelo cadastro de Clientes, porém ele também pode fazer
tudo que um Cliente faz. Nesse caso eu devo fazer então Gerente extends Cliente, mas em Cliente não vai ter os métodos de operação citados acima(saldo, deposito) ou vai? As variáveis de instância não devem ser herdadas não é?
5)Para cadastro, será feito em um banco de dados, eu devo criar uma classe separada para essa interação com o banco, certo? Ou o gerente vai ter um método? (Algo como: public void cadastraCliente(Cliente c) )
Na verdade isso seria a parte dos modelos (o "M" do MVC) pois é pra ser usado numa aplicação com JSP.
Bom, é isso, como estou no meio acadêmico, as vezes a gente aprende de um jeito que não é o mais prático ou falta algumas dicas dos PROs hehe.
Abraços!
Grato