Sie sind auf Seite 1von 12

Rapport de projet

CPOA : Projet Refactoring

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


1
Table des matières
1. Notre équipe 3
2. Comment lancer le programme ? 3
3. Refactoring 5
Patron Singleton 5
Extrait du Patron Singleton 5
Pourquoi le patron Singleton ? 5
Patron Composite 6
Extrait du Patron Composite 6
Patron Factory 8
D’autres Patron … 9
4. Tests 10
Listes des test ajoutés 10
5. Les améliorations ajoutés 11
Affichage des commandes au lancement 11
Messages d’erreurs 11
6. Critères d'évaluation 12
7. Conclusion 12

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


2
1. Notre équipe

- BEZIAT Maxime
- BARBE Matthieu

2. Comment lancer le programme ?

Se rendre sur : https://github.com/IUT-Blagnac/cpoa-projet2020-matthieu-maxime

Cliquez sur le bouton « Code » puis « Download ZIP » (cf. ci-dessous)

Une fois téléchargé le « l’extraire grâce à un logiciel tel que « Winrar » ou « 7-Zip ».

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


3
Une fois extrait, ouvrir le dossier : cpoa-projet2020-matthieu-maxime-master

Et ouvrir le dossier : application

Allez sur la barre de recherche en haut et taper : cmd

Une fenêtre de commande s’ouvre

Taper : java -jar cpoa.jar

Des lignes s’affichent, permettant d’utiliser le programme.

- show : permet d’afficher la liste des projets créer


- add project : ajoute un projet
- add tache : ajoute une tache au projet
- check : coché le projet
- uncheck : décoché le projet
- help : fenêtre des commandes disponible
- quit : quitter le programme

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


4
3. Refactoring

Patron Singleton

Extrait du Patron Singleton

//patron singleton
private static final ActionListTaskList uniqueInstance = new
ActionListTaskList();
public static ActionListTaskList getInstance() {
return uniqueInstance;
}

Pourquoi le patron Singleton ?

L’objectif du patron “singleton” est de nous assurer qu’une seule instance soit créée. Par exemple, un
seul fichier système peut être créé, ainsi qu’un seul gestionnaire de fenêtres.

Cela nous permet d’éviter de créer plusieurs processus.

Ce patron de conception, en plus de sa facilité à être implémenté, va nous permettre d’avoir un


accès contrôlé à une instance unique, être plus flexible et d’avoir un nombre variable d’instances.

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


5
Patron Composite

Extrait du Patron Composite

package application.action;

import java.util.List;

import com.codurance.training.tasks.BlocNote;
import com.codurance.training.tasks.Projet;
import com.codurance.training.tasks.Tache;

import application.GenericAction;

public class ActionAddTask extends GenericAction<Object> {

private String name = "add tache";

@Override
public void execute(Object e) throws Exception {
Projet p = null;

String nomP = ((BlocNote) e).getCurrentCommand().split("


")[2];
String contenuT = ((BlocNote)
e).getCurrentCommand().split(" ")[3];
Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat
6
for(Projet projet : ((BlocNote)
e).getListeProjets()) {
if(projet.getName().equals(nomP)) {
p = projet;
} else {
p = null;
}
}

if (p == null) {
System.out.printf("Could not find a project with the
name \"%s\".", ((Projet) e).getName());
System.out.println();
return;
}

Tache t = new Tache(((BlocNote) e).getNumTache(), contenuT,


false);

((BlocNote) e).setNumTache();

((BlocNote) e).ajouterTache(p,t);
}

@Override
public String actionMessage() {
return name;
}

@Override
public int getNbParam() {
return 2;
}
}

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


7
Pourquoi le patron Composite ?

Le patron composite est assez difficile à mettre en œuvre pour ceux qui nous ont fait perdre
beaucoup de temps de développement et d’optimisation au début.

Cependant, grâce à ce patron, le programme à une structure d’objets fortement imbriqués, à un


code assez simple et facile à comprendre et surtout cela permet une bonne capacité d’expansion.

L’ajout d’action se fait très simplement une fois que le patron composite est implémenté.

Ici, on va transformer notre menu en plusieurs objets qui nous permettent de modifier les
commandes ou d’en ajouter et supprimer très facilement.

Patron Factory

On aurait pu dans notre programme ajouter le Patron Factory afin de prévoir les futures
modifications de notre application puisque cela nous aurait laissé le choix aux sous-classes des
classes à instancier.

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


8
D’autres Patron …

Au cours de ce projet, nous avons aussi vu différent Patron de Conception sur Internet que l’on n’a
pas vu en cours (Patron Commande, patron de Méthode, patron Monteur, …).

Ces différents patrons tels que le patron Commande aurait pu être ajouté dans notre application afin
d'améliorer la flexibilité et la simplicité de notre code.

Patron Commande

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


9
4. Tests

Listes des test ajoutés

@Test
public void testAddTask() {
ActionAddTask actionAddTask = new ActionAddTask();
System.out.println(actionAddTask.getNbParam());
assertEquals(actionAddTask.getNbParam(),2);
}

@Test
public void testAddProject() {
ActionAddProject actionAddProject = new
ActionAddProject();
System.out.println(actionAddProject.getNbParam());
assertEquals(actionAddProject.getNbParam(),1);
}

@Test
public void testCheck() {
ActionCheck actionCheck = new ActionCheck();
System.out.println(actionCheck.getNbParam());
assertEquals(actionCheck.getNbParam(),1);
}

@Test
public void testUncheck() {
ActionUncheck actionUncheck = new ActionUncheck();
System.out.println(actionUncheck.getNbParam());
assertEquals(actionUncheck.getNbParam(),1);
}

@Test
public void testHelp() {
ActionHelp actionHelp = new ActionHelp();
System.out.println(actionHelp.getNbParam());
assertEquals(actionHelp.getNbParam(),0);
}

@Test
public void testShow() {
ActionShow actionShow = new ActionShow();
System.out.println(actionShow.getNbParam());
assertEquals(actionShow.getNbParam(),0);
}

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


10
5. Les améliorations ajoutés

Affichage des commandes au lancement

Pour simplifier le programme, nous avons ajouté au lancement du programme la liste des
commandes qu’il est possible de lancer.

Au lancement, la liste des commandes :

Messages d’erreurs

Dans notre version du programme, nous avons aussi mis en place un système de message lorsque
l’utilisateur essaie de cocher, décocher un projet qui ne peut pas exister (avec caractère).

Il y a aussi un message d’erreur si on essaye de cocher ou décocher un projet qui n’a pas été créé.

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


11
6. Critères d'évaluation

Critère A/B/C Commentaire


Pertinence des choix A
Qualité globale du code B
Qualité de la documentation A
Nombre et difficulté A Beaucoup de difficultés surtout
pour le patron Composite.

7. Conclusion
Ce projet de CPOA nous a permis de connaître et comprendre beaucoup de patrons même en dehors
des heures de cours.
Ces Patrons qui peuvent être parfois “durs” à être implémenté ou “simple” permettent aux
programmes d’être plus flexible, maintenable, mais surtout beaucoup plus compréhensible dans
l’ensemble.

Projet CPOA 2021 – Matthieu Barbe | Maxime Béziat


12

Das könnte Ihnen auch gefallen