Método (programação): diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
m Ricvelozo moveu Método (programação de computadores) para seu redirecionamento Método (programação)
Linha 1:
{{Orientação a objetos}}
Em [[orientação a objetos]], um '''método''' é uma [[sub-rotina]] que é executada por um [[Objeto (informática)|objeto]] ao receber uma mensagem. Os métodos determinam o comportamento dos objetos de uma [[classe (programação)|classe]] e são análogos às [[função|funções]] ou procedimentos da [[programação estruturada]]. O envio de mensagens (chamada de métodos) pode alterar o estado de um objeto.
 
Em [[programação orientada a objetos]], um '''método''' é uma [[sub-rotina]] (ou ''procedimento'') associado com uma [[classe]]. Métodos definem o comportamento a ser exibido por [[Instância (ciência da computação)|instâncias das classes associadas]] ao 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 esles estão associados e são desse modo 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 estar ligados a uma classe em [[tempo de compilação]] (''ligação estática'' - ''static binding'') ou a um objeto em tempo de execução (''[[ligação dinâmica]]'').
 
== Exemplo ==
Linha 16 ⟶ 15:
== Métodos de classe ==
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:<ref>[http://imasters.com.br/artigo/4381/linguagens/introducao-ao-uso-de-metodos-de-classe/ Introdução ao uso de métodos de classe]</ref>
 
* Em algumas linguagens (por exemplo, [[C++]], [[Java (linguagem de programação)|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. <code>[[this (programação de computadores)|this]]</code> não pode ser usado em métodos estáticos.
* Em outrasalgumas linguagens (por exemplo, [[SmalltalkC++]], [[Ruby]],Java (linguagem de [[Objective-Cprogramação)|Java]]), métodos de classe são métodossinônimos quede sãométodos chamadosestáticos sobre(ver umseção objeto de classeabaixo), que podesão ser computado em tempo de execução, não existindo diferença entrechamados chamarcom um método sobre um objeto regular ou um objetonome de classe. Entretanto,conhecido ambosem os métodostempo de instância e de classe são resolvidos dinamicamente e não há métodos "estáticos"compilação. Notavelmente,<code>[[this nesses métodos(programação de classe, o <code>computadores)|this]]</code> senão referepode aoser objetousado deem classe.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 <code>this</code> 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 <code>classmethod</code> e <code>staticmethod</code>, respectivamente. O primeiro possui acesso ao <code>this</code> (isto é, o objeto de instância, convencionalmente conhecido como <code>self</code>), enquanto o segundo não.
 
== Métodos de conversão de operadores ==
Linha 25:
{{Referências}}
 
== {{Ligações externas}} ==
{{correlatos|wikilivros=Programação orientada a objetos/Atributos e métodos}}
<table>
<td align="left">
{{correlatos|wikilivros=Programação orientada a objetos/Atributos e métodos}}
</td>
</table>
 
{{Esboço-programação}}