Esta es la presentación del Nivel 7 del curso "ISIS-1205 Algorítmia y Programación por Objetos 2" (APO2) de la Universidad de los Andes, Bogotá, Colombia.
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
APO2 - Presentacion nivel 7
1. NIVEL 7
BIENVENIDOS A ALGORÍTMICA Y PROGRAMACIÓN 2 (APO 2)
Mario José Villamizar Cano
mj.villamizar24@uniandes.edu.co
Oficina ML-637
http://sistemas.uniandes.edu.co/~mj.villamizar24/dokuwiki/doku.php
Grupo de Tecnologías de Información y Comunicación (COMIT)
Departamento de Ingeniería de Sistemas y Computación
Universidad de los Andes, Bogotá D.C., Colombia
2. NIVEL 7
REDES SOCIALES
mjvc007@hotmail.com
http://twitter.com/mariocloud
http://linkedin.com/in/mariojosevillamizarcano
5. NIVEL 7
ANÁLISIS DEL PROBLEMA
Entender el problema del cliente y qué es lo que se quiere hacer.
La salida de esta etapa se denomina especificación del problema.
7. NIVEL 7
NIVEL 7 – BÚSQUEDA, ORDENAMIENTO Y PRUEBAS AUTOMÁTICAS
Caso de estudio 1 – Un traductor de idiomas
Invariantes de una clase
Pruebas automáticas
Caso de estudio 2 – Un manejador de muestras
Algoritmos de ordenamiento (Selección, Intercambio, Inserción)
Algoritmos de búsqueda (Búsqueda secuencial y binaria)
Generación de datos aleatorios
Medición de tiempos
Caso de estudio 3 – Una exposición canina
Comparación de objetos por múltiples criterios
Ordenamiento y búsqueda de objetos
Manejo de grupos de valores en la interfaz gráfica de usuario
8. NIVEL 7
CASOS DE ESTUDIO
Caso de estudio 1: Un traductor de idiomas
9. NIVEL 7
CASOS DE ESTUDIO
Caso de estudio 2: Un manejador de muestras
10. NIVEL 7
CASOS DE ESTUDIO
Caso de estudio 3: Una exposición canina
11. NIVEL 7
HOJAS DE TRABAJO
Hoja de trabajo 1: Bolsa de Empleo
12. NIVEL 7
HOJAS DE TRABAJO
Hoja de trabajo 2: Venta de Vehículos
13. NIVEL 7
HOJAS DE TRABAJO
Hoja de trabajo 3: Rompecabezas
14. NIVEL 7
CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Interfaz Gráfica
15. NIVEL 7
CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Requerimientos funcionales.
16. NIVEL 7
CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Requerimientos funcionales.
17. NIVEL 7
CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Modelo del Mundo
18. NIVEL 7
CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Modelo de la Interfaz
19. NIVEL 7
CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Modelo de las Pruebas
20. NIVEL 7
CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
¿Dónde quedaron plasmadas las siguientes restricciones del
mundo?
No hay dos palabras en español repetidas en ningún diccionario.
No hay dos palabras en español con las misma traducción en ningún
diccionario.
Las palabra de cada traducción no puede ser nula ni una cadena vacía.
Las traducción de cada traducción no puede ser nula ni una cadena
vacía.
Todos los traductores deben estar inicializados.
Si la clase Traductor tiene 10 métodos en todos ellos debería haber
una precondición para validar estas propiedades de los diccionarios.
Es una pérdida de tiempo debido a documentación y codificación.
Además es ineficiente desde el punto de vista de tiempos de respuesta.
21. NIVEL 7
INVARIANTES DE UNA CLASE
Invariante de una clase: Elemento fundamental para construir
programas correctos.
Sirven parta verificar que la información almacenada en los objetos del
mundo es coherente con los requerimientos funcionales y las reglas o
restricciones del negocio.
Es un conjunto de aserciones (afirmaciones) que indican las propiedades
que en todo momento deben cumplir las instancias de una clase.
Pueden utilizarse como suposiciones dentro de los métodos sin
necesidad de que aparezcan en las precondiciones y sin necesidad de
verificarlos.
Solo se utilizan durante el desarrollo del programa no en un
entorno de producción, es decir, cuando ya la debe utilizar el
usuario final.
22. NIVEL 7
INVARIANTES DE UNA CLASE
El Invariante de una clase está compuesto por:
Restricciones sobre los valores que pueden tomar los atributos.
Restricciones sobre los valores que pueden tomar los objetos hacia
los cuales hay una asociación.
Relaciones entre los atributos y/o los objetos con los cuales se
relaciona.
23. NIVEL 7
NUEVA NOCIÓN DE CONTRATO
Todo método (que no sea un constructor) puede suponer al comienzo de
su ejecución que se cumplen todas las afirmaciones que aparecen en el
invariante de la clase y en la precondición del contrato, y se compromete
a que después de haber sido ejecutado sobre un objeto, este cumple
todas las afirmaciones del invariante y de la postcondición.
24. NIVEL 7
ASERCIONES DE LA CLASE TRADUCCÍON
No hay dos palabras en español repetidas en ningún diccionario.
No hay dos palabras en español con las misma traducción en ningún
diccionario.
La palabra de cada traducción no puede ser nula ni una cadena vacía.
La traducción de cada traducción no puede ser nula ni una cadena
vacía.
Todos los traductores deben estar inicializados.
palabra != null
!palabra.equals( "" )
traduccion != null
!traduccion.equals( "" )
25. NIVEL 7
ASERCIONES DE LA CLASE TRADUCTOR
Todos los traductores deben estar inicializados.
No hay dos palabras en español repetidas en ningún diccionario.
No hay dos palabras en español con las misma traducción en ningún
diccionario.
espanolIngles != null
espanolFrances != null
espanolItaliano != null
En el vector espanolIngles no hay palabras repetidas
En el vector espanolFrances no hay palabras repetidas
En el vector espanolItaliano no hay palabras repetidas
En el vector espanolIngles no hay traducciones repetidas
En el vector espanolFrances no hay traducciones repetidas
En el vector espanolItaliano no hay traducciones repetidas
26. NIVEL 7
¿COMO IDENTIFICAR LAS ASERCIONES?
Las aserciones (afirmaciones) se clasifican en dos tipos:
Las que provienen del análisis del problema:
No hay dos palabras en español repetidas en ningún diccionario.
No hay dos palabras en español con las misma traducción en ningún
diccionario.
Las que provienen de decisiones del diseño:
La palabra de cada traducción no puede ser nula ni una cadena vacía.
La traducción de cada traducción no puede ser nula ni una cadena
vacía.
Todos los traductores deben estar inicializados.
27. NIVEL 7
¿CUÁL CLASE ES RESPONSABLE DE HACER LAS AFIRMACIONES?
No hay dos palabras en español repetidas en ningún diccionario.
No hay dos palabras en español con las misma traducción en ningún
diccionario.
Todos los traductores deben estar inicializados.
La palabra de cada traducción no puede ser nula ni una cadena vacía.
La traducción de cada traducción no puede ser nula ni una cadena
vacía.
28. NIVEL 7
¿CÓMO DOCUMENTAR EL INVARIANTE DE UNA CLASE?
Se debe documentar como parte del Javadoc que describe la clase:
Clase Traductor
CLatretsdsasad
Clase Traduccion
29. NIVEL 7
INSTRUCCIÓN ASSERT
La instrucción assert de Java permite verificar una aserción (afirmación),
hay dos maneras de utilizar esta instrucción:
assert expresión;
Ejemplo: assert traduccion != null;
En este caso la expresión a evaluar debe ser de tipo lógico. Si la
expresión da verdadero, el programa continúa normalmente.
Si da falso se lanza un tipo de excepción denominada AssertionError que
hace que el programa termine si nadie lo atrapa.
assert expresión1 : expresion2;
Ejemplo: assert traduccion != null : "traducción inválida";
Similar al caso anterior, solo que la expresión2 debe ser de tipo cadena
de caracteres. En caso de que haya un error (cuando la expresión1 da
false) se le asocia a la Excepción el mensaje de la expresión2.
30. NIVEL 7
INSTRUCCIÓN ASSERT
Ejemplo:
assert traduccion != null : "traducción inválida";
Similar a:
if(traduccion == null)
{
throw new Exception("traducción inválida");
}
Sin embargo, Java permite activar y desactivar la verificación de
aserciones de manera sencilla, por lo tanto cuando hay que entregar el
programa al usuario final, las verificaciones se pueden desactivar
fácilmente (el computador no debe seguir haciendo verificaciones
inútiles).
31. NIVEL 7
¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?
En cada clase que tenga invariante se debe verificar, para ello se escribe
el siguiente método:
private void verificarInvariante()
1. En este método se utiliza la instrucción assert para cada aserción del
invariante. Si la expresión es simple colocamos la aserción directamente
como instrucción de este método. Si es compleja hay que desarrollar un
método privado de tipo lógico que haga la verificación.
2. Al final de cada Contructor y al final de cada método modificador, se
debe agregar la llamada al método verificarInvariante, ya que estos
métodos son los que cambian el estado del mundo. Recordemos que
las invariantes se utilizan para que el programador esté seguro de
que durante la ejecución del programa, siempre hay estado
consistente del mundo.
32. NIVEL 7
¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?
Ejemplo para la clase Traduccion:
33. NIVEL 7
¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?
Ejemplo para la clase Traduccion:
34. NIVEL 7
¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?
Ejemplo para la clase Traductor:
35. NIVEL 7
¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?
Ejemplo para la clase Traductor:
36. NIVEL 7
ACTIVAR Y DESACTIVAR LA VERIFICACIÓN DEL INVARIANTE
Cuando durante la verificación del invariante se detecta un error, el
programa se detiene, permitiéndole al programador detectar el método
defectuoso.
Por defecto durante la ejecución de un programa NO se verifican las
instrucciones assert.
Para hacer que las instrucciones assert se evalúen es necesario incluir
en la llamada del programa la opción –ea (-enableassertions). Esto se
hace desde eclipse, en la parte de parámetros para la máquina virtual:
VM arguments.
37. NIVEL 7
ACTIVAR Y DESACTIVAR LA VERIFICACIÓN DEL INVARIANTE
En este ejemplo
se activa la
verificación de
instrucciones
assert para todas
las clases del
programa.
También se puede
habilitar la
verificación a nivel
de clases y a nivel
de paquetes.
38. NIVEL 7
ACTIVAR Y DESACTIVAR LA VERIFICACIÓN DEL INVARIANTE
Solo para una clase del paquete mundo
Solo para todas las clases del paquete mundo
Todas las clases del programa, menos una del mundo
39. NIVEL 7
ASIGNACIÓN DE RESPONSABILIDADES E IMPLEMENTACIÓN DE
MÉTODOS
Para definir las responsabilidades de cada clase, particularmente en lo
relacionado a métodos y contratos se debe seguir una secuencia de
tareas:
1. Aplicar la técnica del experto para la descomposición de los
requerimientos, identificando los servicios (métodos) que debe tener
cada clase.
2. Diseñar la signatura de los métodos de cada clase.
3. Escribir el contrato de los métodos de cada clase.
4. Hacer la declaración e implementación en Java de los métodos.
44. NIVEL 7
PRUEBAS UNITARIAS AUTOMÁTICAS
Una vez se han implementado todos los métodos de las clases, es
necesarios probar que TODOS LOS MÉTODOS de CADA UNA DE LAS
CLASES DEL MUNDO cumplen efectivamente su contrato.
Las pruebas unitarias automáticas sirven para probar individualmente
cada una de las clases.
Si todas las clases cumplen con sus compromisos, el programa debe
funcionar correctamente. Si algo falla, es posible saber cuál clase fue y
en cuál método ocurrió el error.
Las pruebas unitarias automáticas son una excelente herramienta
para garantizar programas de calidad. Deben verse como una ayuda
para mejorar la calidad del programa y no como un esfuerzo extra.
45. NIVEL 7
PRUEBAS UNITARIAS AUTOMÁTICAS
Una clase de prueba por cada una de las clases del modelo del
mundo que queramos probar. Cada clase de prueba tendrá una
asociación hacia la clase verificada (sin pasar por la interfaz).
46. NIVEL 7
PRUEBAS UNITARIAS AUTOMÁTICAS
Las clases de prueba se van a almacenar
en un paquete distinto
(cupi2.uniandes.nombre_ejercicio.test).
Las clases de prueba físicamente van a
quedar en la carpeta testsource.
Hay dos elementos importantes al construir
las clases de prueba:
1. Los escenarios.
2. Los casos de prueba.
47. NIVEL 7
ESCENARIOS DE PRUEBA
ESCENARIO 1
Un escenario es un español inglés
ESCENARIO 2
objeto de la clase que se español inglés
perro dog
quiere probar, que tiene
ratón mouse casa house
un estado conocido por
nosotros. vaso glass perro dog
vino wine ratón mouse
Un escenario se español francés español francés
representa con un mesa table
mesa table
diagrama de objetos
lápiz crayon lápiz crayon
(cualquier sintaxis válida).
libro livre libro livre
En una clase de prueba azul bleu español italiano
se debe construir distintos teléfono téléphone mesa tavlo
escenarios que permitan lápiz rosseto
español italiano
probar el correcto
funcionamiento del mesa tavlo
programa.
48. NIVEL 7
ESCENARIOS DE PRUEBA
Un escenario siempre ESCENARIO 2 - MALO
debe cumplir con el español inglés
invariante de la clase.
casa house
Se deben construir perro dog
ESCENARIO 1
escenarios para todas las casa home
posibles situaciones o español inglés español francés
estados que pueda tener español francés mesa table
el modelo del mundo. español italiano lápiz crayon
Una vez definidos los libro livre
escenarios es necesario español italiano
definir los casos de mesa tavlo
prueba, para cada uno de lápiz rosseto
los métodos de la clase
que queremos probar.
49. NIVEL 7
CASOS DE PRUEBA
ESCENARIO 1
Un caso de prueba está asociado a: español inglés
perro dog
1. Un escenario. ratón mouse
2. Un método de la clase que se quiere probar.
vaso glass
3. Unos valores de entrada para los parámetros
del método. vino wine
4. El resultado de ejecutar el método al español francés
escenario, con los valores de entrada. mesa table
lápiz crayon
Tanto el escenario como los parámetros deben
libro livre
cumplir las precondiciones del método que se
quiere probar. azul Bleu
teléfono téléphone
Cada caso de prueba debe tener un objetivo español italiano
específico (NO se deben definir al azar). mesa tavlo
50. NIVEL 7
CASOS DE PRUEBA ESCENARIO N
español inglés
perro dog
Caso de Prueba # 1 ratón mouse
Objetivo: Probar el método agregar español francés
palabras de la clase Traductor
mesa table
Español italiano
mesa tavlo
Caso Prueba Método Escenario Parámetros Resultado
No 1 – Clase
Traductor agregarTraduccion() Esc. N pal = azul Verdadero. Se agregó la
trad = blue palabra al diccionario español
idDestino = INGLES ingles.
Traductor agregarTraduccion() Esc. N pal = ratón Falso. La palabra ratón ya
trad = mickey existe en el diccionario
idDestino = INGLES español.
Traductor agregarTraduccion() Esc. N pal = azul Verdadero. Se agregó la
trad = bleu palabra al diccionario español
idDestino = francés.
FRANCES
51. NIVEL 7
IMPLEMENTACIÓN DE LAS PRUEBAS UNITARIAS AUTOMÁTICAS
Es necesario construir la clase de pruebas que construya los escenarios
y los casos de prueba de cada escenario. Dicha clase la llamaremos
Ejecutor de Pruebas.
Esta clase será la encargada de generar un reporte de los resultados de
ejecutar todos los casos de prueba a los escenarios de la clase que está
siendo verificada.
En este curso utilizaremos el framework JUnit que facilita la creación de
las clases de prueba así como su ejecución.
52. NIVEL 7
IMPLEMENTACIÓN DE LAS PRUEBAS UNITARIAS AUTOMÁTICAS
Las clases de prueba deben declararse con el encabezado extends
TestCase.
Se deben importar las clases del paquete junit.framework.
Los métodos para construir los escenarios van a ser privados y van a
comenzar con el prefijo setupEscenario seguido de un número. Este
método debe encargarse de crear una instancia del mundo e invocar los
métodos necesarios para llevarlo al estado definido en el diseño.
Los métodos que implementan los casos de prueba deben ser de tipo
void y su nombre debe comenzar con el prefijo test.
53. NIVEL 7
IMPLEMENTACIÓN DE LAS PRUEBAS UNITARIAS AUTOMÁTICAS
Las clases de prueba deben declararse con el encabezado extends
TestCase.
Se deben importar las clases del paquete junit.framework.
Los métodos para construir los escenarios van a ser privados y van a
comenzar con el prefijo setupEscenario seguido de un número. Este
método debe encargarse de crear una instancia del mundo e invocar los
métodos necesarios para llevarlo al estado definido en el diseño.
Los métodos que implementan los casos de prueba deben ser de tipo
void y su nombre debe comenzar con el prefijo test.
55. NIVEL 7
CREACIÓN DE UN ESCENARIO DE PRUEBA
ESCENARIO N
español inglés
perro dog
ratón mouse
español francés
mesa table
Español italiano
mesa tavlo
56. NIVEL 7
IMPLEMENTACIÓN DE UN CASO DE PRUEBA
Caso Prueba Método Escenario Parámetros Resultado
No Z – Clase
Traductor agregarTraduccion() Esc. N pal = azul Verdadero. Se agregó la
trad = blue palabra al diccionario español
idDestino = INGLES ingles.
Traductor agregarTraduccion() Esc. N pal = ratón Falso. La palabra ratón ya
trad = mickey existe en el diccionario
idDestino = INGLES español.
Traductor agregarTraduccion() Esc. N pal = azul Verdadero. Se agregó la
trad = bleu palabra al diccionario español
idDestino = francés.
FRANCES
57. NIVEL 7
IMPLEMENTACIÓN DE UN CASO DE PRUEBA
Escenario N
Caso de
Prueba Z
58. NIVEL 7
FUNCIONALIDADES DE LA CLASE TestCase
• assertTrue(condición);
• assertTrue( mensaje, condición);
Se lanza un
assertionFailedError si la
• assertFalse(condición);
verificación realizada no se
• assertFalse( mensaje, condición); cumple. Dicha excepción tiene
el mensaje definido.
• assertNull( mensaje, objeto);
• assertNotNull( mensaje, objeto);
• assertEquals( mensaje, esperado, actual);
• assertEquals( mensaje, esperado, actual, delta); //Valores reales
• fail( mensaje );
No confundir estos métodos con la instrucción assert utilizada para verificar
el invariante de una clase.
63. NIVEL 7
CASO DE ESTUDIO 2 – UN MANEJADOR DE MUESTRAS
Modelo del Mundo
64. NIVEL 7
GENERACIÓN DE DATOS
Math.random( ): Genera un valor aleatorio (tipo double) mayor o igual a
cero y menor a 1.
Math.max(valor1, valor2): Retorna el mayor valor entre valor1 y valor2.
Math.min( valor1, valor2): Retorna el menor valor entre valor1 y valor2.
65. NIVEL 7
MEDICIÓN DE TIEMPOS
System.nanoTime( ). Sirve para medir el tiempo en nanosegundos.
66. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - SELECCIÓN
200 50 21 112 14 155 420 225 23 78
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamiento/Swap.htm
67. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - SELECCIÓN
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoSeleccion.htm
68. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - SELECCIÓN
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoSeleccion.htm
69. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - BURBUJA
200 50 21 112 14 155 420 225 23 78
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamiento/burbuja.htm
70. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - BURBUJA
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoBurbuja.htm
71. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - BURBUJA
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoBurbuja.htm
72. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - INSERCIÓN
200 50 21 112 14 155 420 225 23 78
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoInsercion.htm
73. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - INSERCIÓN
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoInsercion.htm
74. NIVEL 7
ORDENAMIENTO EN MEMORIA PRINCIPAL - INSERCIÓN
http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoInsercion.htm
75. NIVEL 7
¿CUÁNDO ORDENAR?
• Cuando se van a efectuar MUCHAS búsquedas sobre el arreglo o
vector.
• Más adelante veremos otras maneras de mantener la información
ordenada permanentemente.
76. NIVEL 7
BÚSQUEDA SECUENCIAL
• Utilizada regularmente cuando la información NO está ordenada.
77. NIVEL 7
BÚSQUEDA BINARIA
• Utilizada regularmente cuando la información ESTÁ ORDENADA.
82. NIVEL 7
OPERADORES SOBRE CADENAS DE CARACTERES
Método equals de la clase String para comparar cadenas de
caracteres.
public boolean ejemplo1Equals( )
{
String producto1 = “Lapiz”;
String producto2 = “Lapiz”;
boolean resultadoComparacion = producto1.equals(producto2);
return resultadoComparacion;
resultadoComparacion = true
}
83. NIVEL 7
OPERADORES SOBRE CADENAS DE CARACTERES
Método equals de la clase String para comparar cadenas de
caracteres.
public boolean ejemplo2Equals( )
{
String producto1 = “Lapiz”;
String producto2 = “Lapiz”;
boolean resultadoComparacion = producto2.equals(producto1);
return resultadoComparacion;
resultadoComparacion = true
}
84. NIVEL 7
OPERADORES SOBRE CADENAS DE CARACTERES
Método equals de la clase String para comparar cadenas de
caracteres.
public boolean ejemplo3Equals( )
{
String producto1 = “Lapiz”;
String producto2 = “Lapiz ”;
boolean resultadoComparacion = producto2.equals(producto1);
return resultadoComparacion;
resultadoComparacion = false
}
85. NIVEL 7
OPERADORES SOBRE CADENAS DE CARACTERES
Método equals de la clase String para comparar cadenas de
caracteres.
public boolean ejemplo4Equals( )
{
String producto1 = “Lapiz”;
String producto2 = “Aspirina”;
boolean resultadoComparacion = producto2.equals(producto1);
return resultadoComparacion;
resultadoComparacion = false
}
86. NIVEL 7
OPERADORES SOBRE CADENAS DE CARACTERES
Método equalsIgnoreCase de la clase String para comparar cadenas
de caracteres sin tener en cuenta las mayúsculas y las minúsculas.
public boolean ejemplo1EqualsIgnoreCase( )
{
String producto1 = “Lapiz”;
String producto2 = “LAPIZ”;
boolean resultado = producto2.equalsIgnoreCase(producto1);
return resultado;
resultado = true
}
87. NIVEL 7
OPERADORES SOBRE CADENAS DE CARACTERES
Método equalsIgnoreCase de la clase String para comparar cadenas
de caracteres sin tener en cuenta las mayúsculas y las minúsculas.
public boolean ejemplo2EqualsIgnoreCase( )
{
String producto1 = “Lápiz”;
String producto2 = “LAPIZ”;
boolean resultado = producto2.equalsIgnoreCase(producto1);
return resultado;
resultado = false
}
88. NIVEL 7
OPERADORES SOBRE CADENAS DE CARACTERES
Método equalsIgnoreCase de la clase String para comparar cadenas
de caracteres sin tener en cuenta las mayúsculas y las minúsculas.
public boolean ejemplo3EqualsIgnoreCase( )
{
String producto1 = “Lápiz”;
String producto2 = “Aspirina”;
boolean resultado = producto2.equalsIgnoreCase(producto1);
return resultado;
resultado = false
}
89. NIVEL 7
COMPARACIÓN DE OBJETOS POR MÚLTIPLES CRITERIOS
• El objetivo es tener un método de comparación por cada criterio de
orden que pueda tener un objeto.
• En la exposición canina los perros se pueden ordenar por nombre,
raza, edad y puntos.
• Para cada criterio, la clase Perro debe tener un método de
comparación.