SlideShare una empresa de Scribd logo
1 de 99
Descargar para leer sin conexión
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
NIVEL 7

             REDES SOCIALES




           mjvc007@hotmail.com




        http://twitter.com/mariocloud




http://linkedin.com/in/mariojosevillamizarcano
NIVEL 7

PROCESO PARA SOLUCIONAR UN PROBLEMA
NIVEL 7

ETAPAS DEL PROCESO DE SOLUCIÓN A UN PROBLEMA
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.
NIVEL 7

SOLUCIÓN A UN PROBLEMA
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
NIVEL 7

                    CASOS DE ESTUDIO
Caso de estudio 1: Un traductor de idiomas
NIVEL 7

                   CASOS DE ESTUDIO
Caso de estudio 2: Un manejador de muestras
NIVEL 7

                    CASOS DE ESTUDIO
Caso de estudio 3: Una exposición canina
NIVEL 7

                    HOJAS DE TRABAJO
Hoja de trabajo 1: Bolsa de Empleo
NIVEL 7

                    HOJAS DE TRABAJO
Hoja de trabajo 2: Venta de Vehículos
NIVEL 7

                   HOJAS DE TRABAJO
Hoja de trabajo 3: Rompecabezas
NIVEL 7

    CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Interfaz Gráfica
NIVEL 7

     CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Requerimientos funcionales.
NIVEL 7

   CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Requerimientos funcionales.
NIVEL 7

   CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Modelo del Mundo
NIVEL 7

    CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Modelo de la Interfaz
NIVEL 7

   CASO DE ESTUDIO 1 – UN TRADUCTOR DE IDIOMAS
Modelo de las Pruebas
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.
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.
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.
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.
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( "" )
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
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.
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.
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
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.
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).
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.
NIVEL 7

  ¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?

Ejemplo para la clase Traduccion:
NIVEL 7

  ¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?

Ejemplo para la clase Traduccion:
NIVEL 7

  ¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?

Ejemplo para la clase Traductor:
NIVEL 7

  ¿CÓMO VERIFICAR EL INVARIANTE DURANTE LA EJECUCIÓN?

Ejemplo para la clase Traductor:
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.
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.
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
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.
NIVEL 7

ASIGNACIÓN DE RESPONSABILIDADES E IMPLEMENTACIÓN DE
                     MÉTODOS
NIVEL 7

LLAMADO A LOS MÉTODOS DEL MUNDO DESDE LA INTERFAZ
NIVEL 7



PREGUNTAS
NIVEL 7




HOJA DE TRABAJO
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.
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).
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.
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.
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.
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
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
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.
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.
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.
NIVEL 7

CREACIÓN DE LA CLASE DE PRUEBA
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
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
NIVEL 7

              IMPLEMENTACIÓN DE UN CASO DE PRUEBA




Escenario N




Caso de
Prueba Z
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.
NIVEL 7

EJECUCIÓN DE LOS CASOS DE PRUEBA




      DEMOSTRACIÓN EN VIVO.
NIVEL 7



PREGUNTAS
NIVEL 7




HOJA DE TRABAJO
NIVEL 7

CASO DE ESTUDIO 2 – UN MANEJADOR DE MUESTRAS
NIVEL 7

  CASO DE ESTUDIO 2 – UN MANEJADOR DE MUESTRAS
Modelo del Mundo
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.
NIVEL 7

                      MEDICIÓN DE TIEMPOS




System.nanoTime( ). Sirve para medir el tiempo en nanosegundos.
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
NIVEL 7

     ORDENAMIENTO EN MEMORIA PRINCIPAL - SELECCIÓN




http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoSeleccion.htm
NIVEL 7

     ORDENAMIENTO EN MEMORIA PRINCIPAL - SELECCIÓN




http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoSeleccion.htm
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
NIVEL 7

      ORDENAMIENTO EN MEMORIA PRINCIPAL - BURBUJA




http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoBurbuja.htm
NIVEL 7

      ORDENAMIENTO EN MEMORIA PRINCIPAL - BURBUJA




http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoBurbuja.htm
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
NIVEL 7

     ORDENAMIENTO EN MEMORIA PRINCIPAL - INSERCIÓN




http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoInsercion.htm
NIVEL 7

     ORDENAMIENTO EN MEMORIA PRINCIPAL - INSERCIÓN




