Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
ens:cvda2016:tpbiblio [2016/05/18 17:23]
admin Cordier Amelie () [Partie 4. Génération de code]
ens:cvda2016:tpbiblio [2016/05/19 10:00]
admin Cordier Amelie () [Partie 6. Finalisation des documents]
Ligne 224: Ligne 224:
   * Si la classe apparaît comme vide, cliquez (bouton droit) dessus, et choisissez d'afficher tous les champs.   * Si la classe apparaît comme vide, cliquez (bouton droit) dessus, et choisissez d'afficher tous les champs.
   * Cherchez comment générer du code Java directement à partir de ce diagramme de classes. Magique non ? Imaginez le temps que vous pourriez gagner sur un projet contenant plusieurs dizaines de classes et plusieurs packages !   * Cherchez comment générer du code Java directement à partir de ce diagramme de classes. Magique non ? Imaginez le temps que vous pourriez gagner sur un projet contenant plusieurs dizaines de classes et plusieurs packages !
-====== Partie 5. Finir le TP  ====== 
  
-<note important>En construction</note> +12. Il est temps de finir la classe ''Livre''. Récupérez la classe de test ci-dessous, complétez-là si vous le jugez utile, puis implémentez la classe livre de sorte à ce que tous les tests passent.  
-====== Partie 6. Finalisation des documents  ======+ 
 +<file java LivreTest.java> 
 +/** 
 + * Bibliothèque 
 + * TP CVDA 2016 - Amélie Cordier 
 + */ 
 +package bibliotheque; 
 + 
 +import org.junit.After; 
 +import org.junit.AfterClass; 
 +import org.junit.Before; 
 +import org.junit.BeforeClass; 
 +import org.junit.Test; 
 +import static org.junit.Assert.*; 
 + 
 + 
 +/** 
 + * Classe LivreTest 
 + * @author Amélie Cordier - IUT Lyon 1 
 + * @version 1.0 
 + * mai 2016 
 + */ 
 +public class LivreTest { 
 +     
 +    static Personne alan; 
 +    static Livre computing; 
 +     
 +    /** 
 +     * 
 +     */ 
 +    public LivreTest() { 
 +    } 
 +     
 +    /** 
 +     * Création d'une personne et d'un livre à l'initialisation des tests. 
 +     * Ces éléments ne seront pas modifiées par la suite.  
 +     */ 
 +    @BeforeClass 
 +    public static void setUpClass() { 
 +        alan = new Personne("Turing", "Alan", 1912); 
 +        computing = new Livre("Computing Machinery and Intelligence", 250, alan); 
 +    } 
 +     
 +    /** 
 +     * 
 +     */ 
 +    @AfterClass 
 +    public static void tearDownClass() { 
 +    } 
 +     
 +    /** 
 +     * 
 +     */ 
 +    @Before 
 +    public void setUp() { 
 +    } 
 +     
 +    /** 
 +     * 
 +     */ 
 +    @After 
 +    public void tearDown() { 
 +    } 
 + 
 +    /** 
 +     * Test de getNumLivre de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testGetNumLivre() { 
 +        assertEquals(0, computing.getNumLivre()); 
 +    } 
 + 
 +    /** 
 +     * Test de getNumLivre de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testGetNumLivreTwoBooks() { 
 +        Livre mind = new Livre("mind", 0, alan); 
 +        Livre mind2 = new Livre("mind2", 0, alan); 
 +        assertEquals(mind.getNumLivre()+1, mind2.getNumLivre()); 
 +    } 
 + 
 +    /** 
 +     * Test de getTitre de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testGetTitre() { 
 +        String titreAttendu = "Computing Machinery and Intelligence"; 
 +        assertTrue(computing.getTitre().equals(titreAttendu)); 
 +    } 
 + 
 +    /** 
 +     * Test de getNombreDePages de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testGetNombreDePages() { 
 +        assertEquals(250, computing.getNombreDePages()); 
 +    } 
 + 
 +    /** 
 +     * Test de getAuteur de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testGetAuteur() { 
 +        assertEquals(alan, computing.getAuteur()); 
 +    } 
 + 
 +    /** 
 +     * Test de setTitre de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testSetTitre() { 
 +        Livre mind = new Livre("?", 0, alan); 
 +        mind.setTitre("Mind"); 
 +        assertTrue(mind.getTitre().equals("Mind")); 
 +    } 
 + 
 +    /** 
 +     * Test de setAuteur de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testSetAuteur() { 
 +        Livre ged = new Livre("?", 0, alan); 
 +        Personne douglas = new Personne("Hofstadter", "Douglas", 1945);   
 +        ged.setAuteur(douglas); 
 +        assertTrue(ged.getAuteur().equals(douglas)); 
 +    } 
 + 
 +    /** 
 +     * Test de setNombreDePages de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testSetNombreDePages() { 
 +        Livre mind = new Livre("?", 0, alan); 
 +        mind.setNombreDePages(500); 
 +        assertEquals(500, mind.getNombreDePages()); 
 +    } 
 + 
 +    /** 
 +     * Test de toString de la classe Livre. 
 +     */ 
 +    @Test 
 +    public void testToString() { 
 +        String expStr = "Computing Machinery and Intelligence, Alan Turing, 250p."; 
 +        assertTrue(computing.toString().equals(expStr)); 
 +    } 
 +
 +     
 +</file> 
 +====== Partie 5. La pause s'impose  ====== 
 + 
 +Dans la prochaine partie, vous allez passer à la gestion de la bibliothèque. 
 +Avant cela, il est nécessaire de prendre un peu de recul sur ce que vous avez fait, de vérifier que tout est codé correctement, etc. 
 +Prenez donc quelques minutes pour :  
 +  * Vérifier que les parties cruciales de votre code sont commentées correctement 
 +  * Vérifier que la Javadoc de ce qui est implémenté est correcte et complète 
 +  * Vérifier que vous n'avez pas oublié des tests importants 
 +  * Vérifier que vous respectez bien les bonnes pratiques de programmation (pensez au "refactor" et au "format"), dont 
 +    * l'indentation correcte du code  
 +    * le respect des conventions de nommage des variables  
 +    * le non "mixage" du français et de l'anglais dans votre code   
 +  * Vérifier que tous les tests passent, après les avoir refactorés au besoin 
 +  * Faire un commit de cette version "stable" de votre projet.  
 + 
 +<note tip>Notez que nous ferons un cours sur les bonnes pratiques de programmation... ce petit exercice n'est qu'un avant-goût !</note> 
 +====== Partie 6. Gestion de la bibliothèque  ====== 
 + 
 +Passez maintenant à l'implémentation de la bibliothèque selon la méthode que vous préférez.  
 +Pour mémoire : une bibliothèque est une structure dans laquelle on peut mettre des livres.  
 +La classe ''Bibliotheque'' doit proposer des méthodes pour ajouter un livre, afficher le contenu 
 +de la bibliothèque, rechercher par auteur, et rechercher par titre. Vous devez gérer les exceptions 
 +pour ces deux derniers cas (i.e. quand le livre n'est pas trouvé).  
 + 
 +Essayez d'adopter une démarche TDD pour réaliser cette partie :  
 +  * Création du squelette de la classe 
 +  * Écriture des tests unitaires 
 +  * Complétion de la classe 
 +  * Exécution des tests 
 +  * Refactoring jusqu'à ce que la classe soit complète et fonctionnelle 
 + 
 +<note important>Pensez bien à documenter votre code !</note> 
 + 
 +====== Partie 7. Finalisation du projet  ====== 
 + 
 +A nouveau, prenez le temps d'inspecter votre code, de vérifier qu'il est bien formaté et bien documenté. 
 +Refactorez ce qui nécessite de l'être et vérifiez grâce aux tests que vous n'avez rien cassé.  
 +Vérifiez la couverture de vos tests.  
 + 
 +Lorsque vous aurez terminé votre projet, il ne vous restera plus qu'à mettre à jour quelques éléments :  
 +  * La Javadoc, pour prendre en compte toutes les nouvelles améliorations que vous avez apportées 
 +  * Le diagramme de classe du projet, car il a nécessairement changé un peu depuis la conception initiale 
 + 
 +De plus, si vous ne l'avez pas encore fait, il est probablement temps de pousser votre historique de commits sur un dépôt distant. 
  
-  * Javadoc 
-  * Diagrammes UML