Pergunta

Eu recentemente fiz uma pergunta sobre o que chamei de "chamadas de método".A resposta se refere o "mensagens".Como um auto-didata hobby programador tentar formular perguntas que não me faça parecer um idiota, eu estou percebendo que a terminologia que uso revela muito sobre como eu aprendi a programar.

Existe uma distinção entre os vários termos para métodos/mensagens/etc.na programação OO?Esta é uma diferença que vem de diferentes linguagens de programação usando uma terminologia diferente para descrever conceitos similares?

Eu me lembro que na pré-OO línguas, uma distinção, por vezes, ser feita entre "sub-rotinas" e "funções" com base em se a um valor de retorno era esperado, mas mesmo assim, isso foi um idioma distinção?

Foi útil?

Solução

Eu encontrei este para ser uma linguagem de programação e paradigma coisa.Um paradigma OOP — refere-se aos objetos com os métodos, o que conceitualmente são como você enviar mensagens para os objetos (este ponto de vista é refletido em UML, por exemplo).

Outro paradigma funcional — pode ou não pode envolver a classes de objetos, mas as funções são a unidade atômica de trabalho.

Na programação estruturada, você tinha de sub-rotinas (observe que o prefixo "sub" implica em estrutura).

Na programação imperativa (que coincide com os estruturado bastante, mas de uma forma ligeiramente diferente de olhar as coisas), você tem mais estereotipada de visão de mundo, e assim, 'funções' representam alguns operação (muitas vezes de matemática).

Tudo que você tem a fazer para não soar como um caipira é usar a terminologia usada pela referência de idioma para o idioma que você está usando.

Outras dicas

Mensagem!=Método!=função

em OOP diferentes objetos podem ter diferentes métodos vinculados para o mesmo mensagem.

por exemplo:a mensagem de "girar para a esquerda n graus" seria implementado diffrently por diferentes objetos, tais como forma, círculo, retângulo e quadrado.

Mensagens:Os objetos se comunicam através de mensagens.

-Objetos de enviar e receber mensagens.

-a resposta a uma mensagem é a execução de um método.

-o método a utilizar é determinar ser o receptor em tempo de execução.

Em C++, Métodos e Mensagens são chamadas de os membros de função.

Eu acredito mensagem é usado em smalltalk.

Java, C# etc.tendem a usar método ou método de instância.

Eu tenho quase certeza (mas uma rápida Taxas verifique parece confirmar isso) que a `passagem de mensagens terminologia vem do Smalltalk comunidade.Eu acho que é mais ou menos equivalente a uma chamada de método.

A "Mensagem" termo pode referir-se ao envio de uma mensagem para um objeto, que é suportada em algumas linguagens de programação e outros não.

Se o objeto que suporta a mensagem e, em seguida, ele irá executar algum código.Caso contrário, ele vai simplesmente ignorá-lo.Esta é uma abordagem mais dinâmica do que uma função explícita/chamada do método onde o objeto deve oferecer suporte a essa função.

Objective-c, eu acredito, utiliza este serviço de mensagens abordagem.

Orientada por objectos implementações, como o C#, o conceito de uma "mensagem" não existe realmente como uma linguagem explícita de construir.Você não pode olhar para um determinado bit de código e dizer: "aí está a mensagem."

Em vez disso, um método de um objeto da classe implica a idéia de que outros objetos podem enviar um tipo de mensagem que desencadeiam o comportamento dentro desse método.Assim você acaba apenas especificando o método diretamente, em vez de enviar uma mensagem.

Com outras implementações, como Smalltalk, você pode ver a mensagem que está sendo passada, e o objeto receptor tem a capacidade de fazer com que a mensagem que ele vai.

Existem bibliotecas que sentar em cima de linguagens como C#, que tentam restaurar a mensagem explícita passando sentir a língua.Eu fui cozinhar um de meus próprios para divertir aqui: http://collaborateframework.codeplex.com/

Eu não tenho certeza sobre a origem do mensagem terminologia.Mais ofter eu encontro mensagens em UML, design.Objetos (os Atores em UML terminologia) podem se comunicar uns com os outros por meio de mensagens.No mundo real código mensagem é apenas uma chamada de função normalmente.Eu acho que de mensagem como da tentativa de se comunicar com algum objeto.Ele pode ser um verdadeiro mensagem (como mensagens no SO) ou chamadas de função.

Geralmente, o "Método" parece ser o nome apropriado para Funções.No entanto, cada língua tem a sua própria palavras-chave.O Delphi, por exemplo, ainda faz uma diferença entre os Métodos que retornam algo ("Funções") e Métodos que retornam Nada ("Procedimentos"), considerando que em C-Tipo de línguas, não há nenhuma diferença.

Aqui está um pouco simplificado definições:

métodos/sub-rotinas/vazios: executar uma ação

funções: executar uma ação e retornar um valor

eventos: são chamados quando um objeto em ação

manipuladores: são as funções/métodos que manipulam os eventos


PS:este é um exemplo perfeito de porque ASSIM deve apoiar DL/DT/DD tags.

Eu acredito que é uma questão de preferência neste ponto.As palavras que você menciona são basicamente sinónimos no dia de hoje idiomas e para a maior parte as pessoas vão entender o que você quer dizer, se você dizer um "método" ou "função".Se você usar "mensagem", o que só é realmente usado em OOP, em seguida, você pode confundir o que você está tentando transmitir.Por exemplo:"Eu preciso para criar uma mensagem enviar uma mensagem de e-mail." Outros termos que poderiam ser sinônimos, e esta não é uma lista completa, são sub-rotina, ação, procedimento, operação (apesar de, geralmente, matemática na natureza), subprograma, comando...

método :semelhante à função em linguagens tradicionais

mensagem :semelhante a passagem de parâmetro em língua tradicional

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top