# Rapport sur le Projet en L3 Informatique - Projet de Mise en Conformité aux Principes SOLID
### Yanis LOUNADI - Luis PARRA
## Introduction
Le projet initial consistait à rectifier un jeu existant ne respectant pas les principes SOLID, tout en implémentant de nouvelles fonctionnalités. Ce rapport documente les différentes phases du projet ainsi que les améliorations significatives apportées.
## Analyse Initiale
Au début du projet, notre binôme et moi avons analysé en détail le code existant pour identifier les violations des principes SOLID. Parmi les problèmes majeurs se trouvait la difficulté d'intégration de nouveaux éléments dans le jeu, en raison d'une structure rigide et de dépendances excessives entre les classes.
## Actions Entreprises
### Rectification des Problèmes de Conception
Pour résoudre les problèmes identifiés, nous avons introduit une interface commune et deux classes abstraites, clarifiant ainsi les responsabilités de chaque classe et permettant une meilleure extensibilité du système. Cette modification a grandement facilité l'ajout de nouveaux éléments, conformément aux principes SOLID.
### Implémentation de Nouvelles Fonctionnalités
En parallèle de la refonte pour respecter les principes SOLID, nous avons intégré de nouvelles fonctionnalités, notamment la création d'un nouveau plateau de jeu pour accueillir les nouveaux éléments et l'amélioration de l'expérience utilisateur.
### Amélioration de l'Interface Utilisateur avec un Menu Dynamique
Une des améliorations significatives a été l'ajout d'un menu adaptatif, modifiant ses options en fonction du nombre et du type d'éléments présents dans le jeu. Ce menu dynamique offre une interface conviviale et intuitive, ajustant automatiquement ses fonctionnalités pour répondre aux besoins du jeu sans nécessiter de modifications supplémentaires.
### Retour aux Principes SOLID
Après l'ajout des fonctionnalités, nous avons effectué une révision complète pour nous assurer que le code respectait pleinement les principes SOLID, en éliminant les énumérations et en minimisant les dépendances inutiles.
### Gestion des Accesseurs et Documentation
Pour assurer la cohérence et la lisibilité du code, nous avons soigneusement géré les accesseurs de tous les attributs et méthodes, en plus de documenter de manière exhaustive l'ensemble du code ajouté ou modifié.
## Conclusion
Ce projet nous a permis d'appliquer les concepts fondamentaux de la programmation orientée objet et de la conception logicielle. En rectifiant les erreurs initiales du code et en introduisant des fonctionnalités nouvelles, nous avons non seulement rendu le jeu conforme aux principes SOLID, mais aussi amélioré sa qualité générale.
Les compétences acquises durant ce projet ont été précieuses pour comprendre et appliquer les bonnes pratiques de développement logiciel.