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