Este documento habla sobre las clases y métodos abstractos en Java. Explica que una clase abstracta es aquella que no puede ser instanciada directamente, sino que sirve como superclase para otras subclases concretas. También define los métodos abstractos como aquellos que no tienen cuerpo y deben ser implementados en las subclases. Finalmente, detalla algunas características y usos de las clases y métodos abstractos en Java.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0%(1)0% encontró este documento útil (1 voto)
203 vistas
Clases y Métodos Abstractos en Java
Este documento habla sobre las clases y métodos abstractos en Java. Explica que una clase abstracta es aquella que no puede ser instanciada directamente, sino que sirve como superclase para otras subclases concretas. También define los métodos abstractos como aquellos que no tienen cuerpo y deben ser implementados en las subclases. Finalmente, detalla algunas características y usos de las clases y métodos abstractos en Java.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 20
CLASES Y MTODOS ABSTRACTOS EN JAVA.
Supongamos un esquema de herencia que consta de la clase Profesor de la que
heredan ProfesorInterino y ProfesorTitular. Es posible que todo profesor haya de ser o bien ProfesorInterino o bien ProfesorTitular, es decir, que no vayan a existir instancias de la clase Profesor. Entonces, qu sentido tendra tener una clase Profesor?
El sentido est en que una superclase permite unificar campos y mtodos de las subclases, evitando la repeticin de cdigo y unificando procesos. Ahora bien, una clase de la que no se tiene intencin de crear objetos, sino que nicamente sirve para unificar datos u operaciones de subclases, puede declararse de forma especial en Java: como clase abstracta. La declaracin de que una clase es abstracta se hace con la sintaxis public abstract class NombreDeLaClase { }. Por ejemplo public abstract class Profesor. Cuando utilizamos esta sintaxis, no resulta posible instanciar la clase, es decir, no resulta posible crear objetos de ese tipo. Sin embargo, sigue funcionando como superclase de forma similar a como lo hara una superclase normal. La diferencia principal radica en que no se pueden crear objetos de esta clase. Declarar una clase abstracta es distinto a tener una clase de la que no se crean objetos. En una clase abstracta, no existe la posibilidad. En una clase normal, existe la posibilidad de crearlos aunque no lo hagamos. El hecho de que no creemos instancias de una clase no es suficiente para que Java considere que una clase es abstracta. Para lograr esto hemos de declarar explcitamente la clase como abstracta mediante la sintaxis que hemos indicado. Si una clase no se declara usando abstract se cataloga como clase concreta. En ingls abstract significa resumen, por eso en algunos textos en castellano a las clases abstractas se les llama resmenes. Una clase abstracta para Java es una clase de la que nunca se van a crear instancias: simplemente va a servir como superclase a otras clases. No se puede usar la palabra clave new aplicada a clases abstractas. En el men contextual de la clase en BlueJ simplemente no aparece, y si intentamos crear objetos en el cdigo nos saltar un error. A su vez, las clases abstractas suelen contener mtodos abstractos: la situacin es la misma. Para que un mtodo se considere abstracto ha de incluir en su signatura la palabra clave abstract. Adems un mtodo abstracto tiene estas peculiaridades: a) No tiene cuerpo (llaves): slo consta de signatura con parntesis. b) Su signatura termina con un punto y coma. c) Slo puede existir dentro de una clase abstracta. De esta forma se evita que haya mtodos que no se puedan ejecutar dentro de clases concretas. Visto de otra manera, si una clase incluye un mtodo abstracto, forzosamente la clase ser una clase abstracta. d) Los mtodos abstractos forzosamente habrn de estar sobreescritos en las subclases. Si una subclase no implementa un mtodo abstracto de la superclase tiene un mtodo no ejecutable, lo que la fuerza a ser una subclase abstracta. Para que la subclase sea concreta habr de implementar mtodos sobreescritos para todos los mtodos abstractos de sus superclases.
Un mtodo abstracto para Java es un mtodo que nunca va a ser ejecutado porque no tiene cuerpo. Simplemente, un mtodo abstracto referencia a otros mtodos de las subclases. Qu utilidad tiene un mtodo abstracto? Podemos ver un mtodo abstracto como una palanca que fuerza dos cosas: la primera, que no se puedan crear objetos de una clase. La segunda, que todas las subclases sobreescriban el mtodo declarado como abstracto.
Sintaxis tipo: abstract public/private/protected TipodeRetorno/void ( parmetros ); Por ejemplo: abstract public void generarNomina (int diasCotizados, boolean plusAntiguedad);
Que un mtodo sea abstracto tiene otra implicacin adicional: que podamos invocar el mtodo abstracto sobre una variable de la superclase que apunta a un objeto de una subclase de modo que el mtodo que se ejecute sea el correspondiente al tipo dinmico de la variable. En cierta manera, podramos verlo como un mtodo sobreescrito para que Java comprenda que debe buscar dinmicamente el mtodo adecuado segn la subclase a la que apunte la variable.
Es necesario que una clase que tiene uno o ms mtodos abstractos se defina como abstracta? S, si declaramos un mtodo abstracto el compilador nos obliga a declarar la clase como abstracta porque si no lo hiciramos as tendramos un mtodo de una clase concreta no ejecutable, y eso no es admitido por Java.
Una clase se puede declarar como abstracta y no contener mtodos abstractos? S, una clase puede ser declarada como abstracta y no contener mtodos abstractos. En algunos casos la clase abstracta simplemente sirve para efectuar operaciones comunes a subclases sin necesidad de mtodos abstractos. En otros casos s se usarn los mtodos abstractos para referenciar operaciones en la clase abstracta al contenido de la sobreescritura en las subclases.
Una clase que hereda de una clase abstracta puede ser no abstracta? S, de hecho esta es una de las razones de ser de las clases abstractas. Una clase abstracta no puede ser instanciada, pero pueden crearse subclases concretas sobre la base de una clase abstracta, y crear instancias de estas subclases. Para ello hay que heredar de la clase abstracta y anular los mtodos abstractos, es decir, implementarlos.
Sentencia switch Operador if-else Vamos a desarrollar una calculadora totalmente elemental. Sin muchas caractersticas salvo de realizar operaciones aritmticas con dos operandos. Disponemos de una variable de tipo char que nos indicar que tipo de operacin se debe efectuar. Realizamos la operacin y mostramos el resultado en la pantalla. Despus de luchar con las sentencias if-else nos qued algo parecido a esto: public class MiniCalculadora { public static void main(String args[]){ int a = 1; int b = 1; char op = '/'; System.out.print("El resultado es : "); if ( op == '+' ) { System.out.println( a + b); } else if ( op == '-') { System.out.println( a - b); } else if ( op == '*') { System.out.println( a * b); } else if ( op == '/') { System.out.println( a / b); } } }
entencia do-while Sentencia for La sentencia de iteracin do-while es de tipo posprueba. Primero realiza las acciones luego pregunta. La sintaxis es la siguiente: do sentencia while ( condicin ); Observamos que es como un while pero al revs. Primeramente se ejecuta la sentencia y luego evala la condicin. Si la expresin de la condicin es verdadera vuelve a dar un ciclo. De lo contrario, termina. Esto nos garantiza que la sentencia se ejecute al menos una vez. Curiosidades Java: Break y Continue 11 ABRIL 2009 tags: break, continue, Java Las palabras reservadas break y continue, se utilizan en Java para detener completamente un bucle (break) o detener nicamente la iteracin actual y saltar a la siguiente (continue). Normalmente si usamos break o continue, lo haremos dentro de una sentencia if, que indicar cundo debemos detener el bucle al cumplirse o no una determinada condicin. La gran diferencia entre ambos es que, break, detiene la ejecucin del bucle y salta a la primera lnea del programa tras el bucle y continue, detiene la iteracin actual y pasa a la siguiente iteracin del bucle sin salir de l (a menos, que el propio bucle haya llegado al lmite de sus iteraciones). NOTA: La sentencia continue debe estar siempre incluida dentro de un bucle, sino recibiris un error de compilacin. Mientras que la sentencia break, podemos encontrarla dentro de un bucle o en una sentencia switch. (Aunque esta regla no la aplicamos a los break con etiqueta, ahora lo veremos) La sentencia continue provoca que nicamente la iteracin actual del bucle ms interno detenga su ejecucin y que comience inmediatamente la siguiente iteracin si el bucle todava no ha terminado. Por ejemplo: for (int i = 0; i < 10; i++) { System.out.println("Dentro del bucle"); continue; System.out.println("Nunca lo escribira"); } Gestin de Excepciones
Excepciones. Categoras. Las excepciones son el mecanismo por el cual pueden controlarse en un programa Java las condiciones de error que se producen. Estas condiciones de error pueden ser errores en la lgica del programa como un ndice de un array fuera de su rango, una divisin por cero o errores disparados por los propios objetos que denuncian algn tipo de estado no previsto, o condicin que no pueden manejar. La idea general es que cuando un objeto encuentra una condicin que no sabe manejar crea y dispara una excepcin que deber ser capturada por el que le llam o por alguien ms arriba en la pila de llamadas. Las excepciones son objetos que contienen informacin del error que se ha producido y que heredan de la clase Throwable o de la clase Exception. Si nadie captura la excepcin interviene un manejador por defecto que normalmente imprime informacin que ayuda a encontrar quin produjo la excepcin. Existen dos categoras de excepciones: Excepciones verificadas: El compilador obliga a verificarlas. Son todas las que son lanzadas explicitamente por objetos de usuario. Excepciones no verificadas: El compilador no obliga a su verificacin. Son excepciones como divisiones por cero, excepciones de puntero nulo, o ndices fuera de rango. Generacin de excepciones Supongamos que tenemos una clase Empresa que tiene un array de objetos Empleado (clase vista en captulos anteriores). En esta clase podramos tener mtodos para contratar un Empleado (aadir un nuevo objeto al array), despedirlo (quilarlo del array) u obtener el nombre a partir del nmero de empleado. La clase podra ser algo as como lo siguiente: public class Empresa { String nombre; Empleado [] listaEmpleados; int totalEmpleados = 0; . . . Empresa(String n, int maxEmp) { nombre = n; listaEmpleados = new Empleado [maxEmp]; } . . . void nuevoEmpleado(String nombre, int sueldo) { if (totalEmpleados < listaEmpleados.length ) { listaEmpleados[totalEmpleados++] = new Empleado(nombre,sueldo); } } } Observese en el mtodo nuevoEmpleado que se comprueba que hay sitio en el array para almacenar la referencia al nuevo empleado. Si lo hay se crea el objeto. Pero si no lo hay el mtodo no hace nada ms. No da ninguna indicacin de si la operacin ha tenido xito o no. Se podra hacer una modificacin para que, por ejemplo el mtodo devolviera un valor booleano true si la operacin se ha completado con xito y false si ha habido algn problema. Otra posibilidad es generar una excepcin verificada (Una excepcin no verificada se producira si no se comprobara si el nuevo empleado va a caber o no en el array). Vamos a ver como se hara esto. Las excepciones son clases, que heredan de la clase genrica Exception. Es necesario por tanto asignar un nombre a nuestra excepcin. Se suelen asignar nombres que den alguna idea del tipo de error que controlan. En nuestro ejemplo le vamos a llamar CapacidadEmpresaExcedida. Para que un mtodo lance una excepcin: Debe declarar el tipo de excepcin que lanza con la clusula throws, en su declaracin. Debe lanzar la excepcin, en el punto del cdigo adecuado con la sentencia throw. En nuestro ejemplo: void nuevoEmpleado(String nombre, int sueldo) throws CapacidadEmpresaExcedida { if (totalEmpleados < listaEmpleados.length) { listaEmpleados[totalEmpleados++] = new Empleado(nombre,sueldo); } else throw new CapacidadEmpresaExcedida(nombre); } Adems, necesitamos escribir la clase CapacidadEmpresaExcedida. Sera algo as: public class CapacidadEmpresaExcedida extends Exception { CapacidadEmpresaExcedida(String nombre) { super("No es posible aadir el empleado " + nombre); } . . . } La sentencia throw crea un objeto de la clase CapacidadEmpresaExcedida . El constructor tiene un argumento (el nombre del empleado). El constructor simplemente llama al constructor de la superclase pasndole como argumento un texto explicativo del error ( y el nombre del empleado que no se ha podido aadir). La clase de la excepcin puede declarar otros mtodos o guardar datos de depuracin que se consideren oportunos. El nico requisito es que extienda la clase Exception. Consultar la documentacin del API para ver una descripcin completa de la clase Exception. De esta forma se pueden construir mtodos que generen excepciones. Captura de excepciones Con la primera versin del mtodo nuevoEmpleado (sin excepcin) se invocara este mtodo de la siguiente forma: Empresa em = new Empresa("La Mundial"); em.nuevoEmpleado("Adn Primero",500); Si se utilizara este formato en el segundo caso (con excepcin) el compilador producira un error indicando que no se ha capturado la excepcin verificada lanzada por el mtodo nuevoEmpleado. Para capturar la excepcin es utiliza la construccin try / catch, de la siguiente forma: Empresa em = new Empresa("La Mundial"); try { em.nuevoEmpleado("Adn Primero",500); } catch (CapacidadEmpresaExcedida exc) { System.out.println(exc.toString()); System.exit(1); } Se encierra el cdigo que puede lanzar la excepcin en un bloque try / catch. A continuacin del catch se indica que tipo de excepcin se va a capturar. Despus del catch se escribe el cdigo que se ejecutar si se lanza la excepcin. Si no se lanza la excepcin el bloque catch no se ejecuta. El formato general del bloque try / catch es: try { . . . } catch (Clase_Excepcion nombre) { . . .} catch (Clase_Excepcion nombre) { . . .} . . . Observese que se puede capturar ms de un tipo de excepcin declarando ms de una sentencia catch. Tambin se puede capturar una excepcin genrica (clase Exception) que engloba a todas las dems. En ocasiones el cdigo que llama a un mtodo que dispara una excepcin tampoco puede (o sabe) manejar esa excepcin. Si no sabe que hacer con ella puede de nuevo lanzarla hacia arriba en la pila de llamada para que la gestione quien le llamo (que a su vez puede capturarla o reenviarla). Cuando un mtodo no tiene intencin de capturar la excepcin debe declararla metdiante la clusula throws, tal como hemos visto en el mtodo que genera la excepcin. Supongamos que, en nuestro ejemplo es el mtodo main de una clase el que invoca el mtodo nuevoEmpleado. Si no quiere capturar la excepcin debe hacer lo siguiente: public static void main(String [] args) throws CapacidadEmpresaExcedida { Empresa em = new Empresa("La Mundial"); em.nuevoEmpleado("Adn Primero",500); } Clusula finally La clusula finally forma parte del bloque try / catch y sirve para especificar un bloque de cdigo que se ejecutar tanto si se lanza la excepcin como si no. Puede servir para limpieza del estado interno de los objetos afectados o para liberar recursos externos (descriptores de fichero, por ejemplo). La sintaxis global del bloque try / catch / finally es: try { . . . } catch (Clase_Excepcion nombre) { . . .} catch (Clase_Excepcion nombre) { . . .} . . . finally { . . .} Ejemplo de Swich Case en JAVA public class SwitchDate {
public int month = 10; public void calculateNumDays() {
switch(month) { // Eleige la opcion acorde al numero de mes case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println("Hay 31 dias en este mes."); break; // El break corta la ejecucion y no evalua las siguientes case 2: System.out.println("THay 28 dias en este mes"); break; case 4: case 6: case 9: case 11: System.out.println("Este mes tiene 30 dias"); break; default: // El default es para cuando no se ejecuto ninguna de las otras opciones System.out.println("El mes no existe"); break; } } 31. }
TIPOS DE DATOS (VARIABLES) EN JAVA. Los primeros lenguajes de programacin no usaban objetos, solo variables. Una variable podramos decir que es un espacio de la memoria del ordenador a la que asignamos un contenido que puede ser un valor numrico (slo nmeros, con su valor de clculo) o de tipo carcter o cadena de caracteres (valor alfanumrico que constar slo de texto o de texto mezclado con nmeros).
Como ejemplo podemos definir una variable a que contenga 32 y esto lo escribimos como a = 32. Posteriormente podemos cambiar el valor de a y hacer a = 78. O hacer a equivalente al valor de otra variable b as: a = b. Dado que antes hemos dicho que un objeto tambin ocupa un espacio de memoria: en qu se parecen y en qu se diferencia un objeto de una variable? Consideraremos que las variables son entidades elementales: un nmero, un carcter, un valor verdadero o falso mientras que los objetos son entidades complejas que pueden estar formadas por la agrupacin de muchas variables y mtodos. Pero ambas cosas ocupan lo mismo: un espacio de memoria (que puede ser ms o menos grande). En los programas en Java puede ser necesario tanto el uso de datos elementales como de datos complejos. Por eso en Java se usa el trmino Tipos de datos para englobar a cualquier cosa que ocupa un espacio de memoria y que puede ir tomando distintos valores o caractersticas durante la ejecucin del programa. Es decir, en vez de hablar de tipos de variables o de tipos de objetos, hablaremos simplemente de tipos de datos. Sin embargo, a veces coloquialmente no se utiliza la terminologa de forma estricta: puedes encontrarte textos o pginas web donde se habla de una variable en alusin a un objeto. En Java diferenciamos dos tipos de datos: por un lado, los tipos primitivos, que se corresponden con los tipos de variables en lenguajes como C y que son los datos elementales que hemos citado. Por otro lado, los tipos objeto (que normalmente incluyen mtodos). Veamos los tipos de datos en Java sobre un esquema de sntesis:
Esquema de sntesis de tipos de datos en Java
Este esquema no es necesario aprendrselo de memoria en todos sus detalles, aunque s lo iremos memorizando poco a poco a medida que lo utilicemos, por lo menos hasta tener en nuestra cabeza los nombres de todos los tipos primitivos y envoltorio y sus caractersticas (si son objetos o no y su rango aproximado). A continuacin mostramos el mismo esquema en formato de tabla: TIPOS DE DATOS EN JAVA
NOMBRE TIPO OCUPA RANGO APROXIMADO TIPOS PRIMITIVOS (sin mtodos; no son objetos; no necesitan una invocacin para ser creados) byte Entero 1 byte -128 a 127 short Entero 2 bytes -32768 a 32767 int Entero 4 bytes 2*10 9
long Entero 8 bytes Muy grande float Decimal simple 4 bytes Muy grande double Decimal doble 8 bytes Muy grande char Carcter simple 2 bytes --- boolean Valor true o false 1 byte ---
TIPOS OBJETO (con mtodos, necesitan una invocacin para ser Tipos de la biblioteca estndar de Java String (cadenas de texto) Muchos otros (p.ej. Scanner, TreeSet, ArrayList) creados) Tipos definidos por el programador / usuario Cualquiera que se nos ocurra, por ejemplo Taxi, Autobus, Tranvia arrays Serie de elementos o formacin tipo vector o matriz. Lo consideraremos un objeto especial que carece de mtodos. Tipos envoltorio o wrapper (Equivalentes a los tipos primitivos pero como objetos.) Byte Short Integer Long Float Double Character Boolean
Vamos a comentar distintas cuestiones: 1. Un objeto es una cosa distinta a un tipo primitivo, aunque porten la misma informacin. Tener siempre presente que los objetos en Java tienen un tipo de tratamiento y los tipos primitivos, otro. Que en un momento dado contengan la misma informacin no significa en ningn caso que sean lo mismo. Iremos viendo las diferencias entre ambos poco a poco. De momento, recuerda que el tipo primitivo es algo elemental y el objeto algo complejo. Supn una cesta de manzanas en la calle: algo elemental. Supn una cesta de manzanas dentro de una nave espacial (considerando el conjunto nave + cesta): algo complejo. La informacin que portan puede ser la misma, pero no son lo mismo. 2. Para qu tener esa aparente duplicidad entre tipos primitivos y tipos envoltorio? Esto es una cuestin que atae a la concepcin del lenguaje de programacin. Tener en cuenta una cosa: un tipo primitivo es un dato elemental y carece de mtodos, mientras que un objeto es una entidad compleja y dispone de mtodos. Por otro lado, de acuerdo con la especificacin de Java, es posible que necesitemos utilizar dentro de un programa un objeto que porte como contenido un nmero entero. Desde el momento en que sea necesario un objeto habremos de pensar en un envoltorio, por ejemplo Integer. Inicialmente nos puede costar un poco distinguir cundo usar un tipo primitivo y cundo un envoltorio en situaciones en las que ambos sean vlidos. Seguiremos esta regla: usaremos por norma general tipos primitivos. Cuando para la estructura de datos o el proceso a realizar sea necesario un objeto, usaremos un envoltorio. 3. Los nombres de tipos primitivos y envoltorio se parecen mucho. En realidad, excepto entre int e Integer y char y Character, la diferencia se limita a que en un caso la inicial es minscula (por ejemplo double) y en el otro es mayscula (Double). Esa similitud puede confundirnos inicialmente, pero hemos de tener muy claro qu es cada tipo y cundo utilizar cada tipo. 4. Una cadena de caracteres es un objeto. El tipo String en Java nos permite crear objetos que contienen texto (palabras, frases, etc.). El texto debe ir siempre entre comillas. Muchas veces se cree errneamente que el tipo String es un tipo primitivo por analoga con otros lenguajes donde String funciona como una variable elemental. En Java no es as. 5. Hay distintos tipos primitivos enteros. Cul usar? Por norma general usaremos el tipo int. Para casos en los que el entero pueda ser muy grande usaremos el tipo long. Los tipos byte y short los usaremos cuando tengamos un mayor dominio del lenguaje. 6. Cuntos tipos de la biblioteca estndar de Java hay? Cientos o miles. Es imposible conocerlos todos. 7. Un array es un objeto? Los arrays los consideraremos objetos especiales, los nicos objetos en Java que carecen de mtodos.
Concepto de array: serie de elementos, cada uno de los cuales lleva asociado un ndice numrico 0, 1, 2, 3, , n-1 MTODOS PROCEDIMIENTO (VOID) Y FUNCIN (RETURN) Volvamos sobre los objetos taxi creados y que deben aparecer en el banco de objetos en la parte inferior izquierda de la pantalla del entorno de desarrollo. Si pulsamos con botn derecho del ratn sobre ellos se nos despliegan los mtodos (operaciones) disponibles para cada objeto.
Pulsa sobre el taxi1 y elige la opcin String getDistrito.
La ejecucin de un mtodo se denomina habitualmente invocacin del mtodo o llamada al mtodo. Los mtodos disponibles los define la clase, pero se invocan sobre cada objeto en particular. Al invocar el mtodo getDistrito() se nos abre una ventana de BlueJ denominada Method Result donde nos indica: returned String Desconocido. Le hemos pedido al objeto que nos diga cul es su distrito y nos devuelve Desconocido. La razn para ello es que en el constructor de la clase incluimos una lnea de inicializacin de distrito para todo objeto de tipo Taxi con el valor Desconocido. Si en vez de ese valor hubisemos establecido otro, ese sera el que ahora obtendramos. Cierra esa ventana y repite el proceso eligiendo ahora la opcin void setDistrito (String valorDistrito). En el recuadro donde solicita el distrito escribe Oeste. No olvides incluir las comillas obligadas por tratarse de un String. Seguidamente, vuelve a invocar el mtodo getDistrito y comprueba el resultado obtenido.
Los mtodos que hemos definido en la clase Taxi podemos clasificarlos de la siguiente manera: a) Mtodos tipo funcin: son mtodos que nos devuelven algo. Un mtodo es tipo funcin si comienza con un tipo (no consideramos ahora la palabra clave public). Por ejemplo String getDistrito() comienza con el tipo String lo que significa que nos devuelve una cadena de caracteres, mientras que int getTipoMotor() comienza con el tipo int lo que significa que nos devuelve un entero. Tener en cuenta que un mtodo tipo funcin devuelve solo un dato u objeto como resultado, no varios. La devolucin del resultado se expresa con la palabra clave return seguida del dato u objeto a devolver, por ejemplo return tipoMotor;. La sentencia return implica que termina la ejecucin del cdigo en el mtodo y estar tpicamente en la lnea final. De existir una lnea por detrs de una sentencia return, nunca llegara a ejecutarse (tendremos que matizar esto porque el uso de condicionales nos permitir tener ms de un return en un mtodo). De forma genrica: /* Ejemplo - aprenderaprogramar.com */ //Comentario descriptivo de qu hace el mtodo public tipoValorDevuelto nombreDelMtodo (tipo parmetro1, tipo parmetro2) { Cdigo del mtodo return ResultadoQueDevuelveElMtodo; }
b) Mtodos tipo procedimiento: son mtodos que realizan ciertas operaciones sin devolver un valor u objeto concreto. Un mtodo es tipo procedimiento si comienza con la palabra clave void (que traducido del ingls viene siendo vaco o nulo). En estos casos podemos decir que el tipo de retorno es void. De forma genrica: /* Ejemplo - aprenderaprogramar.com */ //Comentario descriptivo de qu hace el mtodo public void nombreDelMtodo (tipo parmetro1, tipo parmetro2) { Cdigo del mtodo }
En general un mtodo con tipo de retorno void no llevar sentencia return, aunque en Java se permite que un mtodo de este tipo incluya la sentencia return;. Si ocurre esto, la sentencia da lugar a que el mtodo finalice en ese punto sin ejecutar ninguna lnea ms de cdigo. Solo tiene sentido su uso asociado a que se cumplan ciertas condiciones.
Puede un mtodo ser al mismo tiempo funcin y procedimiento? Formalmente debemos evitarlo. Podramos tratar de agrupar operaciones, pero es una situacin que trataremos de evitar. Nos plantearemos como objetivo que todo mtodo tipo funcin se centre en devolvernos aquello que nos interesa sin realizar otros procesos. Igualmente buscaremos que todo procedimiento realice un proceso concreto y no varios. Cada mtodo debe realizar una tarea concreta, especfica y bien definida. Un mtodo no debe ocuparse de dos tareas.
Sentencia continue Funciones
La sentencia de continue es de tipo de control de bucles. Dentro de la iteracion en un bucle, de cualquiera de los tipos (while, do-while, for), el uso de esta sentencia rompe la iteracion de dicho bucle. Provocando que se ejecute la siguiente iteracion de dicho bucle, ignorando las sentencias posteriores a "continue" for(int j = 0; j<10; j++){ sentencia 1; sentencia 2; sentencia 3; continue; sentencia 4; }; Este bucle se ejecuta 10 veces, pero con la salvedad de que la sentencia 4 no se ejecuta ninguna vez. Es decir, se ejecutan las sentencias 1, 2 y 3 y cuando se llega a la sentencia de control continue se vuelve de nuevo a comprobar la condicion del for y en caso de cumplirse de nuevo a la sentencia 1 y as sucesivamente.