Ver Mensaje Individual
  #4  
Antiguo 13-04-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por _cero_ Ver Mensaje
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));
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 13-04-2011 a las 10:35:19.
Responder Con Cita