Rapport final de CPOO

publicité
RAPPORT FINAL DE CPOO
Pierre Rainero
S3T G4
Rapport final : CPOO
Table des matières
TD 1 : Gestionnaire de Bus de messages ................................................................................................. 2
TD 2 : GIT ................................................................................................................................................. 4
TD 3 : Principes SOLID ............................................................................................................................. 5
TD 4 : Réutilisation .................................................................................................................................. 6
TD 5 : Qualité logiciel............................................................................................................................... 7
TD 6 : Digital Home .................................................................................................................................. 9
1
S3T G4 – RAINERO Pierre
Rapport final : CPOO
TD 1 : Gestionnaire de Bus de messages
Durant ce premier TD (seconde séance, nous avons réalisé un Pictionnary UML lors de la
précédente) nous avons dû réaliser un projet java dont l’objectif était de créer un gestionnaire de bus
de messages. Lors de la phase de conception nous nous sommes orienté vers un modèle « Modèle Vue
Controleur », cependant comme demandé nous n’avons pas créé de vue à proprement parler,
l’affichage s’est fait dans la console.
Nous avons découpé le projet en 7 classes (plus une classe « test » pour avoir un main et tester notre
scénario).
Chaque boite contient des messages qui
Comme décrit par le schéma on a une encapsulation possèdent un libelle, une date et une description.
de classes, le controleur possède un attribut de type
« Registre » qui est composé d’un id et d’une arrayList de « Bus », chaque objet Bus est composé d’un
id et d’une arrayList de Boite, de même pour les boites qui elles contiennent les messages.
Nous avons choisi des arrayList pour créer une sorte de sécurité, pour accéder à un message, une boite
ou un bus il faut connaitre son « id caché » (l’entier de l’arrayList) et non son id définit par l’utilisateur
(le string). Cependant nous avons aussi créé un mode administrateur qui lui peut accéder à tous les
messages, boites, bus via les ids (string) :
2
S3T G4 – RAINERO Pierre
Rapport final : CPOO
Résultat :
Compétences : Approfondissement du modèle MVC, sérialisation (via un fichier txt), utilisation de la
classe « Calendar »
3
S3T G4 – RAINERO Pierre
Rapport final : CPOO
TD 2 : GIT
Ce second td a été très rapide (une seul séance). Il a servi d’introduction à « GIT », un
gestionnaire de versions, que nous avons principalement utilisé par la suite en M311 avec M. Syska.
Les éléments ajoutés via le GIT sont visibles et téléchargeables via l’onglet « Dépôt » de la forge unice.
On peut faire divers configuration initiale comme le nom et l’email de la personne qui va commit :
git config --global user.name "Pierre Rainero"
git config --global user.email [email protected]
Ou (M311) utilisé un fichier de configuration préparé à l’avance :
gitconfig.sh
On peut ensuite créer ses répertoires (git init), y ajouter des fichiers (git add), visualiser les
différences d’un commit à l’autre (le plus gros intérêt selon moi : git diff), etc…
On peut également détailler notre dépôt en créant des branches, durant le td nous testé cette
fonctionnalité via une branche végétarienne d’un menu d’un restaurant (git checkout -b vegetarien).
Après avoir « forcé » la mise à jours sur la forge (M311) :
git push origin master
← doit être précédé d’un commit évidemment
On peut faire l’opération inverse et récupérer ce qui a été déposé auparavant :
git clone https://[email protected]/2015-groupe-rainero-goua
Compétences : Découverte d’un gestionnaire de versions (GIT), très utile pour les projets en groupe
(production d’application et projet tuteuré par exemple).
4
S3T G4 – RAINERO Pierre
Rapport final : CPOO
TD 3 : Principes SOLID
Ce troisième TD avait pour objectif de modéliser des associations entres des voitures en
respectant les principes SOLID. Nous avons réalisé un diagramme de classes sous Visual Paradigme, ce
dernier a ensuite subis une correction de la part de notre encadrant de TD avant que nous
commencions le code :
Exemples de code :
Compétences : Principes SOLID : Une classe doit avoir une unique responsabilité, elle doit être
ouverte à l'extension mais fermée à la modification. Faire plusieurs interfaces spécifiques pour chaque
client plutôt qu'une seule interface générale et inverser les dépendances
5
S3T G4 – RAINERO Pierre
Rapport final : CPOO
TD 4 : Réutilisation
Durant ce TD nous n’avons pas codé à proprement parlé, le code nous a été fournis. Tous le
TD reposait d’ailleurs sur ce point, la réutilisation des codes. Il s’agissait d’un ensemble de packages
servant à la modélisation d’un réseau social :
Nous avons donc testé et essayé de comprendre le code avant d’utiliser le pattern Adapter puis
Observer.
Compétences : Adaptabilité, importance de rendre son code compréhensible par un tiers, première
utilisation des pattern Adapter et Observer.
6
S3T G4 – RAINERO Pierre
Rapport final : CPOO
TD 5 : Qualité logiciel
Cette fois encore nous avons reçu le code dès le début de la séance sans l’avoir écrit-nous
même. On nous a présenté des outils pour optimiser nos codes, respecter les conventions, etc….
 Les métriques : nombre de lignes de code, le nombre de classes et d’interfaces, complexité
cyclomatique, etc…

CheckStyle : erreurs de style (liste ou graphique), erreurs de violations, etc…
7
S3T G4 – RAINERO Pierre
Rapport final : CPOO

Coverage : permet de mesurer la qualité des codes.
 PMD : erreurs, code inutile, les imbrications trop complexes, duplications, etc…
Rapport :
src/dessinPk/Dessin.java:1:
src/dessinPk/Dessin.java:16:
src/dessinPk/Dessin.java:22:
src/dessinPk/Dessin.java:22:
src/dessinPk/Dessin.java:25:
src/dessinPk/Dessin.java:25:
src/dessinPk/Dessin.java:25:
src/dessinPk/Dessin.java:26:
src/dessinPk/Dessin.java:26:
Package name contains upper case characters
headerCommentRequirement Required
Use explicit scoping instead of the default package private level
fieldCommentRequirement Required
Avoid variables with short names like p
Use explicit scoping instead of the default package private level
fieldCommentRequirement Required
Avoid variables with short names like g
Use explicit scoping instead of the default package private level
etc….
8
S3T G4 – RAINERO Pierre
Rapport final : CPOO
TD 6 : Digital Home
Ce dernier TD avait pour finalité de recréer une maison numérique avec ses différents
dispositifs ainsi qu’un tableau de contrôle permettant de visualiser les valeurs relevées par tous les
capteurs de la maison (fournis). L’essentiel du problème venait du choix du pattern, même s’il est vrai
qu’un modèle MVC est passe partout et qu’on souvent tenté de l’utiliser il n’est pas toujours optimal,
c’est pourquoi après analyse des avantages et inconvénients qu’apporte chaque pattern nous avons
choisis celui qui nous semblait le plus adapté :
Quelques tests finaux :
9
S3T G4 – RAINERO Pierre
Rapport final : CPOO
Compétences : Utilisations de toutes connaissances vues auparavant (coverage y compris) dans un
seul td (de 2 « grosses » séances).
10
S3T G4 – RAINERO Pierre
Téléchargement