http://cupi2/sitio/images/cursosCupi2/apo2/entrenadores/n8ent_ord
enamientoNumeros/ordenamientoInsercion.htm
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.
NIVEL 7

                      BÚSQUEDA SECUENCIAL

•   Utilizada regularmente cuando la información NO está ordenada.
NIVEL 7

                        BÚSQUEDA BINARIA
•   Utilizada regularmente cuando la información ESTÁ ORDENADA.
NIVEL 7



PREGUNTAS
NIVEL 7




HOJA DE TRABAJO
NIVEL 7

CASO DE ESTUDIO 3 – UNA EXPOSICIÓN CANINA
NIVEL 7

CASO DE ESTUDIO 3 – UNA EXPOSICIÓN CANINA
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
}
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
}
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
}
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
}
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
}
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
}
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
}
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.
NIVEL 7

COMPARACIÓN DE OBJETOS POR MÚLTIPLES CRITERIOS
NIVEL 7

COMPARACIÓN DE OBJETOS POR MÚLTIPLES CRITERIOS
NIVEL 7

COMPARACIÓN DE OBJETOS POR MÚLTIPLES CRITERIOS
NIVEL 7



PREGUNTAS
NIVEL 7




HOJA DE TRABAJO
NIVEL 7

MANEJO DE GRUPOS DE VALORES
NIVEL 7

MANEJO DE GRUPOS DE VALORES
NIVEL 7

MANEJO DE GRUPOS DE VALORES
NIVEL 7



PREGUNTAS
NIVEL 7




HOJA DE TRABAJO

Más contenido relacionado

La actualidad más candente

Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNSalvador Fernández Fernández
 
Presentación1
Presentación1Presentación1
Presentación1cipq
 
Psp (personal software process) guia 0 introducción
Psp (personal software process) guia 0 introducciónPsp (personal software process) guia 0 introducción
Psp (personal software process) guia 0 introducciónAlejandra Ceballos
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetosClara Patricia Avella Ibañez
 
Las estructuras de control en la programación
Las estructuras de control en la programaciónLas estructuras de control en la programación
Las estructuras de control en la programaciónalexandermoreno91
 
Programación en Perl
Programación en PerlProgramación en Perl
Programación en PerlLiseth Rìos
 
Fundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresFundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresLuis Eduardo Pelaez Valencia
 
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWAREDEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARELidizz Garcia Alvarado
 
Importancia Requerimientos
Importancia RequerimientosImportancia Requerimientos
Importancia RequerimientosDavid Ramirez
 
Metodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesMetodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesJaqueline Luna
 
Ejercicios condicionales simples
Ejercicios condicionales simplesEjercicios condicionales simples
Ejercicios condicionales simplesEcler Mamani Vilca
 
Metodología de desarrollo de software basada en componentes
Metodología de desarrollo de software basada en componentesMetodología de desarrollo de software basada en componentes
Metodología de desarrollo de software basada en componentesEmmanuel Fontán
 
TAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSTAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSxinithazangels
 

La actualidad más candente (20)

Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
 
Presentación1
Presentación1Presentación1
Presentación1
 
Bootstrap
Bootstrap Bootstrap
Bootstrap
 
2. El proceso del software
2. El proceso del software2. El proceso del software
2. El proceso del software
 
Investigacion unidad 3
Investigacion unidad 3Investigacion unidad 3
Investigacion unidad 3
 
Psp (personal software process) guia 0 introducción
Psp (personal software process) guia 0 introducciónPsp (personal software process) guia 0 introducción
Psp (personal software process) guia 0 introducción
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos
 
Proceso unificado
Proceso unificadoProceso unificado
Proceso unificado
 
Las estructuras de control en la programación
Las estructuras de control en la programaciónLas estructuras de control en la programación
Las estructuras de control en la programación
 
Autómatas Finitos
Autómatas FinitosAutómatas Finitos
Autómatas Finitos
 
Programación en Perl
Programación en PerlProgramación en Perl
Programación en Perl
 
Fundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresFundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y Estándares
 
Metodologia Incremental
Metodologia IncrementalMetodologia Incremental
Metodologia Incremental
 
Procesos
ProcesosProcesos
Procesos
 
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWAREDEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
 
Importancia Requerimientos
Importancia RequerimientosImportancia Requerimientos
Importancia Requerimientos
 
Metodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móvilesMetodologías para el desarrollo de aplicaciones móviles
Metodologías para el desarrollo de aplicaciones móviles
 
Ejercicios condicionales simples
Ejercicios condicionales simplesEjercicios condicionales simples
Ejercicios condicionales simples
 
Metodología de desarrollo de software basada en componentes
Metodología de desarrollo de software basada en componentesMetodología de desarrollo de software basada en componentes
Metodología de desarrollo de software basada en componentes
 
TAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSTAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOS
 

Destacado (11)

APO2 - Presentacion nivel 8
APO2 - Presentacion nivel 8APO2 - Presentacion nivel 8
APO2 - Presentacion nivel 8
 
APO1 - Presentacion nivel 6
APO1 - Presentacion nivel 6APO1 - Presentacion nivel 6
APO1 - Presentacion nivel 6
 
APO2 - Presentacion nivel 9
APO2 - Presentacion nivel 9APO2 - Presentacion nivel 9
APO2 - Presentacion nivel 9
 
APO2 - Presentacion nivel 10
APO2 - Presentacion nivel 10APO2 - Presentacion nivel 10
APO2 - Presentacion nivel 10
 
APO1 - Presentacion nivel 4
APO1 - Presentacion nivel 4APO1 - Presentacion nivel 4
APO1 - Presentacion nivel 4
 
APO1 - Presentacion nivel 2
APO1 - Presentacion nivel 2APO1 - Presentacion nivel 2
APO1 - Presentacion nivel 2
 
Emprendimiento en internet y startups 2017
Emprendimiento en internet y startups 2017Emprendimiento en internet y startups 2017
Emprendimiento en internet y startups 2017
 
Curso Javascript profesionales
Curso Javascript profesionalesCurso Javascript profesionales
Curso Javascript profesionales
 
Cupi2 2006 1 Reunion Depto
Cupi2 2006 1 Reunion DeptoCupi2 2006 1 Reunion Depto
Cupi2 2006 1 Reunion Depto
 
Infraestructura computacional: Computación en grid
Infraestructura computacional: Computación en gridInfraestructura computacional: Computación en grid
Infraestructura computacional: Computación en grid
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 

Similar a APO2 - Presentacion nivel 7

Similar a APO2 - Presentacion nivel 7 (20)

Taller de programación
Taller de programaciónTaller de programación
Taller de programación
 
Tema6 pruebas del software
Tema6 pruebas del softwareTema6 pruebas del software
Tema6 pruebas del software
 
Intropseint
IntropseintIntropseint
Intropseint
 
Introducción a la Programación
Introducción a la Programación Introducción a la Programación
Introducción a la Programación
 
Introducción al PSeint
Introducción al PSeintIntroducción al PSeint
Introducción al PSeint
 
Presentación KWIC
Presentación KWICPresentación KWIC
Presentación KWIC
 
Fundamentos de visual basic 6.0.
Fundamentos de visual basic 6.0. Fundamentos de visual basic 6.0.
Fundamentos de visual basic 6.0.
 
PSEINT INTRODUCCION
PSEINT INTRODUCCIONPSEINT INTRODUCCION
PSEINT INTRODUCCION
 
Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++
 
Estructuras repetitivas herramienta case jean
Estructuras repetitivas herramienta case jeanEstructuras repetitivas herramienta case jean
Estructuras repetitivas herramienta case jean
 
Teoría de la programación.pptx
Teoría de la programación.pptxTeoría de la programación.pptx
Teoría de la programación.pptx
 
Curso Java Inicial 2 - Introducción y Sintaxis
Curso Java Inicial  2 - Introducción y SintaxisCurso Java Inicial  2 - Introducción y Sintaxis
Curso Java Inicial 2 - Introducción y Sintaxis
 
Plan3 powerpoint
Plan3 powerpointPlan3 powerpoint
Plan3 powerpoint
 
Plan3 powerpoint
Plan3 powerpointPlan3 powerpoint
Plan3 powerpoint
 
Programacion java basica
Programacion java basicaProgramacion java basica
Programacion java basica
 
Fundamentos De Programacion
Fundamentos De ProgramacionFundamentos De Programacion
Fundamentos De Programacion
 
unidad1_algoritmoyprograma.pdf
unidad1_algoritmoyprograma.pdfunidad1_algoritmoyprograma.pdf
unidad1_algoritmoyprograma.pdf
 
Lenguaje de Alto Nivel
Lenguaje de Alto NivelLenguaje de Alto Nivel
Lenguaje de Alto Nivel
 
Wilfreddy barco
Wilfreddy barcoWilfreddy barco
Wilfreddy barco
 
Excondicionales
ExcondicionalesExcondicionales
Excondicionales
 

Más de Mario Jose Villamizar Cano

e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...Mario Jose Villamizar Cano
 
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsFrameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsMario Jose Villamizar Cano
 
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)Mario Jose Villamizar Cano
 
An Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and EntrepreneurshipAn Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and EntrepreneurshipMario Jose Villamizar Cano
 
Energy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud InfrastructureEnergy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud InfrastructureMario Jose Villamizar Cano
 
Emprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet StartupsEmprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet StartupsMario Jose Villamizar Cano
 
e-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific Computinge-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific ComputingMario Jose Villamizar Cano
 
Cloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedoresCloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedoresMario Jose Villamizar Cano
 
UnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a ServiceUnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a ServiceMario Jose Villamizar Cano
 
Bio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow executionBio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow executionMario Jose Villamizar Cano
 
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...Mario Jose Villamizar Cano
 
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...Mario Jose Villamizar Cano
 
Una grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombiaUna grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombiaMario Jose Villamizar Cano
 

Más de Mario Jose Villamizar Cano (15)

e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
 
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsFrameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
 
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
 
An Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and EntrepreneurshipAn Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and Entrepreneurship
 
Energy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud InfrastructureEnergy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud Infrastructure
 
Emprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet StartupsEmprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet Startups
 
e-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific Computinge-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific Computing
 
Cloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedoresCloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedores
 
CLOUD COMPUTING HOY: Todo como Servicio.
CLOUD COMPUTING HOY: Todo como Servicio.CLOUD COMPUTING HOY: Todo como Servicio.
CLOUD COMPUTING HOY: Todo como Servicio.
 
UnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a ServiceUnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
 
Bio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow executionBio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow execution
 
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
 
An Opportunistic Storage System for UnaGrid
An Opportunistic Storage System for UnaGridAn Opportunistic Storage System for UnaGrid
An Opportunistic Storage System for UnaGrid
 
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
 
Una grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombiaUna grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombia
 

Último

EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Baker Publishing Company
 

Último (20)

EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
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
  • 3. NIVEL 7 PROCESO PARA SOLUCIONAR UN PROBLEMA
  • 4. NIVEL 7 ETAPAS DEL PROCESO DE SOLUCIÓN A UN PROBLEMA
  • 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.
  • 6. NIVEL 7 SOLUCIÓN A UN 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.
  • 40. NIVEL 7 ASIGNACIÓN DE RESPONSABILIDADES E IMPLEMENTACIÓN DE MÉTODOS
  • 41. NIVEL 7 LLAMADO A LOS MÉTODOS DEL MUNDO DESDE LA INTERFAZ
  • 43. NIVEL 7 HOJA DE TRABAJO
  • 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.
  • 54. NIVEL 7 CREACIÓN DE LA CLASE DE PRUEBA
  • 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.
  • 59. NIVEL 7 EJECUCIÓN DE LOS CASOS DE PRUEBA DEMOSTRACIÓN EN VIVO.
  • 61. NIVEL 7 HOJA DE TRABAJO
  • 62. NIVEL 7 CASO DE ESTUDIO 2 – UN MANEJADOR DE MUESTRAS
  • 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.
  • 79. NIVEL 7 HOJA DE TRABAJO
  • 80. NIVEL 7 CASO DE ESTUDIO 3 – UNA EXPOSICIÓN CANINA
  • 81. NIVEL 7 CASO DE ESTUDIO 3 – UNA EXPOSICIÓN CANINA
  • 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.
  • 90. NIVEL 7 COMPARACIÓN DE OBJETOS POR MÚLTIPLES CRITERIOS
  • 91. NIVEL 7 COMPARACIÓN DE OBJETOS POR MÚLTIPLES CRITERIOS
  • 92. NIVEL 7 COMPARACIÓN DE OBJETOS POR MÚLTIPLES CRITERIOS
  • 94. NIVEL 7 HOJA DE TRABAJO
  • 95. NIVEL 7 MANEJO DE GRUPOS DE VALORES
  • 96. NIVEL 7 MANEJO DE GRUPOS DE VALORES
  • 97. NIVEL 7 MANEJO DE GRUPOS DE VALORES
  • 99. NIVEL 7 HOJA DE TRABAJO