Giter Club home page Giter Club logo

poo-qcm-refacto's Introduction

QCM POO 📋

🚀 PARTIE 1

📌 Description

Afin d’utiliser la POO PHP dans un cas concret, essayons de refaire la logique du TP quiz avec des classes. Pour cette première partie, pas besoin de base de données (rien ne sera enregistré), mais vous pouvez vous inspirer de la logique de votre TP vanilla pour imaginer les propriétés et les méthodes de ces classes.

Vous aurez besoin de trois classes :

  • Qcm
  • Question
  • Answer

De sortes que :

  • Un QCM regroupe l’ensemble des questions composant le quiz et la méthode qui permet d’afficher toutes les questions dans notre HTML.
  • Une Question contient un corps sous forme de texte et plusieurs Answers ainsi que l’explication de la bonne réponse.
  • Une Answer contient un texte ainsi que l'attribut permettant d’identifier si c’est une bonne réponse.

Vous n’aurez pas besoin de l’héritage. On l’utilise lorsque avec des classes A et B, on peut dire que B est un A. Or ici une réponse n'est pas une question, une question n'est pas un Qcm.

🌳 Arborescence

Vous organiserez vos fichiers ainsi :

  • Un dossier class contenant vos 3 classes
  • Un dossier config qui ne contient rien pour le moment
  • Le fichier index.php à la racine

⚙️ Fonctionnalités requises

  • Ajouter une question
    • Pouvoir ajouter les réponses possibles à une question
    • Pouvoir définir la bonne réponse comme telle
  • Pouvoir définir les explications de la réponse d'une question.

Il doit être possible de faire ceci pour générer un Qcm :

$qcm = new Qcm();
$question1 = new Question('POO signifie :');
$question1->addAnswer(new Answer('Php Orienté Objet'));
$question1->addAnswer(new Answer('ProgrammatiOn Orientée Outil'));
$question1->addAnswer(new Answer('Programmation Orientée Objet', Answer::BONNE_REPONSE));
$question1->addAnswer(new Answer('Papillon Onirique Ostentatoire'));
$question1->setExplications('Sans commentaires si vous avez eu faux :-°');
$qcm->addQuestion($question1);
$qcm->generate();

🚀 PARTIE 2

📌 Description

Vous avez réussi à créer vos 3 classes ? Parfait, essayons d’utiliser PDO dans nos objets maintenant. Voici la liste des modifications à apporter.

📋 QCM

QCM doit devenir notre Manager, il contiendra en plus une instance de PDO dans une private $db qui sera initialisé dans son constructeur. Nous allons créer une nouvelle méthode public getQuestions() qui utilisera une requête PDO pour récupérer les questions de la base de données de votre quiz. La fonction generate() reste inchangée.

❓ Question

Nous devons transformer cette classe en une “Entité”, c'est-à-dire qu’elle doit avoir autant de propriétés qu’il y a de colonnes dans votre table (avec les accesseurs et mutateurs correspondants).

✏️ Answer

Vous allez devoir créer une table answer et extraire les réponses de votre table question. Ensuite, vous devez appliquer le même traitement à cette classe que pour la classe Question (en faire une Entité).

La fonction getQuestions() ne doit que gérer la requête SQL, créez une nouvelle private function qui fonctionnera ainsi :

  • Recevoir en argument le tableau de données récupéré par la requête
  • Instancier les objets Question et Answer avec ce tableau
  • Cette nouvelle fonction sera appelée par getQuestion()

Il doit être possible de faire ceci pour générer un Qcm :

$db = new PDO();
$qcm = new Qcm($db);
$qcm->getQuestions();
$qcm->generate();

⚠️ ATTENTION !

Nous n’implémentons pas la logique du traitement des réponses dans ce TP. Le but de ce TP est de vous familiariser avec une nouvelle logique, donc on y va pas à pas. 🚀

poo-qcm-refacto's People

Contributors

jeremyamichel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.