Git Product home page Git Product logo

cprog-td2's Introduction

TP Maven-JUnit

L'objet de cet exercice est de réaliser une classe ChaineCryptee qui permettra de chiffrer/déchiffrer une chaîne de caractères (composée de lettres majuscules et d'espace). Le chiffrement utilise une méthode par décalage. La valeur du décalage représente la clé de chiffrement. Par exemple, une clé de valeur trois transformera un 'A' en 'D'.

La classe ChaineCryptee disposera

  • des attributs pour la chaîne en clair et le décalage,
  • un constructeur pour initialiser les instances à partir d'une chaîne en clair et du décalage,
  • la méthode String decrypte() qui retourne la chaîne en clair,
  • la méthode String crypte() qui retourne la chaîne chiffrée, Vous pourrez utilisez pour cela la méthode decaleCaractere,
  • la possibilité d'initialiser une instance à partir d'une chaîne cryptée et d'un décalage. Pour éviter l'ambiguïté au niveau du constructeur, vous utiliserez le modèle de conception Fabrication. Pour cela,
    • créez les méthodes de classe ChaineCryptee deCryptee(String, int) et ChaineCryptee deEnClair(String, int),
    • rendez le constructeur privé. La création des instances se fait maintenant à l'aide des deux méthodes de classe.

De plus, le projet sera géré avec Maven et vous utiliserez une approche pilotée par les tests pour la réalisation, i.e. écrivez toujours un test avant le code et pensez au refactoring. Le framework de tests devra être JUnit 4 (ou 5 si vous préférez). Vous rédigerez votre code source en respectant les conventions de codage du guide de stype Google. Enfin, la prise en compte des contraintes se fera par de la gestion d’erreurs et des exceptions.

Il pourra éventuellement être nécessaire de configurer le proxy (http://wwwcache.uvsq.fr:3128) pour accéder au dépôt Maven.

À chaque étape, validez vos modifications avec git et si nécessaire, exécutez le cycle maven adapté pour vérifier vos manipulations.

  1. Quelles conventions utilise Maven pour l’arborescence des répertoires ?

    RÉPONDRE ICI

  2. Examinez le projet Maven ainsi que le fichier de description et répondez aux questions suivantes :
    1. Dans quel répertoire se trouvent les fichiers sources du projet ? Les sources des tests ?

      RÉPONDRE ICI

    2. Quelles sont les coordonnées du projet ?

      RÉPONDRE ICI

    3. À quoi sert la propriété project.build.sourceEncoding ?

      RÉPONDRE ICI

    4. Quelles versions des sources et de la JVM sont utilisés ?

      RÉPONDRE ICI

    5. Quelle version de JUnit est configurée ? À quoi sert la balise scope ?

      RÉPONDRE ICI

    6. À quoi sert la section pluginManagement ?

      RÉPONDRE ICI

  3. Modifiez la configuration du projet de la façon suivante :
    1. fixez la version des sources et des .class pour utiliser la version 17 de Java
    2. utilisez la dernière version stable de JUnit 4 (cf. MVNRepository)
  4. Ajoutez un fichier .gitignore adapté aux projets Maven (cf. A collection of .gitignore templates) et ajoutez-y les fichiers et répertoires de votre IDE.
  5. Quelle commande Maven permet de :
    1. créer un jar du projet ?

      RÉPONDRE ICI

    2. lancer les tests ?

      RÉPONDRE ICI

    3. supprimer tous les fichiers issus de la compilation ?

      RÉPONDRE ICI

  6. Ajoutez une classe ChaineCryptee et une classe ChaineCrypteeTest dans les répertoires et packages appropriés. Supprimez les classes d'exemple App et AppTest.
  7. Énumérez une liste de cas de tests à réaliser en n'oubliant pas les cas d'erreur.

    RÉPONDRE ICI

  8. Pour chaque cas de test,
    1. écrivez le test JUnit correspondant dans la classe de test,
    2. vérifiez qu’il échoue,
    3. implémentez la fonctionnalité dans la classe,
    4. vérifiez que le test passe,
    5. appliquez un étape de refactoring sur les tests et la classe si nécessaire.
  9. Comment se comporte votre classe si la chaîne passée au constructeur est null ? Vous pouvez utiliser le débogueur pour identifier le problème (s'il y a un problème) au niveau de crypte.

    RÉPONDRE ICI

    1. ajoutez un test pour prendre en compte la chaîne null,
    2. si nécessaire, modifiez la classe pour faire passer le test
  10. Changez la représentation interne de la classe : seule la chaîne cryptée est stockée (plus la chaîne en clair).
    • effectuez les modifications nécessaires sans changer l'interface de la classe (les tests ne seront donc pas impactés).
  11. Modifiez le POM pour intégrer la vérification des conventions de codage avec checkstyle en utilisant les conventions Google.
  12. Ajoutez une méthode main qui démontre quelques fonctionnalités de la classe, puis modifiez le POM pour que le jar généré soit exécutable (cf. Apache Maven JAR Plugin)
  13. Modifiez la méthode main pour que les différents affichages se fassent à l'aide de la bibliothèque de logging SLF4J
  14. En utilisant le plugin assembly (ou le plugin shade), générez une archive du projet contenant ses dépendances (uber-jar)

cprog-td2's People

Contributors

hal91190 avatar

Watchers

 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.