Bom dia Pessoal,
Estou com uma dúvida em relação a modelagem de classes, sobre como distribuir responsabilidades entre elas.
O modelo é de um software para locadora e a dúvida é justamente na parte de realização do aluguel.
Tenho as seguintes classes:
class Cliente {
private String nome;
private List<Aluguel> pendentes;
private Money saldo;
}
class Aluguel {
private Date retirada;
private List<ItemAluguel> itens;
}
class ItemAluguel {
private Produto produto;
private Date devolucaoPrevista;
private Date devolucaoEfetiva;
}
class Produto {
private String nome;
private Date aquisicao;
private boolean disponivel;
}
Quando um cliente alugar um ou mais produtos as seguintes ações precisam ocorrer:
-
Marcar o produto como indisponível.
-
Calcular data de previsão de entrega de cada produto de acordo com alguma política
-
Preencher um item de aluguel para cada produto e com o cálculo anterior
-
Montar o objeto aluguel com todos os itens de aluguel gerado.
-
Associar este objeto aluguel criado ao cliente como pendentes.
-
Descontar do saldo do cliente o valor deste aluguel.
Minha dúvida é: quem teria o método alugar ?
Imagino que cada classe teria um método para alterar seus próprios atributos, mas quem faz a interligação de todos eles?
Agradeço as sugestões.