Método (programação)

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Em orientação a objetos, um método (ou função membro) é uma sub-rotina (ou procedimento ou função) associada a um objeto, e que possui acesso aos seus dados, as variáveis membro. Ele é executado por um objeto ao receber uma mensagem. Os métodos determinam o comportamento dos objetos de uma classe e são análogos às funções ou procedimentos da programação estruturada. O envio de mensagens (chamada de métodos) pode alterar o estado de um objeto.

Em linguagens baseadas em classe eles são definidos na classe. Métodos definem o comportamento a ser exibido pelas instâncias da classe associada no tempo de execução do programa. Métodos possuem a propriedade especial que em tempo de execução, possuem acesso aos dados armazenados em uma instância da classe (ou instância de classe ou objeto de classe ou objeto) que estão associados e são, desta forma, capazes de controlar o estado da instância. A associação entre classe e método é chamada de ligação (binding). Um método associado com uma classe é dito estar ligado (bound) à classe. Métodos podem ser ligados a uma classe em tempo de compilação (ligação estática) ou a um objeto em tempo de execução (ligação dinâmica).

Exemplo[editar | editar código-fonte]

O seguinte código Java define um método "retângulo" na classe "main", que pode encontrar a área de um retângulo.

public class Main {
        int retangulo(int a, int h) {
                return a*h;
        }
}

Métodos abstratos[editar | editar código-fonte]

Um método abstrato é aquele com apenas uma assinatura e sem corpo de implementação. É frequentemente utilizado para especificar que uma subclasse deve fornecer uma implementação do método. Métodos abstratos são usados para especificar interfaces em algumas linguagens de computador.

Exemplo[editar | editar código-fonte]

O seguinte código em Python mostra uma classe abstrata que precisa ser estendida:

from abc import *
class Veiculo(metaclass = ABCMeta):
    @abstractmethod
    def transportar(self, fator):
        pass

A seguinte subclasse estende a classe principal:

class Aeroplano(Veiculo):
    def transportar(self, pessoas):
        super().transportar(fator):
        self.combustivel = pessoas * fator * trecho
 
    def voar(self):
        return "Aeronave em vôo"

Métodos de classe[editar | editar código-fonte]

Métodos de classe são métodos que são chamados sobre uma classe (comparar este com métodos de instância de classe ou métodos de objeto). Seu significado pode variar dependendo da linguagem de programação:[1]

  • Em algumas linguagens (por exemplo, C++, Java), métodos de classe são sinônimos de métodos estáticos (ver seção abaixo), que são chamados com um nome de classe conhecido em tempo de compilação. this não pode ser usado em métodos estáticos
  • Em outras linguagens (por exemplo, Smalltalk, Ruby, Objective-C), métodos de classe são métodos que são chamados sobre um objeto de classe, que pode ser computado em tempo de execução, não existindo diferença entre chamar um método sobre um objeto regular ou um objeto de classe. Entretanto, ambos os métodos de instância e de classe são resolvidos dinamicamente e não há métodos "estáticos". Notavelmente, nesses métodos de classe, o this se refere ao objeto de classe
  • Algumas linguagens possuem ambos. Por exemplo, em Python, pode-se criar métodos de classe e métodos estáticos usando os decoradores classmethod e staticmethod, respectivamente. O primeiro possui acesso ao this (isto é, o objeto de instância, convencionalmente conhecido como self), enquanto o segundo não

Métodos de conversão de operadores[editar | editar código-fonte]

Um operador de conversão fornece um meio para que o compilador implicitamente (realizado pelo compilador automaticamente quando for o caso) fornece um objeto de um tipo diferente do tipo do objeto de classe.

Métodos estáticos[editar | editar código-fonte]

Métodos estáticos não requerem uma instância da classe nem podem acessar implicitamente os dados (ou this, self, Me, etc.) de tal instância. Um método estático é distinguido em algumas linguagens de programação com a palavra-chave static colocada em algum lugar na assinatura do método.

Em linguagens de tipagem estática, como Java, métodos estáticos são chamados "estáticos" devido a eles serem resolvidos estaticamente (isto é, em tempo de compilação) baseado na classe que eles são chamados e não dinamicamente como no caso com métodos de instância que são resolvidos polimorficamente baseados no tipo de tempo de execução do objeto. Entretanto, métodos estáticos não podem ser sobrescritos.

Referências

Ligações externas[editar | editar código-fonte]

Outros projetos Wikimedia também contêm material sobre este tema:
Wikilivros Livros e manuais no Wikilivros
Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.