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.

Cargado por

William Quimbayo
Derechos de autor
© © All Rights Reserved
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% 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.

Cargado por

William Quimbayo
Derechos de autor
© © All Rights Reserved
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.

También podría gustarte