Olá Diogo, tudo bem com você?
Peço desculpas pela demora em obter um retorno.
A prática na área de programação será sempre o alicerce para construir soluções sólidas e códigos eficazes. Fico feliz que você esteja praticando e compartilhando com a comunidade o que tem feito.
Partindo para suas perguntas, usar um tipo genérico para representar o tipo de pagamento específico é sim uma boa opção, nisso, você criaria classe chamada Pagamento
que contém informações comuns a todos os tipos de pagamento, como data, valor e alguma descrição adicional se for o caso. Essa abordagem vai permitir que você tenha flexibilidade ao lidar com diferentes tipos de pagamentos, mantendo uma estrutura comum para as informações compartilhadas.
Quanto a colocar o valor nas próprias classes em relação a valor e data é mais apropriado manter o valor e a data como atributos nas próprias classes de transação. Cada tipo de transação pode ter esses atributos específicos, uma vez que eles são informações relevantes para essas operações individuais. Dessa forma, cada classe de transação tem seus próprios atributos de valor e data, refletindo a responsabilidade correta dessas informações dentro do contexto de cada tipo de transação.
Todavia, quero ressaltar que é apenas uma sugestão pensando no crescimento do seu projeto e em boas práticas, porém, a depender dos objetivos específicos, mudanças terão de ser feitas para adaptar a realidade do seu cenário em específico.
Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Em caso de dúvidas estou à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!