1. Universidad Tecnológica de Nezahualcóyotl Trabajo: Métodos en java Por: Canales Nava Ariadna Robles Reyes Martha Fabiola Rodríguez Carmona Emmanuel Ruiz Ángeles Karina Silva López Erika Zamudio Cano Giovanni Materia: Desarrollo de aplicaciones Grupo: tic 52 Salón: ? Carrera: Informática Turno: Matutino
2. Métodos En una clase, cada método realiza una tarea relativamente autónoma. Este permite que los programadores puedan dividir un problema complejo en varias piezas más pequeñas y manejables. Una vez que el método se ha escrito y se ha probado correctamente, el programador ya no necesita preocuparse por su funcionamiento interno. Los usuarios simplemente utilizan el método y los argumentos adecuados para invocarlo siempre que se necesite su funcionalidad.
3. Definición de métodos Cada método cuenta con: · Identificador de acceso. Al igual que las variables, los métodos pueden ser publico private(existen otros identificadores de acceso que trataremos más delante en el curso). A los métodos privatesolamente se puede acceder desde dentro de la clase. Por su parte, a los métodos publicpuede acceder cualquiera, tanto desde dentro como desde fuera de la clase. · Tipo devuelto. Un método puede devolver un valor al usuario. Puede tratarse de un tipo de datos simple, como into de otra clase. Un tipo devuelto voidindica que no se devolverá ningún valor.
4. · Nombre. El nombre de un método debe comenzar con una letra, distingue entre mayúsculas y minúsculas y no puede ser una palabra reservada de Java. Una buena práctica es utilizar nombres descriptivos, por ejemplo, setHeight. · Lista de argumentos. Los argumentos son campos de entrada par aun método. Un parámetro puede ser un tipo de datos simple y otra clase.
5. REGLAS PARA EL USO DE METODOS 1.- Cuando se usan variables como parámetros, la variable que se manda debe ser declarada dentro del principal o del procedimiento de donde se esta enviando. 2.- La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre. 3.- La cantidad de variables que se envian deben ser igual en cantidad, orden y tipo a las variables que reciben. 4.- La variable que se recibe tiene un ambito local dentro del procedimiento, es decir solo la puede usar ese procedimiento.
6. Invocación de un método Cuando se invoca un método, Java crea una variable temporal para cada uno de sus parámetros y copia el valor de dichos parámetros en la variable temporal. Dicho de otro modo, el método obtiene solamente el valor de dicho parámetro, no el parámetro en sí. Cualquier cambio realizado dentro del método únicamente afectará a la variable temporal, no al parámetro pasado al método. En informática, esto se conoce como “llamada_por_valor”. Tenga en cuenta que Java siempre utiliza la llamada_por_valor para pasar parámetros. Este proceso resulta mucho más sutil de lo que puede parecer a primera vista, sobre todo cuando los objetos se están pasando, tal como se explica a continuación.
7. publicclass { int a=1; int b=2; int c=3; int d=4; int e=5; publicvoidMetodo(intf,intg,inth,inti,int j) { int suma=f+g+h+i+j; } publicvoidstaticvoidmain(String[]args) { Metodo(a,b,c,d,e); } }
8. El tipoderetorno es el tipo primitivo o clase del valor que este método regresa. Puede ser uno de los tipos primitivos, un nombre de clase o void si no regresa un valor. Si el método regresa un objeto de arreglo, las llaves del arreglo van después del tipo de retorno o después de la lista de parámetros: se usará la primera forma porque es más fácil de leer: int [ ] hacerRango (intlower, intupper) { ... }
9. Paso de parametros y Referencia en Java En el paso de parámetros de variables a métodos en Java se suele decir que: las variables de tipo simple (int, double, etc) se pasan por valor los objetos se pasan por referencia. Ésto no es cierto, después de consultar variasfuentes puedo concluir que en Java las variables, ya sean simples u objetos, se pasan siempre por valor.
10. El hecho de hacernos pensar que los objetos se pasan por referencia se debe a que si pasamos un objeto a un método y modificamos su valor dentro del método, al salir de éste, nuestro objeto habrá sido modificado.Pero nosotros en realidad no hemos pasado el objeto como tal, sino que hemos pasado por valor la referencia al objeto, es decir, le hemos pasado una copia de su dirección en memoria.
11. Por lo tanto, cuando pasamos un objeto a un metodo, siempre estaremos pasando una copia de su dirección, por lo que aunque le cambiemos la direccion, en cuanto salga del metodo, volverá a tener la dirección original. Sin embargo, si dentro del método accedemos a su contenido y lo modificamos, éste si que seguirá modificado una vez salgamos del método, porque el contenido no es ninguna copia.
13. Que dará de salida esto: BeforemodifyPoint p = java.awt.Point[x=0,y=0] and i = 10DuringmodifyPoint pt = java.awt.Point[x=5,y=5] and j = 15AftermodifyPoint p = java.awt.Point[x=5,y=5] and i = 10
14. ejemplo2 publicstaticvoidmodificarVariable(int [] array){array[0] = 99; //mi nuevo valor sera 99} publicstaticvoidmain(Stringargs[]){int[] miVariable = { 1 };modificarVariable(miVariable);System.out.println("El nuevo valor de mi variable es: " + miVariable[0]);}
15. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones TodoEnUno.main 1 1 1.-Se crea el registro de activación del método main
16. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 TodoEnUno.main 1 Todo en uno 2 1 1.-Se crea el registro de activación del método main 2.-Se invoca el método Todo en uno
17. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 TodoEnUno.main 1 3 Todo en uno 2 Circulo.TodoEnUno 3 1 1.-Se crea el registro de activación del método main 2.-Se invoca el método Todo en uno 3.-Se crea el registro de activación de TodoEnUno
18. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 4 TodoEnUno.main 1 Todo en uno 2 Circulo.TodoEnUno 3 Double r:2 4 1 1.-Se crea el registro de activación del método main 2.-Se invoca el método Todo en uno 3.-Se crea el registro de activación TodoEnUno 4.-Se crea la variable r con valor de 2
19. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 Todo en uno 2 Circulo.TodoEnUno 3 Double r:2 4 T=new TodoEnUno 5 1 5 1.-Se crea el registro de activación del método main 2.-Se invoca el método Todo en uno 3.-Se crea el registro de activación TodoEnUno 4.-Se crea la variable r con valor de 2 5.-Crea el objeto de la clase todo en uno
20. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 Todo en uno 2 Circulo.TodoEnUno 3 Double r:2 4 T=new TodoEnUno 5 6 circulo 1 5 6 1.-Se crea el registro de activación del método main 2.-Se invoca el método Todo en uno 3.-Se crea el registro de activación TodoEnUno 4.-Se crea la variable r con valor de 2 5.-Crea el objeto de la clase todo en uno 6.- Se invoca el método Cirulo
21. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 7 Todo en uno 2 Circulo.TodoEnUno 3 Double r:2 4 T=new TodoEnUno 5 circulo 6 1 5 TodoEnUno.circulo 7 6 1.-Se crea el registro de activación del método main 2.-Se invoca el método Todo en uno 3.-Se crea el registro de activación TodoEnUno 4.-Se crea la variable r con valor de 2 5.-Crea el objeto de la clase todo en uno 6.- Se invoca el método Cirulo 7.-Se crea el registro de activación del método circulo
22. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 7 8 Todo en uno 2 Circulo.TodoEnUno 3 Double r:2 4 T=new TodoEnUno 5 circulo 6 1 5 TodoEnUno.circulo 7 6 Doublearea 8 1.-Se crea el registro de activación del método main 2.-Se invoca el método Todo en uno 3.-Se crea el registro de activación TodoEnUno 4.-Se crea la variable r con valor de 2 5.-Crea el objeto de la clase todo en uno 6.- Se invoca el método Cirulo 7.-Se crea el registro de activación del método circulo 8.-Se crea la variable area
23. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 7 8 Todo en uno 2 9 Circulo.TodoEnUno 3 Double r:2 4 T=new TodoEnUno 5 circulo 6 1 5 TodoEnUno.circulo 7 6 Doublearea 8 area=Math.PI*cuadrado(r) 9 1.-Se crea el registro de activación del método main 2.-Se invoca el método Todo en uno 3.-Se crea el registro de activación TodoEnUno 4.-Se crea la variable r con valor de 2 5.-Crea el objeto de la clase todo en uno 6.- Se invoca el método Cirulo 7.-Se crea el registro de activación del método circulo 8.-Se crea la variable área 9.-a la variable área asigna el parámetro PI se multiplica por el cuadrado al cual se le pasa el parámetro de r
24. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 7 8 Todo en uno 2 9 Circulo.TodoEnUno 3 10 Double r:2 4 T=new TodoEnUno 5 circulo 6 1 5 Params.circulo 7 6 Doublearea 8 area=Math.PI*cuadrado(r) 9 10.-Se crea el registro de activación método cuadrado TodoEnUno.cuadrado 10
25. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 7 8 Todo en uno 2 9 Params.TodoEnUno 3 10 Double r:2 4 11 T=new TodoEnUno 5 circulo 6 1 5 Params.circulo 7 6 Doublearea 8 area=Math.PI*cuadrado(r) 9 10.-Se crea el registro de activación método cuadrado 11.-Se crea la variable ra TodoEnUno.cuadrado 10 doublera 11
26. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 7 8 Todo en uno 2 9 Circulo.TodoEnUno 3 10 Double r:2 4 12 T=new TodoEnUno 5 circulo 6 1 5 Params.circulo 7 6 Doublearea 8 area=Math.PI*cuadrado(r) 9 10.-Se crea el registro de activación método cuadrado 11.-Se crea la variable r ra 12. a la variable ra asigna la elevación al cuadrado se multiplica por la variable rad TodoEnUno.cuadrado 10 doublera 11 ra=Math.pow(rad,2) 12
27. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 4 returnra 13 7 8 9 10 12 13 1 5 6 10.-Se crea el registro de activación método cuadrado 11.-Se crea la variable r ra 12. a la variable ra asigna la elevación al cuadrado se multiplica por la variable rad 13.-se retorna el valor de ra
28. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 4 returnra 13 7 12.56 14 8 9 14 10 12 13 1 5 6 10.-Se crea el registro de activación método cuadrado 11.-Se crea la variable r ra 12. a la variable ra asigna la elevación al cuadrado se multiplica por la variable rad 13.-se retorna el valor de ra 14.-manda a imprimir la variable área
29. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 7 12.56 14 8 Todo en uno 2 9 14 Circulo.TodoEnUno 3 15 10 Double r:2 4 12 T=new TodoEnUno 5 13 circulo 6 1 5 Params.circulo 7 6 Doublearea 8 area=Math.PI*cuadrado(r) 9 10.-Se crea el registro de activación método cuadrado 11.-Se crea la variable r ra 12. a la variable ra asigna la elevación al cuadrado se multiplica por la variable rad 13.-se retorna el valor de ra 14.-manda a imprimir la variable área 15.-terniana la ejecución de “circulo” y se elimina el registro de activación. TodoEnUno.cuadrado 10 doublera 11 ra=Math.pow(rad,2) 12
30. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 Params.main 1 4 7 12.56 14 8 Todo en uno 2 9 14 Circulo.TodoEnUno 3 15 15 10 Double r:2 4 12 T=new TodoEnUno 5 13 16 circulo 6 1 5 Params.circulo 7 6 Doublearea 8 area=Math.PI*cuadrado(r) 9 10.-Se crea el registro de activación método cuadrado 11.-Se crea la variable r ra 12. a la variable ra asigna la elevación al cuadrado se multiplica por la variable rad 13.-se retorna el valor de ra 14.-manda a imprimir la variable área 15.-terniana la ejecución de “circulo” y se elimina el registro de activación. 16.- termina la ejecución de “cuadrado” y se elimina el registro de activación. TodoEnUno.cuadrado 10 16 doublera 11 ra=Math.pow(rad,2) 12
31. Stack import jeliot.io.*; publicclassTodoEnUno { staticdouble r=2; publicstaticvoid Circulo(){ doublearea; area=Math.PI*cuadrado(r); System.out.println("El area del circulo es = "+area); } publicstaticdouble cuadrado(double rad){ doublera; ra=Math.pow(rad,2); returnra; } publicstaticvoidmain(String[]args){ TodoEnUno t=new TodoEnUno(); t.Circulo(); } } Expresiones 2 17 Params.main 1 4 7 12.56 8 14 Todo en uno 2 9 14 Circulo.TodoEnUno 3 15 10 Double r:2 4 12 T=new TodoEnUno 5 13 circulo 6 1 5 Params.circulo 7 6 17 Doublearea 8 10.-Se crea el registro de activación método cuadrado 11.-Se crea la variable r ra 12. a la variable ra asigna la elevación al cuadrado se multiplica por la variable rad 13.-se retorna el valor de ra 14.-manda a imprimir la variable área 15.-terniana la ejecución de “circulo” y se elimina el registro de activación. 16.- termina la ejecución de “cuadrado” y se elimina el registro de activación. 17.-termina la ejecucion de “main”,se elimina su registro de activacion y termina elprograma area=Math.PI*cuadrado(r) 9 TodoEnUno.cuadrado 10 16 doublera 11 ra=Math.pow(rad,2) 12