quinta-feira, 15 de março de 2007

POO - Sobrecarga

Seguindo a linha de posts sobre programação orientada a objetos vamos ver mais uma técnica: sobrecarga.

Sobrecarga de método é uma técnica que permite a uma classe possuir mais de um método com um único nome, porém com comportamentos e assinaturas diferentes.

A assinatura do método é a forma com que ele é declarado: nome, parâmetros e tipo de retorno.

É muito comum confundir sobrecarga com polimorfismo. A diferença entre eles é que a sobrecarga consiste em implementações diferentes de um método na mesma classe, enquanto polimorfismo consiste em mudar o comportamento de um método de uma classe em classes descendentes – podendo ser somente estendido ou totalmente reimplementado.

Vamos a exemplos de sobrecarga:

C#:

class Sobrecarga {
public double area (double lado) {
return lado * lado;
}

public double area(double largura, double comprimento) {
return largura * comprimento
}
}

Dephi:

interface

type
TSobrecarga = class

function Area(ALado: Double): Double; overload;
function Area(ALargura: Double; AComprimento: Double): Double; overload;

end;


implementation

function TSobrecarga.Area(ALado: Double): Double;
begin
Result := ALado * ALado;
end;

function TSobrecarga.Area(ALargura, Acomprimento: Double): Double;
begin
Result := ALargura * AComprimento;
end;

Java:

public class Sobrecarga {
public double area(double lado) {
return lado * lado;
}

public double area(double largura, double comprimento) {
return largura * comprimento
}
}

Valeu a todos e comentem à vontade!

Um comentário:

  1. Ótimo exemplo, porém um detalhe: segundo Cardelli sobrecarga é um tipo de polimorfismo ad-hoc:
    Classificação de Cardelli:
     Polimorfismo Ad -hoc: abstrações operam sobre um
    número finito de tipos
     Sobrecarga (O v erloading)
     Coerção (Coerc ion)

     Polimorfismo Universal: abstrações operam sobre um
    número potencialmente infinito de tipos
     Paramétrico
     Inclusão
    flw

    ResponderExcluir

 
BlogBlogs.Com.Br