Unity Spain

Mesa de ayuda => Unity3D => Scripting => Mensaje iniciado por: Quaternion en Enero 13, 2019, 04:33:43 PM

Título: ¿Qué diferencia hay entre una función y un metodo?
Publicado por: Quaternion en Enero 13, 2019, 04:33:43 PM
Hola!
 
He estado investigando a fondo que diferencia hay entre una función y un metodo y la verdad es que en vez de aclarar mis dudas, lo ha empeorado aún más todavía.
 
Veamos, yo entiendo como función algo parecido a esto:
 
Mi ejemplo de Función (http://prntscr.com/m6m3un)
 
 
 
Como se puede ver en mi ejemplo, eso para mí es una funcion, porque me esta devolviendo un valor (en este caso me devuelve la destrucción del GameObject si pulso clic izquierdo).
 
 
 
El problema y confusión me viene cuando intento entender que es un metodo, he investigado en paginas y he sacado 3 conclusiones:
 
1-Un metodo y una función son lo mismo
 
2-Una función devuelve un valor  y un metodo no devuelve valores "porque es tipo void".
 
3- Los metodos se definen dentro de y son parte de las clases y las funciones fuera de las clases.
 
 
 
Tengo que decir, que en el punto Nº2 NO estoy de acuerdo, ya que un void si devuelve un valor, en mi ejemplo la función de destruir la bomba tiene un void y me devuelve esa acción, por lo tanto yo creo que ese punto es mentira. Esta es la fuente en la que he visto eso:
 
 https://es.stackoverflow.com/questions/7403/diferencias-entre-métodos-procedimiento-función-para-que-sirven-cada-uno-y-co (https://es.stackoverflow.com/questions/7403/diferencias-entre-m%C3%A9todos-procedimiento-funci%C3%B3n-para-que-sirven-cada-uno-y-co)
 
Por otra parte me gustaría que me aclaraseis vosotros que diferencia hay entre funcion y metodo y si es con alguna captura de pantalla señalandome cual es cual mejor todavia, porque la verdad estoy muuuy confuso.
 
 
Título: ¿Qué diferencia hay entre una función y un metodo?
Publicado por: Caesar en Enero 13, 2019, 06:11:26 PM
Este es un tema de programación; teoría y conceptos, te voy  a dar la respuesta puntual.
 
Son lo mismo.
 
Ahora para aclararte un poco, la palabra "Método" es la usada para definir este punto, es lo que vas a encontrar en los libros de programación sobre C# que es el lenguaje que usas en el ejemplo; no sabría decirte si es la misma palabra que se usa en todos los lenguajes, y la palabra "Función" esta es una palabra usada informalmente; generalmente la he observado en tutoriales como los que hay en youtube, pero en el caso se refieren al mismo proceso realizado dentro del lenguaje C#.
 
PD: lo que dices que tu ejemplo devuelve un valor; estas equivocado, cuando encuentras información acerca de métodos que devuelven un valor se refieren a que te dan la instancia o referencia de un "objeto", en tu ejemplo este GameObject es destruido, pero esa es solo una acción, no estas recibiendo la referencia del objeto destruido
Título: ¿Qué diferencia hay entre una función y un metodo?
Publicado por: Quaternion en Enero 13, 2019, 11:14:33 PM
Cita de: Caesar date=1547399486PD: lo que dices que tu ejemplo devuelve un valor; estas equivocado, cuando encuentras información acerca de métodos que devuelven un valor se refieren a que te dan la instancia o referencia de un "objeto", en tu ejemplo este GameObject es destruido, pero esa es solo una acción, no estas recibiendo la referencia del objeto destruido
   


¿La instancia es una clonación de ese objeto? ¿Qué significa exactemente instanciar?   Interesante tu respuesta, creo que si me resuelves esta duda podré entender muchas cosas.  Aunque yo creo que Instanciar es "clonar" on objeto ¿Estoy en lo correcto?
Título: ¿Qué diferencia hay entre una función y un metodo?
Publicado por: Caesar en Enero 13, 2019, 11:51:55 PM
Cuando hablamos de un objeto en C# nos estamos refiriendo a cualquier variable creada de una clase definida en C#, es decir las variables que encontramos en los atributos de clase, son objetos de la clase a la cual pertenecen, en términos prácticos te lo pongo así.
 

public Class Ejemplo {
//Area Atributos
public int variableUno;
private string variableDos;
protected GameObject variableTres;
//Area Constructores
public Ejemplo (){...}
//Area Metodos
public void MetodoUno (...)
private string MetodoDOs (...)
}

 
en el Área de atributos puedes observar lo q comúnmente se le "dice" variables y son 3 como puedes observar variableUno, variableDos y variableTres, cada uno representa una instancia de la clase a cual pertenece, es decir; a la Clase int, a la Clase string y a la Clase GameObject respectivamente.
 
Estos "objetos" estan instanciados y tenemos acceso a ellos mediante su definicion dentro de la clase, es decir cuando queremos usarlos usamos las palabras que los definen, variableUno, variableDos y variableTres, eso es estar referenciado.
Título: ¿Qué diferencia hay entre una función y un metodo?
Publicado por: lightbug en Enero 14, 2019, 02:02:43 AM
Pensá a función vs método como miembros vs variable (en paréntesis -->), función viene más del palo de C, cuando empezó C++ con las clases se empezaron a denominar métodos(miembros) a las funciones(variables) de la clase. me dá igual, prefiero método, hoy en día en POO todo se define via clases así que da igual.
 
Cita de: Caesar date=1547419915en el Área de atributos puedes observar lo q comúnmente se le "dice" variables y son 3 como puedes observar variableUno, variableDos y variableTres, cada uno representa una instancia de la clase a cual pertenece, es decir; a la Clase int, a la Clase string y a la Clase GameObject respectivamente
   


no los llamaría atributos, prefiero la palabra miembros, ya que en C# los atributos van antes de los campos/clases y se expresan así "[ .... ]", pero entiendo tu punto.
 
 
 
Cita de: Quaternion date=1547417673¿La instancia es una clonación de ese objeto?
   

Cita de: Quaternion date=1547417673¿Qué significa exactemente instanciar?
   


Pensalo a la clase como el plano de construcción, la instancia u objeto es el resultado de construir algo con ese plano, por ej class Persona (con miembros nombre, color de ojos, altura, etc) , y la instancia puede ser tal que salga la persona : Pedro, color de ojos azules, altura 1.78 m, etc. En varias bibliografías (por lo menos de C++) un objeto de una clase es una instancia.
 
Cita de: Quaternion date=1547417673Aunque yo creo que Instanciar es "clonar" on objeto ¿Estoy en lo correcto?
   


No es clonar, bueno está en el parrafo anterior, pero con la clase sola no hacés nada, tenés clases que pueden tener varias instancias (comunes), que pueden tener una sola instancia (singleton, ej los managers) o que no pueden tener instancias (static class), estas ultimas las tenes por ej cuando tenés una clase de utilidades, donde está la funcionalidad, pero no la ofrece nadie, es común para todos, es decir no se instancia nada.
Título: ¿Qué diferencia hay entre una función y un metodo?
Publicado por: pioj en Enero 15, 2019, 06:19:44 AM
Son las tantas de la mañana, y ya no sé ni lo que leo. Si lo que pongo a continuación lo habéis escrito antes, disculpad por adelantado...
 
 
 
Se me ocurren 3-4 diferencias principales entre una Función y un Método:
 
Título: ¿Qué diferencia hay entre una función y un metodo?
Publicado por: Manu en Enero 15, 2019, 03:26:06 PM
En resumen:
 
un método es una función de un objeto
 
una función no acarrea existencia de objeto 
 
no?