IMPLEMENTACION DE METODOS Consiste en la declaracion y el cuerpo del metodo. Declaracionmetodo { cuerpometodo } LA DECLARACION DE METODO Proporciona mucha información sobre el metodo al complilador, al sistema en tiempo de ejecución y a otras clases y objetos. Junto con el nombre del metodo, la declaracion lleva información como el tipo de retorno del metodo, el numero y el tipo de los argumentos necesarios, y que otras clases y objetos pueden llamar al metodo. Los unicos elementos necesaios son el nombre y el tipo de retorno del metodo. Ejemplo, el codigo siguiente declara un metodos que se llama estaVacio() en la clase Pila que devuelve un valor booleano (true o false): Class Pila { Boolean estaVacio () { } } Devolver un valor desde un metodo Java necesita que un metodo declare el tipo de dato del valor que devuelve. Si no devuelve ningun valor, tiene que ser declarado como void(nulo). Los metodos pueden devolver tipos de datos primitivos o tipos de datos de referencia. El metodo estaVacio() de la clasePila devulve un tipo de dato primitivo, un valor booleano: Class Pila { Static final int PILA_= -1; Object[] stackelemts; Int topelement = PILA_VACIA; Boolean estaVacio() { Static final int PILA_VACIA = -1; Object [] stackelements; Int topelement= PILA_VACIA; Object pop() { If (topelement==PILA_VACIA) Return null; Else { Return stackelemnts [topelement--]; } } } Los metodos usan el operador return para devolver un valor.Todo metodo que no sea declarado como void tien que contener una sentencia return. El tipo de dato del valor devuelto por la sentencia return debe corresponder con el tipo de dato que el metodo tiene que devolver, no se puede devolver un objeto desde un metodo que fue declarado para devolver un entero. UN NOMBRE DE UN METODO Puede ser cualquier identificador legal en Java. Hay tres casos especiales a para tener en cuenta con los nombres de métodos: Java soporta la sobrecarga de métodos, o sea varios metodos pueden compartir el mismo nombre. Ej, se escribió una clase qu epuede proporcionar varios tipos de datos (cadenas, enteros, etc..) en un área de dibujo. Se podria escribir un metodo que sepa como trata a cada dato. Se puede poner el mismo nombre pasandole un tipo de parámetro diferente a cada uno de los metodos. Entonces en la clase dibujo, se podran declarar tres metodos que se llamen draw<() y que cada uno aceptara un tipo de parámetro diferente: Class DibujoDatos{ Viod Dra. (String s) { } void draw. (int i) { } Void Dra. (flota f) { } } 1_Los metodos son diferenciados por el numero y tipo de sus argumentos. Asi Dra. (String s) y Dra. (int i) son metodos distintos y unicos. No se puede declarar un metodo con la misma firma Dra. (String s) y Dra. (String t) son identicos y daran un error del compilador. 2_todo metodo el cual el nombre sea igual que el de su clase es un contructor. Los constructores se usan para inicializar un objeto nuevo del tipo de la clase. Solo pueden ser llamados con el operador new. 3_ una clase puede sobrescribir un metodo de sus superclases. El metodo que sobrescribe tiene que tener el mismo nombre, tipo de retorno y lista de parámetros que el metodo al que sobreesbribio. PASAR INFORMACION A UN METODO Cuando se escribe un metodos, se declara el número y tipo de los argumentos requeridos por ese metodos. Esto se hace en la firma de un metodo.Ej este metodo calcula el pago mensual de una hipoteca basandose en la cantidad prestada, el interes, la duracion de la hipoteca (nro de meses) y e l valor futuro de la hipoteca (presumiblemente el valor futuro sea cero, porque al final la hipoteca ya la vas a haber pagado) Este metodo toma cuatro argumentos, catidad prestada, interes, valor futuro y numero de meses, Los tres primeros son numeros de coma flotante de doble precision y el cuarto es un entero. Igual que este metodo, el conjunto de argumentos de cualquier metodo es una lista de declaraciones de variables delimitadas por comas donde cada declaración de variable es un par tipo/nombre: tipo nombre Solamente hay que usar el nombre del argumento para referirse al valor del argumento. TIPOS DE ARGUMENTOS Puede ser cualquier tipo asi sea primitivo, enteros, dobre, etc.. y tipos de referencia como arrays, objetos, etc.. Ejemplo Un constructor acepa un array como argumento. El constructor inicializa un objeto Polygon a partir de una lista de puntos (Point es una clase del paquete java.awt que representa una coordenada xy): Polygon polygonFrom (Point [] listadePuntos) { } NOMBRE DE ARGUMENTOS Puede tener el mismo nombre que una variable de la clase. En este caso, se dice que el argumento oculta a la variable miembro. Normalmente los argumentos que ocultan una variable miembro se usan en los constructores para inicializar una clase. Ejemplo: La clase Circle y su constructor Class Circle { int t x, y, radius; public Circle (int x, int y, int radius) { } } La clase Circle tiene tres variables miembro x, y y radius. Ademas, el constructor de la clase Circle acepta tres argumentos cada uno de los cuales comparte el nombre con la variable miembro para la que el argumento proporciona un valor inicial. Los nombres de los argumetos ocultan los nombres de las variables miembro. Por eso eso usar x, y o radius dentro del cuerpo de la funcion, se refiere a los argumentos, NO a las variables miembro . Para cceder a las variables miembro, hay que refenreciarlas a través de this—el objeto acual. Class Circle { int x, y, radius; public Circle (int x, int y, int radius) { this .x=x; this.y=y; this.radius=radius; } } Los nombres de los argumentos de un método no pueden ser el mismo que el de otros argumentos del mismo método, el nombre de cualquier variable local del método o el nombre de cualquier parametro a una clausula catch () dentro del mismo método. PASO POR VALOR En los métodos Java los argumentos son pasados por valor. Cuando se los llama el método recibe el valor de la variable pasada. Cuado el argumento es de un tipo primitivo, pasar el valor significa que el método no puede cambiar el valor. Cuando es de referencia, pasar por valor significa que no puede modificar el objeto referenciado, pero si invocar a los métodos del objeto y puede cambiar las variables accesibles dentro del objeto. Esta es un serie de sentencias que intentan recuperar el color actual de un objeto Pen en una aplicación grafica: Int r= -1, g=-1, b=-1; Pen.getRGBColor(r,g,b); System.out.print1n(“red=” +r+”, green=”+g+”, blue=”+b); ) En el momento que se llama al método getRGBColor(), las variables r, g y b tienen un valor de -1. El llamador espera que el método getRGBColor() le devuelva los valores de rojo, verde y azul para el color actual en las variables r, g, b. Sin embargo, Java pasa los valores de las variables (-1) al método getRGBColor(); no una referencia a las variables r, g y b. Con esto se podría visualizar la llamada a getRGBColor() de esta forma: getRGBColor(-1, -1, -1). Cuando el control pasa dentro del método getRGBColor(), los argumentos entran dentro del ámbito (se les asigna espacio) y son inicializados a los valores pasados al método: Class Pen { Int valorRojo, valorVerde, valorAzul; Void getRGBColor (int rojo, int verde, int azul){ //rojo, verde y azul fueron creados y sus valores son -1 } } Con esto getRGBColor() obtiene acceso a los valores de r, g y b a traves de sus argumentos rojo, verde y azul. Cualquier cambio que se realice en estas copias locales no van a ser reflejados en las variables originales del llamador. class Pen { int valorRojo, valor Verde, valorAzul; // Este método no trabajará como se espera void getRGBColor (int rojo, int verde, int azul) { rojo=valorRojo; verde=valorVerde; azul=valorAzul; } } Con respecto a “este método no trabajará como se espera: cuando el control llega a la sentencia println(), los argumentos rojo, verde y azul de getGBColor () ya no existen. Por ende las asignaciones que se hicieron adentro del método no van funcionar. En si el paso de las variables por valor le da a los programadores cierta seguridad: los métodos no pueden modificar por accidente una variable que esta fuera de su ámbito. En el método getRGBColor el llamador quiere que el metodo devuelva tres valores a través de sus argumentos, pero un metodos solamente puede devolver un valor a través de su valor de retorno. Para que un método modifique un argumento, tiene que ser un tipo de referencia como un objeto o un array. Una referencia a un objeto es la dirección del objeto a la memoria. Ahora, el argumento en el método se refiere a la misma posición de memoria que el llamador. Para que lo haga hay que escribir class RGBColor{ Public int rojo, verde, azl;; } Ahora podes reescribir getRGBColor() para que acepte un objeto RGBColor como argumento. El método getRGBColor() devulve el color actual de lápiz, en los valores de las variables miembro rojo, verde y azul de su argumento RGBColor: class Pen { int valorRojo, valorVerde, valorAzul; void getRGBColor (RGBColor unColor) { unColor.rojo=valorRojo; unColor.verde=valorVerde; unColor.azul=valorAzul; } } Y por último reescribis la secuencia de llamada: RGB Color penColor=newRGBColor(); Pen.getRGBColor(penColor; System.out.println(“ojo=”+penColor.rojo+”, verde=”+penColor.verde+”, Azul=” + penColor.azul); Las modificaciones realizadas al objeto RGBColor dentro del método getRGBColor() afectan al objeto creado en la secuencia de llamada porque los nombres penColor() (en la secuencia de llamada) y unColor (en el método getRGBColor()) se refieren al mismo objeto. EL CUERPO DEL MÉTODO (Aca el cuerpo del método para los métodos estaVacio() y poner() están en negrita): Además de los elementos normales podes usar this en el cuerpo del método para referirse a los miembros del objeto actual. Esto es el objeto que uno de cuyos miembros esta siendo llamado. También se puede usar super para referirse a los miembros de la superclase que el objeto actual haya ocultado mediante la sobreescritura. THIS (VA TODO EN MINÚSCULA) Este constructor de la clase HSBCOlor inicializa alguna variable miembro de un objeto de acuerdo a los argumentos pasados al constructor. Cada argumento del constructor tiene el mismo nombre que la variable del objeto cuyo valor contiene el argumento. class HSBCoLor { in hue, saturation, brillo; HSBColor (int luminosidad, int saturación, int brillo) { this .luminosidad= luminosidad; this.saturacion= saturación; this.brillo= brillo; } } Se usa this para evitar la ambigüedad entre el argumento luminosidad y la variable miembro luminosidad (y así con el resto de los argumentos). Escribir luminosidad=luminosidad; no tendría sentido. SUPER (SE ESCRIBE TODO EN MINUSCULA) Si el método oculta una de las variables miembro de la superclase, se puede referir ala variable oculta usando super. Si el método sobrescribe uno de de los métodos de la superclase, se puede llamar al método sobreescrito a través de super. Considerando: Y una subclase que oculta unaVariable y sobrescribe unMetodo(): Primero unMetodo() selecciona unaVariable (una declarada en OtraClase que oculta a la declarada en MiClase) a false. Después unMetodo() llama a su método sobrescrito con este sentencia: super.unMetodo(); esto selecciona la versión oculta de unaVariable (la declarada en MiClase)a true. Después unMetodo muestra las dos versiones de unaVariable con diferentes valores: false true VARIABLES LOCALES Dentro del cuerpo de un método se puede declarar mas variables para usarlas dentro del propio método. Esas son las variables locales. Este método declara una variable i y la usa para operar sobre los elementos del array. Después de que este método retorne, i ya no va a existir mas. Esos fueron los conceptos basicos que resumi. Gracias por pasar/comentar/estudiar
Java: resumenes de concepto basicos V (Final)
Datos archivados del Taringa! original
15puntos
4,379visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos: