segunda-feira, 9 de julho de 2012

Programando em Java - parte 7

Sobrecarga (Overloading)

Java nos permite criar vários métodos com o mesmo nome desde que tenham parâmetros diferentes. Isso é o que chamamos de sobrecarga de métodos.

A sobrecarga de métodos consiste em criarmos o mesmo método com possibilidades de entradas diferentes. Essas entradas, caracterizadas como parâmetros, devem sempre ser de tipos diferentes, quantidades de parâmetros diferentes ou posições dos tipos diferentes.

Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos. No sistema do banco, os extratos podem ser gerados por métodos da classe Conta.

class Conta {
    double saldo ;
    double limite ;
    void imprimeExtrato ( int dias ) {
        // extrato
    }
}


O método imprimeExtrato() recebe a quantidade de dias que deve ser considerada para gerar o extrato da conta. Por exemplo, se esse método receber o valor 30 então ele deve gerar um extrato com as movimentações dos últimos 30 dias.

Em geral, extratos dos últimos 15 dias atendem as necessidades dos clientes. Dessa forma, poderíamos acrescentar um método na classe Conta para gerar extratos com essa quantidade fixa de dias.

class Conta {
    double saldo ;
    double limite ;
    void imprimeExtrato () {
        // extrato dos últimos 15 dias
    }
    void imprimeExtrato ( int dias ) {
        // extrato
    }
}

O primeiro método não recebe parâmetros pois ele utilizará uma quantidade de dias padrão
definida pelo banco para gerar os extratos (15 dias).

O segundo recebe um valor inteiro como parâmetro e deve considerar essa quantidade de dias
para gerar os extratos.

Os dois métodos possuem o mesmo nome e lista de parâmetros diferentes. Quando dois ou mais
métodos são definidos na mesma classe com o mesmo nome, dizemos que houve uma sobrecarga
de métodos. Uma sobrecarga de métodos só é válida se as listas de parâmetros dos métodos são
diferentes entre si.

No caso dos dois métodos que geram extratos, poderíamos evitar repetição de código fazendo
um método chamar o outro.

class Conta {
    void imprimeExtrato () {
        this . imprimeExtrato (15) ;
    }
    void imprimeExtrato ( int dias ) {
        // extrato
    }
}


Nenhum comentário:

Postar um comentário

Novidade!!! Agora vamos ter canal no Youtube =D

Fala pessoal tudo beleza, estou sumido a correria está forte por aqui. Estou querendo dar um start em um projeto antigo que vem desde o temp...