La clase ExMatricula hereda de Exception y define propiedades y métodos para representar el estado de una excepción lanzada al validar el formato de una matrícula. La clase ExMatriculaValidar lanza instancias de ExMatricula si la matrícula no tiene 8 caracteres o si el primer caracter no es una letra. La clase ExMatriculaPrincipal recoge las excepciones lanzadas y muestra un mensaje explicativo según el estado de la excepción.
Taller de tecnologia. Grado 11-5 Liceo DepartamentalDayana Mendes H
Soy Dayana Mendes y aquí les traigo el taller de tecnologia del grado 11-5 del colegio Liceo Departamental, presentado al Docente Guillermo Mondragon.
Gracias por la atencion :v
Dayana Mendes
Republica Bolivariana de Venezuela
Ministerio del poder popupar para la educación
Instituto Politecnico Universitario Santiago Mariño -
Extension Valencia
Estudiante: Wilfredo E. Nadales H.
Asignatura: Ingenieria Sistemas (47)
C.I.:29946762
La presente cumple con el fin de presentar la actividad sobre los programas estructurados que presenta a través de una presentación
Folder do Instituto Empreendedores Universitários, com algumas informações sobre nosso trabalho, portfólio e alguns depoimentos.
Para mais informações não deixe de entrar em contato pelo e-mail contato@empreendedoresuniversitarios.org ou pelos telefones (41) 4042-0123 ou (41)9888-6801 (horário comercial)
Taller de tecnologia. Grado 11-5 Liceo DepartamentalDayana Mendes H
Soy Dayana Mendes y aquí les traigo el taller de tecnologia del grado 11-5 del colegio Liceo Departamental, presentado al Docente Guillermo Mondragon.
Gracias por la atencion :v
Dayana Mendes
Republica Bolivariana de Venezuela
Ministerio del poder popupar para la educación
Instituto Politecnico Universitario Santiago Mariño -
Extension Valencia
Estudiante: Wilfredo E. Nadales H.
Asignatura: Ingenieria Sistemas (47)
C.I.:29946762
La presente cumple con el fin de presentar la actividad sobre los programas estructurados que presenta a través de una presentación
Folder do Instituto Empreendedores Universitários, com algumas informações sobre nosso trabalho, portfólio e alguns depoimentos.
Para mais informações não deixe de entrar em contato pelo e-mail contato@empreendedoresuniversitarios.org ou pelos telefones (41) 4042-0123 ou (41)9888-6801 (horário comercial)
1. EJEMPLO
En los apartados anteriores hemos definido y utilizado una excepción con sus constructores básicos,
pero sin propiedades ni métodos adicionales. En ocasiones con el esquema seguido es suficiente,
sin embargo, a menudo es adecuado dotar de un estado (propiedades) a la clase que define la
excepción. Veamos este concepto con un ejemplo sencillo: deseamos programar la introducción por
teclado de matrículas de vehículos en un país donde las matrículas se componen de 8 caracteres,
siendo obligatoriamente el primero de ellos una letra. Si alguna matrícula introducida por el usuario
no sigue el formato esperado se recogerá la interrupción oportuna y se escribirá un aviso en la
consola.
En el código siguiente se presenta la clase ExMatricula que hereda la funcionalidad de Exception
(línea 1). Los constructores situados en las líneas 7 y 10 permiten iniciar el estado de la clase a
través de los constructores de su superclase.
En la línea 3 se define la propiedad MalFormada, que contiene información sobre la razón por la que
el formato de la matrícula es incorrecto: tamaño inadecuado (línea 4) o inexistencia de la letra inicial
(línea 5).
El constructor de la línea 14 permite crear una excepción ExMatricula indicando la naturaleza del
pro blema que obligará a levantar (trhow) esta excepción (ExMatricula.MAL_TAMANIO o
ExMatricula.MAL_LETRA).
En la línea 18 se suministra un método que permitirá, a los programa que reciben la excepción, saber
la razón que ha provocado la misma.
1 public class ExMatricula extends Exception {
2
3 private int MalFormada = 0;
4 static final int MAL_TAMANIO = -1;
5 static final int MAL_LETRA = -2;
6
7 ExMatricula()
8 {}
9
10 ExMatricula(String s) {
11 super(s);
12 }
13
14 ExMatricula(int MalFormada) {
15 this.MalFormada = MalFormada;
16 }
17
18 public int DimeProblema() {
19 return MalFormada;
20 }
2. 21
22 }
Una vez creada la excepción ExMatricula podemos escribir el código que valida las matrículas. La
siguiente clase (ExMatriculaValidar) realiza este cometido: el método Validar situado en la línea 7
comprueba el formato del parámetro suministrado y si es necesario tendrá capacidad de levantar (
throws) la excepción ExMatricula.
Si la longitud de la matrícula es distinta de 8 caracteres (línea 8) se crea y levanta la excepción
ExMatricula con estado inicial ExMatricula.MAL_TAMANIO (línea 9). Si el carácter inicial no es una
letra (línea 11) se crea y levanta la excepción ExMatricula con estado inicial
ExMatricula.MAL_LETRA (línea 12).
El método privado (sólo es visible en esta clase) UnaLetra aísla el primer carácter y comprueba que
es una letra empleando el método matches y la expresión regular “[A-Za-z]”. La utilización de
expresiones regulares se incluye a partir de la versión 1.4 del JDK.
1 public class ExMatriculaValidar {
2
3 private boolean UnaLetra(String Matricula) {
4
return Matricula.substring(0,1).matches("[A-Za-z]");
5 }
6
7 public void Validar(String Matricula) throws ExMatricula {
8
if (Matricula.length()!=8)
9
throw new ExMatricula(ExMatricula.MAL_TAMANIO);
10
else
11
if (!UnaLetra(Matricula))
12
throw new ExMatricula(ExMatricula.MAL_LETRA);
13
else
14
{} // matricula bien formada
15 }
16
17 }
Con el método de validación de matrículas implementado, capaz de levantar la excepción
ExMatricula, ya podemos escribir una aplicación que recoja las matrículas que introducen los
usuarios. La recuperación de los errores de formato se escribirá en el bloque catch correspondiente:
1 public class ExMatriculaPrincipal {
2
3 public static void main (String[] args) {
4
ExMatriculaValidar LaMatricula = new
ExMatriculaValidar();
5
6
do
7
try {
8
System.out.println("Introduce la matricula: ");
9
String Matricula = Teclado.Lee_String();
10
LaMatricula.Validar(Matricula);
3. 11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 }
27 }
}
catch(ExMatricula e) {
switch (e.DimeProblema()) {
case ExMatricula.MAL_TAMANIO:
System.out.println("Tamanio incorrecto");
break;
case ExMatricula.MAL_LETRA:
System.out.println("Letra inicial no
incluida");
break;
default:
System.out.println("Matricula correcta");
break;
}
}
while(true);
En el código anterior existe un bucle infinito (líneas 6 y 25) que permite la validación de matrículas
(líneas 8, 9 y 10). Habitualmente estas tres líneas se ejecutan repetitivamente; esporádicamente el
usuario introducirá una matrícula con el formato erróneo y el método Validar levantará la excepción
ExMatricula, que será recogida y tratada en el bloque catch (línea 12).
En la línea 13 sabemos que se ha producido una excepción ExMatricula, pero no conocemos su
causa exacta (tamaño incorrecto o primer carácter distinto de letra). El método DimeProblema que
incluimos en la clase ExMatricula nos indica el estado de la excepción. Si el estado de la excepción
es MAL_TAMANIO le indicamos esta situación al usuario que introdujo la matrícula con un tamaño
incorrecto (líneas 14 y 15). En las líneas 17 y 18 hacemos lo propio con MAL_LETRA.
La ventana siguiente muestra un ejemplo de ejecución del programa:
Los objetos utilizados en el ejemplo se presentan en la siguiente tabla
4. La estructura de clases se representa en el siguiente diagrama que relaciona los objetos: