Antes de adicionar regras de negócio a nossa classe, vamos analisar o que fizemos para chamar nossa classe
Dim oProduto As New Produto
Estamos criando a instância do objeto, que é conhecida como classe, repare na utilização da palavra new é ela que diz que demos criar nova instância do objeto Produto. Uma observação importante é que se tivéssemos criando um tipo de dado (int,string,datetime,etc) a palavra new não seria utilizada.
No trecho abaixo preenchemos as propriedades com o valores digitados no formulário
oProduto.DataFabricacao = txtDataFabricacao.Text
oProduto.Nome = txtNome.Text
oProduto.NumeroDias = txtNumeroDias.Text
E por último vamos chamar o método para calcular a data de validade
lblResultado.Text = oProduto.RetornaDataValidade()
Agora vamos adicionar algumas regras de negócio ao nosso método RetornaDataValidade:
- A quantidade de dias de validade deve estar entre 5 e 90 dias até o mês 6 do ano, do mês 7 ao mês 12 a quantidade de dias deve estar entre 10 e 70 dias.
- Para quantidades entre 15 e 30 dias, deve ser acrescentado 20% ao resultado final.
Com as regras nosso método ficaria assim:
Function RetornaDataValidade() As String
Dim retorno As String
Dim qtdDias As Integer = NumeroDias
‘Para quantidades entre 15 e 30 dias , deve ser acrescentado 20% ao resultado final.
If ((qtdDias > 14) AndAlso (qtdDias < 71)) Then qtdDias = qtdDias * 1.2
If (DataFabricacao.Month < 7) Then
‘5 e 90 dias até o mês 6 do ano
If ((NumeroDias > 4) AndAlso (NumeroDias < 91)) Then
retorno = DataFabricacao.AddDays(qtdDias)
Else
retorno = "Numero de dias deve estar entre 5 e 90"
End If
Else
‘Mês 7 ao mês 12 a quantidade de dias deve estar
If ((NumeroDias > 4) AndAlso (NumeroDias < 91)) Then
retorno = DataFabricacao.AddDays(qtdDias)
Else
retorno = "Numero de dias deve estar entre 10 e 70"
End If
End If
Return retorno
End Function
Para podermos enviar uma mensagem foi alterado o retorno do método para string
De Function RetornaDataValidade() As DateTime
Para Function RetornaDataValidade() As String
Outro ponto interessante é o trecho abaixo, onde podemos notar que não utilizamos o end if, isso foi possível por que só temos uma linha de comando dentro do if (qtdDias = qtdDias * 1.2), se tivéssemos duas linhas ou mais , o end if seria obrigatório.
If ((qtdDias > 14) AndAlso (qtdDias < 71)) Then qtdDias = qtdDias * 1.2
Agora rode a aplicação e informe os valores diferentes para ver o funcionamento das regras criadas.