Estou fazendo projeto final e gostaria de uma dica para modelar uma classe Nota_Fiscal para uma oficina mecânica de eixos de veículos de grande porte. Classes do sistema: Cliente, Veiculo, Produto, Item_Produto, Servico, Funcionario, Empresa, Pagamento, Nota_Fiscal, Nota_Garantia, Endereco e Fornecedor.
A classe Nota_Fiscal deve estar relacionada a quais classes?
Pagamento, Nota_Fiscal e Nota_Garantia são redundantes?
-Cabeçalho
---Logo
---Emissor
---Endereço
---Telefone
---[outras informações importantes do emissor]
---Data de emissão
---Cliente
---Endereço
---Telefone
---[outras informações importantes do cliente]
-Detalhe
---Produto
---Quantidade
---Valor unitário
---Valor total
-Soma
---Total de unidades
---Valor total
-Rodapé
---[a criterio do desenvolvedor]
No seu caso, Nota_Fiscal deve ter relação com Cliente, Produto, Item_Produto, Servico, Empresa, Endereço e Fornecedor.
Depende do uso que você irá fazer. Se Nota_Garantia for uma espécie de segunda via da nota fiscal, compensa mais criar um novo campo na Nota_Fiscal para informar se é primeira ou segunda via. Assim, você pode usar a mesma rotina nos dois casos. Se Pagamento for algo como “Contas a receber”, acho importante, pois assim você pode separar os dados do visual. Sua classe Nota_Fiscal, por exemplo pode servir apenas para gerar a nota na tela, enquanto que pagamento é algo mais abstrato, que fica num histórico e contém bem mais informações.
Enfim, meu amigo. Você não nos contou muito sobre a abstração que está fazendo atualmente, seria interessante. Eu apenas fui pelo rumo do que entendi.