Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

O método overload

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Delphi O método overload

    O método overload

    Bom, vocês já devem ter visto algumas funções com o mesmo nome mas com parâmetros diferentes certo?? Isso é exatamente o que o método overload faz. Suponha que você tenha uma função que retorne o tamanho de uma matriz, mas o algoritmo para retornar o tamanho de um vetor (que é na verdade uma matriz com apenas uma coluna/linha) e de uma matriz é diferente. Normalmente você teria que usar um nome diferente para cada função, como "TamanhoVetor" e "TamanhoMatriz", certo?

    Com o método overload você pode usar um nome só, "TamanhoMatriz", sendo que uma dessas funções tem como parametro um vetor e a outra uma matriz.

    Bom, vamos ver isso na prática.

    Primeiro vou colocar aqui as funções que calculam o tamanho da matriz e o vetor com nomes diferentes mesmo. Não vou explicá-las pois não é o objetivo dessa aula.

    Declarem o seguinte entes do implementation do código:

    Código:
    type
      MatrizInteger = array of array of integer;
      VetorInteger = array of integer;
    Código para calcular o tamanho da matriz (supondo que ela seja quadrada ou retangular):

    Código:
    function TamanhoMatriz(matriz: MatrizInteger): string;
    var
    i: integer;
    begin
    if Length(matriz) > 0 then
      Result:=inttostr(Length(matriz)) + 'x' + inttostr(Length(matriz[0]))
    else
      Result:='0x0';
    end;
    Código para calcular tamanho do vetor:

    Código:
    function TamanhoVetor(vetor: VetorInteger): string;
    begin
    Result:=inttostr(Length(vetor));
    end;
    Como utilizar é fácil, é só colocar a função desejada com o parâmetro certo e pronto. Agora vamos deixá-las com o mesmo nome. Repare que se você tentar simplesmente mudar o nome vai dar o seguinte erro:

    Código:
    [Error] Unit1.pas(41): Previous declaration of 'TamanhoMatriz' was not marked with the 'overload' directive
    Para deixar as duas funções com o nome "TamanhoMatriz", primeiro coloque a diretiva "overload" após a função TamanhoMatriz e depois renomeie a TamanhoVetor e coloque a mesma diretiva desse modo:

    Código:
    function TamanhoMatriz(matriz: MatrizInteger): string; overload;
    var
    i: integer;
    begin
    if Length(matriz) > 0 then
      Result:=inttostr(Length(matriz)) + 'x' + inttostr(Length(matriz[0]))
    else
      Result:='0x0';
    end;
    
    function TamanhoMatriz(vetor: VetorInteger): string; overload;
    begin
    Result:=inttostr(Length(vetor));
    end;
    Agora repare que quando voçê digitar Tamanho e apertar Ctrl+Espaço vão aparecer as duas funções com o mesmo nome mas com parâmetros diferentes.

    A utilização do overload ajuda a deixar o código mais limpo e fácil de entender.

    Autor: Ace Ventura
    Last edited by .IndependentResearch.; 18-12-2009, 19:39.
    <<< ENGINEERING CODERZ - HACKING PROGRAMMING GROUP >>>
    msn/mail: azurus21@gmail.com
X
Working...
X