GithubHelp home page GithubHelp logo

p21-mini-projet's Introduction

Dessin Vectoriel

Instructions

Installation

  1. Créer un nouveau projet Java dans Eclipse.
  2. Clic-droit sur le nom du projet dans Package Explorer, puis Import...
  3. Dans la fenêtre qui s'ouvre, choisir Archive File, puis Next > et sélectionner l'archive .zip et enfin Finish.

Lancement des tests unitaires

Tout d'abord, ajouter JUnit 5 au build path : ouvrir un fichier de tests quelconque, survoler org.junit (devrait être souligné en rouge) dans les imports, puis Fix project setup... et cliquer OK dans la fenêtre qui s'ouvre.

Pour lancer nos propres tests (ceux dans dessinvectoriel), il suffit de clic-droit le package dessinvectoriel > Run As > 2 JUnit Test.

Rapport final

Ce qui marche

Tout. Tous les tests unitaires passent et les deux programmes de test marchent parfaitement.

Ce qui ne marche pas

Rien.

Spécifications non respectées

Aucune.

Difficultés

Aucune, à part les quelques révisions de trigonométrie, et la documentation de Graphics2D était suffisamment claire pour ce qui est du dessin des figures.

Choix

Nous avons décidé de faire tenir autant que possible le code dans 80 colonnes pour des raisons de lisibilité. Nous avons également réécrit la méthode Rectangle#getSommets afin de privilégier la lisibilité (l'ancienne implémentation, plus élégante mais plus ésotérique se trouve dans la Javadoc de la méthode).

Nous avons également utilisé le mot-clé final dans le corps de certaines méthodes pour indiquer que la valeur qui suit ne change pas jusqu'à la fin du bloc ou qu'elle ne sert que de "cache", pour éviter des appels de getter inutiles par exemple.

Voir aussi Vérification des paramètres.

Ce qui n'était pas clair dans le sujet

Il n'était pas évident au départ de voir l'utilité des méthodes initTrait et initRemplissage, mais on comprend assez vite quand on implémente les différentes méthodes dessiner.

Etat d'avancement au 28/05

Le projet (sources .java et Javadoc) est terminé, et des tests unitaires ont été réalisé pour les classes Dessin, Vecteur et Angle. Les programmes de démo Albers et DessinVectTest2 marchent parfaitement.

Pour ce qui est de la conception, nous avons respecté au maximum possible la spécification (DCc et sujet).

Vérification des paramètres

Pour la gestion des paramètres des méthodes, nous avons la politique suivante :

  • s'il y a une incohérence au niveau mathématique (longueur négative, ou inférieure à la largeur dans le cas du rectangle, etc.), on lance une IllegalArgumentException ;
  • si le paramètre est la référence null, mais qu'il est directement utilisé dans le corps de la méthode, on laisse la NullPointerException arriver "naturellement" ;
  • sinon, si on affecte le paramètre à un attribut de classe ou d'une instance de classe, dans un constructeur ou un setter par exemple, on utilise Objects#requireNonNull pour suivre le principe "fail-fast" en déclenchant la NullPointerException dès que possible.

p21-mini-projet's People

Contributors

elias-lnwbr 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.