Funções com assinaturas diferentes

No post de hoje, veremos como criar funções com assinaturas diferentes. Dessa forma, é possível criar funções com o mesmo nome, porém, executando tarefas diferentes. Também é possível criar vários métodos construtores[bb] para as classes, alterando os parâmetros que são recebidos. Vamos ver tudo isso logo abaixo.

Construtores das classes

Quando um código de uma classe está sendo escrito, é possível informar qual será o comportamento, ou o que será executado na classe, quando ela for executada. Esses são os métodos construtores. No Visual Basic .NET, o código para criar esse métodos está descrito abaixo.

Public Class Classe
    ' Método construtor
    Sub New()

    End Sub
End Class

Criando várias assinaturas

Quando você cria um método, este tem uma assinatura, que nada mais é, que o conjunto formado pelo nome, parâmetros e no caso de uma função que retorna valor, o tipo que será retornado. No caso de um método construtor, a assinatura não tem o nome, já que é utilizada a palavra reservada New. Abaixo temos a assinatura de um método chamado funcao1, com dois parâmetros: val1 e val2.

    Function funcao1(ByVal val1 As String, ByVal val2 As String) As String
        ' Algum código que utiliza os dos parâmetros
    End Function

Caso chamássemos esse método, seriamos obrigados a informar  os dos parâmetros. Ficaria: funcao1("Valor 1", "Valor 2"). Mas, se em algum momento, por algum motivo, fosse necessário executar essa função, sem passar esse dois parâmetros? É possível! Veja abaixo.

    Function funcao1(ByVal val1 As String, ByVal val2 As String) As String
        ' Código qualquer aqui.
    End Function
    Function funcao1() As String
        ' Código qualquer aqui.
    End Function

Se colocar esse código no seu projeto em VB .NET, tenha certeza que não vai dar erro.

O exemplo acima está muito genérico e não dá uma noção muito boa do que pode ser feito. Entretanto, não encerraria o post com essa pulga atrás da orelha a respeito da real utilidade disso. Abaixo está o código de uma classe qualquer, logo em seguida explicarei onde ela se encaixaria.

Public Class Class1
    Private _Id As Integer
    Private _Campo1 As String
    Private _Campo2 As String

    Sub New()
    End Sub

    Sub New(ByVal Campo1 As String, ByVal Campo2 As String)
        Me.Campo1 = Campo1
        Me.Campo2 = Campo2
    End Sub

    Sub New(ByVal Id As Integer, ByVal Campo1 As String, ByVal Campo2 As String)
        Me.Id = Id
        Me.Campo1 = Campo1
        Me.Campo2 = Campo2
    End Sub

    Public Property Id() As Integer
        Get
            Return _Id
        End Get
        Set(ByVal value As Integer)
            _Id = value
        End Set
    End Property
    Public Property Campo1() As String
        Get
            Return _Campo1
        End Get
        Set(ByVal value As String)
            _Campo1 = value
        End Set
    End Property
    Public Property Campo2() As String
        Get
            Return _Campo2
        End Get
        Set(ByVal value As String)
            _Campo2 = value
        End Set
    End Property

No exemplo acima, temos uma classe (Class1) com três campos. Perceba que criei três construtores para essa classe, dessa forma, posso instância essa classe sem passar parâmetros e utilizar as propriedades dessa classe, para atribuir o valores aos campos. Mas, se eu quiser instanciar a classe e já passar os valores, eu também posso.

E se você estiver utilizando o Visual Studio 2008+, ainda é possível visualizar de forma vem intuitiva os construtores.

Assinatura do método no Visual Studio 200

Espero que tenha ajudado! Até uma próxima.

Vídeo

Como carregar um ComboBox de maneira bem fácil

Nessa vídeo aula, mostro como carregar um ComboBox no Visual Basic .NET de maneira bem fácil. Para tanto, utilizarei um classe contendo os dados[bb] que serão inseridos e um DataTable que nos auxiliará na transferência dos dados.

Desse forma, você conseguirá retornar dados de função de busca, por exemplo, com uma lista (Lis(OF T)) de uma classe, mantendo a abstração da classe. Uma boa forma de trabalhar, quando está o desenvolvimento segue o padrão MVC.

Vídeo

Como colocar ícone da aplicação no System Tray (Área de notificação)

Nessa vídeo aula, mostro como colocar o ícone da aplicação na área de notificação do Windows[bb], também conhecida como System Tray. Além disso, também mostro como adicionar um menu vinculado ao ícone da aplicação. Para isso utilizarei os objetos NotifyIcon e ContextMenuStrip.

Vídeo

Lendo Arquivo XML com função recursiva

Nessa vídeo aula, mostro como ler as tags, conhecidas também como nodes, do XML[bb]. Explico com ler o arquivo recursivamente, passando por ele todo e, como ler somente um node (o tag) específico.

Então vamos a aula[bb].

Posts que cito na aula:

Vídeo

Utilizando a Classe Genérica Dictionary

Nessa vídeo aula[bb]veremos como funciona a classe Dictionary.
Com ela podemos mapear conjuntos de chaves, referenciando a essas chaves[bb]valores.
De uma forma mais intuitiva, podemos criar listas semelhantes a vetores, onde os indices são por exemplo nomes de pessoas, ou lugares, ao invés dos tradicionais número inteiro.