• Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán como parámetros para dibujar el triangulo rectángulo. (Terminar de dibujar el triangulo rectángulo) Considerando la base y la altura del triangulo rectángulo, se puede calcular el área del triángulo y la formula es la siguiente: Calculo del área. En todo triángulo, se verifica que el área esta dada por el semiproducto de la base por la altura del triangulo. Esta formula del área es muy familiar y sencilla de aplicar, y puede usarse en triángulos rectángulos en función de sus catetos adyacentes al ángulo recto, pues uno de ellos se toma como base y el otro como altura. El método deberá retornar el valor calculado (área). Entonces, debemos implementar un método que devuelve valor en la clase RobotRecolector. Considerando el formato de definición de un Método <tipo-de-valor-devuelto> <nombre-método> (<lista-parámetros>){ <sentencias-del-cuerpo-del-método> } Vamos a analizar nuestro método: En <tipo-de-valor-devuelto> definimos el tipo de valor1 que queremos que nuestro método devuelva, en este caso int (tipo entero), en <nombre-método> definimos el nombre del método, en (<lista-parámetros>) definimos dos parámetros (base y altura) de tipo entero y en <sentencias-del-cuerpodel-método> implementamos la formula dada para calcular el área. Una vez que se calcula la fórmula, se tiene que devolver el resultado del mismo al lugar desde donde se invocó al método. Para eso vamos a utilizar la palabra reservada de Java return y la expresión que queremos que devuelva, en este caso return area; Constante: Las constantes en Java son como las variables, pero su valor no se altera durante la ejecución del programa. Se las preceden con el adjetivo final. Por convención, las constantes se escriben en mayúsculas. Ejemplo: final int DIV = 2; Otros ejemplos de constantes: Meses de un año, PI, días de la semana, etc. 1 Cualquier tipo primitivo o tipo referenciado Finalmente en nuestro archivo MiPrograma podemos invocar el método La expresión que se retornó se guarda en la variable área invocar el método Error común de programación: Olvidar devolver un valor de un método que debe devolver un valor es un error de sintaxis. Si se especifica un tipo de valor de retorno que no sea void, el método debe contener una instrucción return que devuelva un valor del tipo de valor de retorno del método. De manera similar, devolver un valor de un método cuyo tipo de valor de retorno se haya declarado void es un error de sintaxis. Importante considerar: hay tres formas de devolver el control al punto en el que se invocó un método. Si el método no devuelve un resultado, el control se devuelve simplemente cuando se llega a la llave derecha ( } ) que termina el método, o al ejecutar el enunciado: return; Si el método devuelve un resultado, el enunciado: return expresión; devuelve el valor de expresión. Sobrecarga de Métodos Lenguajes como Java permiten que existan distintos métodos con el mismo nombre siempre y cuando estos métodos tengan distintos conjuntos de parámetros (los cuales se determinan mediante el número y los tipos de los parámetros). Esta técnica se conoce como sobrecarga de métodos. La sobrecarga de métodos se utiliza comúnmente para crear varios métodos con el mismo nombre que realizan tareas similares, pero con tipos de datos distintos. Ejemplo: sobrecarga de métodos En el primer método no se especifica la cantidad de conos a quitar, sino que quita conos mientras hayCono. En el segundo método sí se le especifica la cantidad de conos que se va a quitar, (cantConos). Los métodos sobrecargados se distinguen por su firma: La firma es una combinación del nombre del método, el número y tipo de sus parámetros. Si el compilador de Java analizara solamente los nombres de los métodos durante la compilación, el código que se describe en el ejemplo anterior sería ambiguo; el compilador no sabría cómo distinguir entre los dos métodos quitarConos. El compilador utiliza nombres más largos “deformados” o “decorados”, que incluyen el nombre original del método, los tipos de cada parámetro y el orden exacto de los parámetros, para determinar si los métodos en una clase son únicos en esa clase. De todas formas no es conviene abusar demasiado de esta prestación del lenguaje, porque resulta propensa a errores (en ocasiones, creeremos estar llamando a una versión de un método cuando la que se ejecuta en realidad es otra). Nota: En la creación de constructores sí es importante disponer de esta característica (esto lo vamos a ver más adelante) Resumen La mejor manera de desarrollar y mantener un programa extenso es dividirlo en varios módulos pequeños. En Java los módulos se escriben como clase y métodos Definir un método dentro de otro método es un error de sintaxis En general, un método no debe ocupar más de una página. Los métodos deben realizar una sola tarea bien definida. Los programas deben escribirse como colecciones de métodos pequeños. Esto facilita la escritura, depuración, mantenimiento y modificación de los programas. Cuestión de estilo Escribimos código para que lo puedan leer otras personas, no sólo para que lo traduzca el compilador. Identificadores Los identificadores deben ser descriptivos, deben dar una idea clara de lo que representan o simbolizan. Por ejemplo: p, i, s... NO; precio, izquierda, suma... SI En ocasiones, se permite el uso de nombres cortos para variables locales cuyo significado es evidente. Se considera inapropiado incluir literales de tipo numérico (números mágicos) en el medio del código. Se prefiere la definición de variables o constantes simbólicas. Comentarios: Comentarios descriptivos: Los comentarios deben comunicar algo. Jamás se utilizarán para “frasear” el código y repetir lo que es obvio. El código bien escrito es más fácil de leer, entender y mantener (además, seguramente tiene menos errores)