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

metricas orientadas al tamaño
metricas orientadas al tamañometricas orientadas al tamaño
metricas orientadas al tamañojhonti2011
 
Unidad 4 graficación
Unidad 4 graficaciónUnidad 4 graficación
Unidad 4 graficaciónAndhy H Palma
 
Algoritmo para el juego del gato
Algoritmo para el juego del gatoAlgoritmo para el juego del gato
Algoritmo para el juego del gatoEdwinVega49
 
JavaScript
JavaScriptJavaScript
JavaScriptJomicast
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedioGuillermo
 
Ejercicios prácticos con el uso de pseint
Ejercicios prácticos con el uso de pseintEjercicios prácticos con el uso de pseint
Ejercicios prácticos con el uso de pseintEnrique Vargas
 
Lenguajes Regulares y Autómatas Finitos - Clase 7
Lenguajes Regulares y Autómatas Finitos - Clase 7Lenguajes Regulares y Autómatas Finitos - Clase 7
Lenguajes Regulares y Autómatas Finitos - Clase 7UTN-FRT Tucumán Argentina
 
Microsoft Solutions Framework
Microsoft Solutions FrameworkMicrosoft Solutions Framework
Microsoft Solutions FrameworkTaty Millan
 
Requerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareRequerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareKelvin Abdiel Alvarado
 
Parte 4 Máquinas De Turing
Parte 4  Máquinas De  TuringParte 4  Máquinas De  Turing
Parte 4 Máquinas De TuringRicardo Quintero
 
Elementos caracteristicos de la poo
Elementos caracteristicos de la pooElementos caracteristicos de la poo
Elementos caracteristicos de la pooMagda Fernandez
 
Manual fragmentacion
Manual fragmentacionManual fragmentacion
Manual fragmentacionEsbe Anahi RV
 

La actualidad más candente (20)

1 introduccion microsoft .net
1 introduccion microsoft .net1 introduccion microsoft .net
1 introduccion microsoft .net
 
metricas orientadas al tamaño
metricas orientadas al tamañometricas orientadas al tamaño
metricas orientadas al tamaño
 
Unidad 4 graficación
Unidad 4 graficaciónUnidad 4 graficación
Unidad 4 graficación
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Algoritmo para el juego del gato
Algoritmo para el juego del gatoAlgoritmo para el juego del gato
Algoritmo para el juego del gato
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
Ejercicios prácticos con el uso de pseint
Ejercicios prácticos con el uso de pseintEjercicios prácticos con el uso de pseint
Ejercicios prácticos con el uso de pseint
 
Valores y prácticas XP
Valores y prácticas XPValores y prácticas XP
Valores y prácticas XP
 
Modos de direccionamiento y formatos
Modos de direccionamiento y formatosModos de direccionamiento y formatos
Modos de direccionamiento y formatos
 
Diseno
DisenoDiseno
Diseno
 
Lenguajes Regulares y Autómatas Finitos - Clase 7
Lenguajes Regulares y Autómatas Finitos - Clase 7Lenguajes Regulares y Autómatas Finitos - Clase 7
Lenguajes Regulares y Autómatas Finitos - Clase 7
 
Modelos concurrentes
Modelos concurrentesModelos concurrentes
Modelos concurrentes
 
Microsoft Solutions Framework
Microsoft Solutions FrameworkMicrosoft Solutions Framework
Microsoft Solutions Framework
 
Algoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em CAlgoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em C
 
Planeación de proyectos de ingeniería web
Planeación de proyectos de ingeniería webPlaneación de proyectos de ingeniería web
Planeación de proyectos de ingeniería web
 
Requerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareRequerimientos en Ingenieria de Software
Requerimientos en Ingenieria de Software
 
Parte 4 Máquinas De Turing
Parte 4  Máquinas De  TuringParte 4  Máquinas De  Turing
Parte 4 Máquinas De Turing
 
Elementos caracteristicos de la poo
Elementos caracteristicos de la pooElementos caracteristicos de la poo
Elementos caracteristicos de la poo
 
Manual fragmentacion
Manual fragmentacionManual fragmentacion
Manual fragmentacion
 

Destacado (10)

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 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
 
Introducción al PSeint
Introducción al PSeintIntroducción al PSeint
Introducción al PSeint
 
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
 
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

ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesLauraColom3
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 

Último (20)

ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reacciones
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 

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