JcmSoft - VB.NET  VB.NET - Juntando as partes - Criando uma aplicação OOP  

Este artigo encerra a seqüência que aborda os conceitos básicos sobre a implementação OOP no VB .NET. Abaixo os links de cada artigo para você acompanhar:

  1.  VB.NET - Primeiros passos - Conceitos - I

  2.  VB.NET - Primeiros passos - Conceitos - II

  3.  VB.NET - Primeiros passos - Conceitos - III

  4.  VB.NET - Primeiros passos - Conceitos - IV

  5.  VB.NET - Primeiros passos - Conceitos - V

  6.  VB.NET - Primeiros passos - Conceitos - VI

Neste artigo vou procurar mostrar uma aplicação prática dos conceitos OOP de forma que você possa ter uma visão geral e de como por em prática toda esta teoria.

A mentalidade da programação orientada a objetos está em modelar os objetos definindo suas propriedades, determinando os dados necessários e eventos e métodos que o objeto vai utilizar. No VB .NET controles tais como o TextBox ou LIstBox são por definição classes. Assim um TextBox chamado txtNome quando incluído em um formulário inicializa o código Friend WithEvents txtNome As System.Windows.Forms.TextBox que será incluído na seção Windows Form Designer generate Code para criar uma instância da classe TextBox. Após a classe ser instanciada o objeto pode ser usado no seu projeto a vontade. Vamos então ao trabalho...

Vamos supor que numa empresa hipotética , a JcmSoft Inc. , existam três tipos de empregados :  o funcionário da empresa , o contrato eventual e o funcionário de cargo gerencial. Cada um tem suas particularidades  o pagamento para cada funcionário é feito da seguinte forma:

  1. Funcionário da empresa -  Trabalha 40 horas semanais ; salário fixo mais um percentual por hora trabalhada a mais.
  2. Funcionário com cargo gerencial -  trabalha 40 horas semanais ; salário fixo(com comissão)
  3. contratado eventual  - trabalha 30 horas semanais ; salário fixo mais um percentual por horas trabalhadas a mais

Nossa aplicação VB .NET terá por objetivo gerenciar o pagamento para os funcionários da empresa. Para isto vamos criar uma super classe (Classe Pai) chamada Funcionario e duas classes filhas (Classes base) FuncionarioContratado e FuncionarioNormal derivadas da super classe.

A classe pai terá :

Inicie um novo projeto Vb.NET no Visual Studio .NET selecionando na seqüência : File | New | Project| VB Projects e a seguir Windows Application. Devemos definir a classe que será usada , para isto , inclua um novo módulo de classe e chame-o Funcionario.vb(veja figura) . Lembre-se que todo o arquivo de  módulo tem a terminação .vb. (O tipo de arquivo é determinado pelo seu conteúdo não pela sua extensão).

A seguir temos o código da classe Funcionário:

Option Explicit On  'Obriga a declarar as variáveis

Option Strict On    'Obriga a seguir os tipos definidos para as variáveis

 

Public Class Funcionario

 

   'Definição do Evento para ErrorEvent

   Public Event ErrorEvent(ByVal objName As String)

 

 Private mstrCodigo As String

 Private mstrSobrenome As String

 Private mstrNome As String

 Private mstrEndereco As String

 Private mintStatus As Integer

 Private mstrIdade As Integer

Public Property Codigo() As String

   Get

      Return mstrCodigo

   End Get

   Set(ByVal Value As String)

      If Value.Length < 11 Then

           RaiseEvent ErrorEvent("Codigo")

      Else

           mstrCodigo = Value

      End If

   End Set

End Property

 

Public Property Sobrenome() As String

     Get

       Return mstrSobrenome

     End Get

     Set(ByVal Value As String)

        mstrSobrenome = Value

     End Set

End Property

 

Public Property Nome() As String

    Get

       Return mstrNome

    End Get

    Set(ByVal Value As String)

        mstrNome = Value

    End Set

End Property

 

Public Property Endereco() As String

    Get

       Return mstrEndereco

    End Get

    Set(ByVal Value As String)

      mstrEndereco = Value

    End Set

End Property

 

Public Property Idade() As Integer

   Get

     Return mstrIdade

   End Get

   Set(ByVal Value As Integer)

       mstrIdade = Value

   End Set

End Property

 

Public Property Status() As Integer

   Get

      Return mintStatus

   End Get

   Set(ByVal Value As Integer)

       If Value > 5 Or Value < 1 Then

          RaiseEvent ErrorEvent("Status")

       Else

          mintStatus = Value

       End If

   End Set

End Property

 

  Public Overridable Function CalculaSalario() As Long

   'esta função será sobreescrita

   'no código da classe filha (subclasse) que herda desta classe

  End Function

End Class

Nota: A forma de declarar uma propriedade é diferente das versões anteriores do VB. Embora usamos os comandos Get e Set , eles estão englobados pela declaração Property/End Property.

Na definição da classe Funcionario começamos declarando o evento ErrorEvent. Este evento terá um escopo público e será disparado pelo código da classe se um valor inválido for fornecido para a propriedade Codigo e Status.

As variáveis: mstrCodigo , mstrSobrenome , mstrNome , mstrEndereco , mintStatus , mstrIdade são declaradas como private serão usadas somente pelo módulo da classe. Como elas são declaradas antes de qualquer propriedade ou método estão disponíveis para todo o código no módulo da classe.

A seguir definimos as seis propriedades como Public de forma a serem visíveis fora da classe e assim podermos acessar essas propriedades.

As propriedades Codigo e Status verificam se o valor informado é valido e caso contrário o evento de erro será disparado.

O método CalculaSalario() não possui nenhuma linha de código e apenas foi declarado , fizemos isto pois as classes filhas irão herdar este método e terão cada um sua própria implementação do mesmo. Por isto usamos a palavra chave Overridable na declaração do método ; ela é obrigatória de modo a permitir que a classe que herda a classe possa implementar o seu próprio método. 

Vai continuar...


José Carlos Macoratti