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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.