Cita:
Empezado por _cero_
Pd. Estimado Ñuño Martínez desde la ignorancia pregunto, función no es lo mismo que método? Ambos tienen parámetros variables y retornos variables, siendo la única diferencia el paradigma de programación (estructurada u orientada a objetos, es decir solo palabras no funcionalidad), porque hasta donde yo he programado da lo mismo pasar una función X a un OnClick X.
|
Te equivocas cuando dices que la única diferencia son
"solo palabras no funcionalidad". Como ya he dicho, los métodos han de estar asociados a un objeto, por lo que sí hay una diferencia importantísima.
Según la definición más pura de la POO,
los métodos implementan la respuesta a los mensajes que se envían a un objeto. La confusión quizá provenga en la forma en la que C++, Object Pascal y similares implementan los métodos, que lo hacen como
"llamadas a función con parámetro implícito", this en un caso y SELF en el otro. Sin embargo lenguajes como Small-Talk u Objective C los métodos no se implementan como si fueran funciones por lo que la diferencia está más clara. Es más, en Objective C la nomenclatura es diferente para funciones y para métodos, mientras que en Small-Talk
ni siquiera existen las funciones.
Para que veas, te pongo un ejemplo de método en Objective C:
Código:
- (int)method:(int)i
{
return [self square_root:i];
}
Como ves es parecido pero no igual a una función, mientras que las funciones en este lenguaje son idénticas a las de C. De esta forma a un programador le resultará muy sencillo saber si lo que está viendo es o no un método.
Para que lo veas más claro, cuando escribimos esto en C++:
Código:
UnObjeto.Metodo (Parametro, OtroParametro);
ElObjeto->Metodo (Parametro, OtroParametro);
el compilador lo maneja como si fuera esto:
Código:
((*(UnObjeto.Metodo)) (&UnObjeto, Parametro, OtroParametro));
((*(ElObjeto->Metodo)) (ElObjeto, Parametro, OtroParametro));