Git Product home page Git Product logo

final-progra2-22-23's Introduction

Examen final

Examen final de la asignatura Programación II del Grado de Ingeniería Informática la Universidad Europea del Atlántico.

📝 Instrucciones

  • Cada ejercicio debe ir en un paquete y respetar el esqueleto inicial del proyecto tal como lo indicado acá.
  • El presente examen debe desarrollarse con los conceptos de programación vistos en clase hasta la sesión anterior a este examen.
  • Se deben además respetar los conceptos de código limpio:
    • Indentación.
    • Nombrado adecuado de la clase, las constantes y las variables.
    • Orden en el código.
    • Manejar un mismo idioma, como lo explicado en clase se usará Inglés.
  • Para la entrega:
    • Haga un fork de éste repositorio.
    • En su repositorio, dentro de la carpeta entregas cree una carpeta con su nombre y apellido en formato nombreApellido (ejemplo: elderBol).
    • Publique allí su código fuente en formato compilable, el proyecto puede llamarse examen-final-p2.
    • Al terminar, realice un pull request a este repositorio con el título: nombre.apellido + examen final P2.

Muy importante: no se corregirán entregas que obvien las reglas anteriormente indicadas o que se envíen fuera del plazo de entrega del examen.

📚 Ejercicio 1: Ahorcado

El ejercicio consiste en implementar el juego llamado “Ahorcado” es un juego de adivinanza de palabras o frases cuya finalidad es que los participantes descifran el significado de las mismas sin ser “ahorcados” por los desaciertos. Por cada error, se irá dibujando una parte del cuerpo, cuando esté completa esta figura, el jugador que trata de adivinar ya no tendrá más oportunidades y habrá perdido.

Implementar las funcionalidades basándonos en el diagrama UML planteado para que los tests pasen satisfactoriamente.

Diagrama de clases

También lo encuentra en el directorio raíz del esqueleto propuesto del proyecto.

Puede cambiar/agregar en las clases lo que considere oportuno para la resolución del ejercicio. Incluso puede agregar más clases si lo considera necesario, pero no puede modificar los tests.

Diagrama de clases

Tests

Los siguientes test los encontrará en el paquete com.progra.hangman.test

HangmanLogicTest

*[ ] isGameOver(): Validar si se ha terminado el juego *[ ] isWon(): Validar si ya se ha ganado

UserInterfaceTest

*[ ] start(): Iniciar el juego y validar que se haya cargado la cantidad de palabras definidas en el archivo data/word-list.txt.

WordParserTest

*[ ] nameParsedTest: Ingresando una cadena de texto crear una instancia de Word y debe retornar con el nombre parseado. *[ ] instanceParsedTest: Dependiedo de que tipo de palabra es se crea una instancia de la clase específica (Larga -> LargeWord, Mediana -> MediumWord, Corta -> ShortWord), este test debe parsear una cadena de texto y crear la instancia adecuada basándonos en el tipo de palabra. *[ ] sizeValidatorTest: Debe validar que la cadena de texto al parsearlo deba tener la cantidad de elementos necesarios para crear una instancia de Word.

WordTest

*[ ] shortWordTest: Al momento de crear una instancia de ShortWord al validar el nivel debe retornar S. *[ ] mediumWordTest: Al momento de crear una instancia de MediumWord al validar el nivel debe retornar M.

📚 Ejercicio 2: Interfaces

Importante para realizar este ejercicio, agregue en el mismo proyecto un paquete con el nombre de com.progra.interfaces.

*[ ] Crear la interfaz AdvancedArithmetic que contiene un método int divisorSum(int n). *[ ] La clase Calc implementa la interfaz AdvancedArithmetic. La función divisorSum solo toma un número entero como entrada y devuelve la suma de todos sus divisores, el valor de n será como máximo 999, caso contrario lanzar una excepción.

  • En la clase Calc crear función describeDivisors(int n) donde solo toma un número entero como entrada y debe retornar todos sus divisores separados por comas. El valor de n será como máximo 999, caso contrario lanzar una excepción. Para la excepción debe tener dos constructores, uno con un mensaje por defecto y otro recibe como parámetro el mensaje a mostrar.

Todas las funciones implementadas las debe de usar en Main como prueba de que funcionan.

Ejemplo: los divisores de 6 son 1, 2, 3 y 6, por lo que divisorSum debería devolver 12.

Ejemplo de entrada 0:

6

Ejemplo de salida 0:

12

Explicación: Divisores de 6 son 1,2,3 y 6. 1+2+3+6=12.

Ejemplo de entrada 1:

1000

Ejemplo de salida 1:

InputMaxValueException - Max value allowed is 999

Explicación: El valor de n es mayor a 999, por lo que se lanza una excepción.

Para la función describeDivisors()

Ejemplo de entrada 2:

6

Ejemplo de salida 2:

1,2,3,6

Explicación: Divisores de 6 son 1,2,3 y 6.

Ejemplo de entrada 3:

1000

Ejemplo de salida 3:

InputMaxValueException - Max value allowed is 999

Explicación: El valor de n es mayor a 999, por lo que se lanza una excepción.

Algunas definiciones

Parsear / Parsing

El término se usa a menudo para describir el análisis sintáctico de la entrada de un programa de computadora y la conversión de la misma en una forma interna que sea más fácil de procesar para el ordenador. Leer más...

Un ejemplo de una libreria muy usado en java es Apache POI que nos permite parsear archivos de Excel, Word, PDF, etc.

Uso de paquetes en Java

Un paquete es un contenedor de clases, interfaces y subpaquetes. Los paquetes se utilizan para organizar las clases en grupos lógicos, lo que facilita su mantenimiento y uso. Leer más...

final-progra2-22-23's People

Contributors

eabol avatar brendalopes avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.