GithubHelp home page GithubHelp logo

cvds-lab4-grupo5's Introduction

Lab4-Grupo5

Escuela Colombiana de Ingeniería

Procesos de Desarrollo de Software

Desarrollo Dirigido por Pruebas + DIP + DI + Contenedores Livianos

Para este taller se va a trabajar sobre el juego del ahorcado.

El sistema actual de puntuación del juego comienza en 100 puntos y va descontando 10 puntos cada vez que se propone una letra incorrecta.

Algunos usuarios han propuesto diferentes esquemas para realizar la puntuación, los cuales se describen a continuación:

  • OriginalScore:

    • Es el esquema actual, se inicia con 100 puntos.
    • No se bonifican las letras correctas.
    • Se penaliza con 10 puntos con cada letra incorrecta.
    • El puntaje minimo es 0.
  • BonusScore:

    • El juego inicia en 0 puntos.
    • Se bonifica con 10 puntos cada letra correcta.
    • Se penaliza con 5 puntos cada letra incorrecta.
    • El puntaje mínimo es 0
  • PowerBonusScore:

    • El juego inicia en 0 puntos.
    • La $i-ésima$ letra correcta se bonifica con $5^i$.
    • Se penaliza con 8 puntos cada letra incorrecta.
    • El puntaje mínimo es 0
    • Si con las reglas anteriores sobrepasa 500 puntos, el puntaje es 500.

Lo anterior, se traduce en el siguiente modelo, donde se aplica el principio de inversión de dependencias:

texto cualquiera por si no carga la imagen

Parte I

  1. Clone el proyecto (no lo descargue!).

  2. A partir del código existente, implemente sólo los cascarones del modelo antes indicado.

  3. Haga la especificación de los métodos calculateScore (de las tres variantes de GameScore), a partir de las especificaciones generales dadas anteriormente. Recuerde tener en cuenta: @pre, @pos, @param, @throws.

  4. Haga commit de lo realizado hasta ahora. Desde la terminal:

    git add .			
    git commit -m "especificación métodos"
  5. Actualice el archivo pom.xml e incluya las dependencias para la ultima versión de JUnit y la versión del compilador de Java a la versión 8 .

  6. Teniendo en cuenta dichas especificaciones, en la clase donde se implementarán las pruebas (GameScoreTest), en los comentarios iniciales, especifique las clases de equivalencia para las tres variantes de GameScore, e identifique condiciones de frontera.

  7. Para cada clase de equivalencia y condición de frontera, implemente una prueba utilizando JUnit

    clase de equivalencia

    texto cualquiera por si no carga la imagen texto cualquiera por si no carga la imagen

  8. Haga commit de lo realizado hasta ahora. Desde la terminal:

    git add .			
    git commit -m "implementación pruebas"
  9. Realice la implementación de los 'cascarones' realizados anteriormente. Asegúrese que todas las pruebas unitarias creadas en los puntos anteriores se ejecutan satisfactoriamente.

  10. Al finalizar haga un nuevo commit:

    git add .			
    git commit -m "implementación del modelo"
  11. Para sincronizar el avance en el respositorio y NO PERDER el trabajo, use el comando de GIT para enviar los cambios:

	git push <URL Repositorio>	

Parte II

Actualmente se utiliza el patrón FactoryMethod que desacopla la creación de los objetos para diseñar un juego de ahorcado (revisar createGUIUsingFactoryMethod en SwingProject, el constructor de la clase GUI y HangmanFactoryMethod).

En este taller se va a utilizar un contenedor liviano (GoogleGuice) el cual soporta la inyección de las dependencias.

  1. Utilizando el HangmanFactoryMethod (MétodoFabrica) incluya el OriginalScore a la configuración.

Incorpore el Contenedor Liviano Guice dentro del proyecto:

  • Revise las dependencias necesarias en el pom.xml.
  • Modifique la inyección de dependencias utilizando guice en lugar del método fábrica..
  • Configure la aplicación de manera que desde el programa SwingProject NO SE CONSTRUYA el Score directamente, sino a través de Guice, asi mismo como las otras dependencias que se están inyectando mediante la fabrica.
  • Mediante la configuración de la Inyección de Dependencias se pueda cambiar el comportamiento del mismo, por ejemplo:
    • Utilizar el esquema OriginalScore.
    • Utilizar el esquema BonusScore.
    • Utilizar el idioma francés.
    • Utilizar el diccionario francés.
    • etc...
  • Para lo anterior, puede basarse en el ejemplo dado como referencia.

cvds-lab4-grupo5's People

Contributors

paulasanchez810 avatar fabimauri47 avatar

Watchers

James Cloos avatar  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.