Onde se origina “método” como um termo especial em POO?


13

"Método" é um termo especial em Programação Orientada a Objetos. Alguém sabe quando a palavra começou a ser usada nesse sentido específico e em conexão com qual linguagem de programação ou outro ramo da aprendizagem quantitativa?

Respostas:


11

Java e C # obtiveram o método do C ++, que o obteve do Simula .

E Algol provavelmente teve influência em Simula:

Além disso, uma versão do MIT ALGOL, AED-0, vinculava estruturas de dados ("plexes", naquele dialeto) diretamente a procedimentos, prefigurando o que mais tarde foi denominado "mensagens", "métodos" e "funções-membro"


3
IIRC, C ++ geralmente prefere 'função membro' sobre 'método'.
21411 Thammers

De acordo com o mesmo artigo da Wikipedia, que coloca a cunhagem do termo (relacionada ao POO) na primeira metade dos anos 60.
Tulains Córdova

2

É difícil encontrar uma resposta definitiva por aí, mas o primeiro idioma a se referir às coisas como métodos parece ter sido o Simula, embora isso possa muito bem ser falso ou retroativo. Dado que funções (da matemática) e procedimentos (também da matemática) aparecem nas linguagens de programação, o melhor que posso imaginar é que "Método" é uma forma abreviada de "Metodologia".

Todos esses são sub-rotinas, bits de código que compõem um programa de computador. Eu imagino que "Método" foi escolhido porque a idéia por trás da programação no estilo OOP é reutilizar o código o máximo possível. Assim, você pode ter um procedimento, mas um método deixa mais claro que é um novo estilo de trabalho. Honestamente, sou conhecido por chamar funções de métodos e ouvi funções chamadas métodos.


6
Receio que você "decida" incorretamente - método (um processo para atingir uma meta) e metodologia (o estudo) têm significados diferentes.
JK

1
Além disso, "método" existe como uma palavra em inglês há muito tempo. Não é necessário procurar uma palavra mais longa para contratar.
Steve314

Ao usar "função" em vez de "método", isso é em grande parte culpa do C ++, e devido ao fato de C não ter um conceito de "procedimento", apenas uma "função" que retorna void. As funções de membro do C ++ estão intimamente relacionadas às funções comuns (ao contrário do Simula) - ter um thisparâmetro implícito e (possivelmente) um mecanismo de despacho de tempo de execução não altera realmente o que você está lidando. Não sei se C foi o primeiro a tratar funções e procedimentos como a mesma coisa, mas Pascal (uma linguagem mais recente) possui functione procedurepalavras-chave - embora as funções de Pascal do IIRC, IIRC, possam ter efeitos colaterais.
Steve314

Especificamente, o método é uma maneira de atingir uma meta, uma descrição / conhecimento, não o processo em si. Isso tem um significado em relação à "classe", outro conceito abstrato, definindo um tipo de objetos. Você obtém uma classe de objetos e um método de fazer X com cada um deles, desde que sejam dessa classe. Você aplica um método genérico a um objeto específico e obtém resultados específicos para esse objeto.
SF.

1

Eu tenho procurado informações sobre isso há décadas. Meu palpite até agora é que o termo surgiu no Simula a partir do subcampo especial da computação numérica, onde o algoritmo específico para implementar uma função (por exemplo, um valor próprio ou o que seja) é chamado de método . Isso ocorre porque você pode ter vários métodos numéricos diferentes para calcular a mesma função matemática, com várias compensações. No OOP, devido à substituição do método, você pode ter a função "mesma" implementada de maneira diferente, conforme apropriado para a classe - por exemplo, a área seria implementada de maneira diferente para Circle e Rectangle , que são ambos Shapes , que têm uma área. Isso parece uma extensão razoável do conceito tradicional de método numérico.


0

Não sei nada sobre etimologia dessa palavra na história da POO. Mas eu sei que não é dedutível (dedutível). Um termo melhor (Termo Mais Dedutivo ou MDT) para ele pode ser reação ou ação


2
Tenho certeza absoluta de que não concordo com você. "Método" é uma palavra perfeitamente cromulenta para o que tudo começou, uma maneira de modelar várias coisas, com cada 'coisa' sendo de uma classe, tendo métodos para mudar a maneira como a coisa era. Da mesma forma que métodos mudam as coisas no mundo real, como.
Vatine 15/07/11

Eu acho que "método" descreveu originalmente o código de implementação, semelhante ao "procedure" - o método / procedimento / algoritmo para calcular o resultado. Usá-lo para uma interface em que a implementação não é conhecida é um pouco estranho, mas originalmente (no Simula) a "mensagem" provavelmente foi usada para isso. Mesmo assim, quando você chama um método, está invocando o código de implementação, mesmo que não saiba (no site da chamada) qual implementação.
Steve314

1
Eu acho que das três palavras 'função', 'procedimento' e 'método', 'função' tem uma conotação matemática (mapeia entradas para saídas), 'procedimento' é imperativo (execute uma série de etapas, também usadas na mesma sentido nas forças armadas); 'method' não tem nenhuma conotação, e é provavelmente por isso que ele é preferido no OOP.
tdammers

@Vatine +1 para "cromulent"
MattDavey 12/10

-1

Programadores com experiência em REAL BASIC, VBx e VB.net conhecem dois tipos de declaração de método "FUNCTION" e "SUB". A família de idiomas BASIC permite declarar uma função com a palavra-chave "FUNCTION" e também com a palavra-chave "SUB". A diferença entre esses dois é que uma "FUNCTION" pode ou não retornar um valor onde, como "SUB", apenas executa o código, mas não retorna nenhum valor. Porém, com o advento dos conceitos de OO, os termos sub e function começaram a ser usados ​​de forma intercambiável como métodos.


2
O mesmo vale para o procedimento / função de Pascal #
1519

3
O VB usa "Função" e "Sub", abreviação de "Sub-rotina", não "Método".
Ant

5
Duvido Alan Kay estava pensando Básico quando esbarra com OOP e Smalltalk
Maglob
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.