Caríssimos, estou aprendendo oo e tenho algumas dúvidas.
Por exemplo:
Tenho um objeto Conta com os métodos:
saca(Date data, Double valor, String Descricao, PlanoConta pconta)
deposita(Date data, Double valor, String Descricao, PlanoConta pconta).
A Conta tem os atributos Número, Agência, Banco.
Tem também um histórico de lançamentos com os seguintes atributos: Data, Descrição, Valor, Planodeconta
Exemplo de Plano de Contas:
Receitas
Vendas
Despesas
Custo Fixo
Custo Variável
…
A forma que implementei foi:
±------------------------------------------------------------------------------------------+
| Conta |
±------------------------------------------------------------------------------------------+
| - Numero |
| - Agencia |
| - Banco |
| - List<Lancamento> lancamentos |
±------------------------------------------------------------------------------------------+
| + void saca(Date data, Double valor, String Descricao, PlanoConta pconta) |
| + void deposita(Date data, Double valor, String Descricao, PlanoConta pconta) |
±------------------------------------------------------------------------------------------+
±--------------------+
| Lancamento |
±--------------------+
| - Data |
| - Valor |
| - Descricao |
| - PlanoConta |
±--------------------+
±------------------------------+
| PlanoConta |
±------------------------------+
| - Descricao |
| - List<PlanoConta> contas |
±------------------------------+
Dúvidas:
Nesse caso, Lançamento e PlanoConta seriam classes anêmicas, pois não tem métodos.
Em programação orientada a objetos, nós modelamos os objetos em termos do que eles fazem e não do que eles são (Bertrand Meyer ? Object Oriented Software Construction). Pensando assim as classes Lancamento e PlanoConta estariam ?erradas? (não sei se ?erradas? é o termo correto… rs) .
Como eu resolveria esse tipo de situação ?
PlanoConta e Lançamento só existem porque tenho que manter registro delas, gerar relatórios. (BD ou outra forma de persistência)
Estou modelando errado ? Alguma luz ?