Exercice de POO

📜 Prérequis

Les exercices seront présentés avec du code PHP au besoin, mais rien ne vous empêche
de les effectuer avec d'autre langage orienté objet comme TypeScript, JavaScript, C#.

Le but des exercices présenté ici est de manipuler du code Orienté Objet
avec une difficulté croissante. De mon point de vue, je considère que les bases
du langage
choisi sont plutôt acquises. À savoir :

  • Les variables, constantes
  • Les tableaux (création et manipulation)
  • Les conditions et les boucles
  • Séparer son code dans des fichiers
  • Les fonctions

Si vous avez encore des difficultés avec l'une de ces notions, prenez votre temps
et approfondissez d'abord ces notions.

Point important aussi, le code peut-être écrit en français ou en anglais,
mais il ne faut pas faire un mix des 2. Si vous avez du mal avec l'anglais, je préfère
que tout le code soit écrit en français que d'avoir un code avec un mix bizarre :

1
2
3
$administrateur = new User(); // Non
$administrateur = new Utilisateur(); // Oui
$admin = new User(); // Oui

Sur ces mots je vous laisse à vos exercices et n'hésitez pas à poser vos questions
si vous avez des points de blocage sur le discord.
Nous sommes là au besoin.

💻 Exercice 1

Pour le premier exercice, nous allons créer une classe permettant de représenter
une adresse mail. On peut construire un objet avec l'adresse mail fourni directement
ou en passant chacune des parties, mais il faut vérifier que ce qui est transmis
correspond bien à une adresse mail valide.

Une fois l'objet créer, nous pourrons récupérer l'adresse mail complète, ou seulement l'une
des 2 parties qui compose l'adresse mail. Exemple :

1
2
3
contact.sav@company.com
contact.sav c'est le nom du compte
company.com c'est le nom de domaine

⚠️ Point important

Une fois l'instance créée avec l'adresse mail voulu, il n'est pas possible de modifier
les données. Si on souhaite représenter une autre adresse mail il faut créer une autre instance.

💻 Exercice 2

Maintenant que nous savons comment représenter une adresse mail, nous pourrions représenter
un utilisateur de notre site. Cet utilisateur aurait comme propriété :

  • un identifiant (je vous laisse choisir le type d'identifiant.)
  • un pseudo
  • une adresse mail
  • la date de création de l'utilisateur
  • un moyen de connaitre si ce dernier est un membre normal, un admin ou un banni

En plus de ces propriétés, il serait bien d'avoir la possibilité de bannir un utilisateur
ou de rendre un utilisateur administrateur. On peut bien sûr remettre un utilisateur comme
utilisateur de base. Petite particularité : nous ne pouvons pas mettre administrateur un
utilisateur banni et inversement.

🕹️ Bonus

Si votre classe utilisait des types simples (nombre, chaîne) pour représenter les données
comme l'identifiant de l'utilisateur ou son adresse mail, vous pouvez les changer pour des
objets
. Exemple pour l'adresse mail, vous pouvez réutiliser la classe vu
dans l'exercice 1 et l'utiliser dans votre classe qui représente un utilisateur.

💻 Exercice 3

Pour la création d'un jeu en 3D de construction, le joueur aura la possibilité de poser des
blocks et aura des objets (toute ressemblance à un jeu connu n'est que vrai 😂).

Pour réaliser ça, il faut créer différents objets, qui peuvent être regroupé en plusieurs
catégories et qui seront tous basé sur une classe générique. ⚠️ Certaines classes ne devrait
pas être instantiable.

Voici les classes à créer :

  • Objet
    • Outils
      • Pioche
      • Pelle
    • Nourriture
      • Poulet
      • Porc

Je vous laisse le soin de définir les propriétés qui vous semble intéressante pour vos objets.

💻 Exercice 4

Pour un site e-commerce, nous vous demandons de créer un système de panier.
Ce dernier aura la possibilité d'avoir l'ensemble des produits que la personne souhaite.

Il faudra donc créer une classe permettant la gestion du panier et plusieurs classes
qui seront des produits potentiels que l'on pourra ajouter au panier. Il ne faut pas
autoriser n'importe quel objet dans le panier. Seulement les objets qui ont une méthode
permettant de récupérer le nom du produit et une méthode permettant de récupérer le prix
en centime hors-taxe.

Le panier pourra ajouter ou retirer un produit de la liste.
Il pourra aussi donner le total de tous les produits qu'il contient.

🕹️ Bonus

Y inclure dans le panier une notion de quantité de produits. Si c'est déjà fait, c'est bien
et sinon vous pouvez y réfléchir pour que, sans changer les classes des produits, nous
puissions y ajouter plusieurs fois le même produit.

Edit
Pub: 29 Nov 2023 08:33 UTC
Edit: 29 Nov 2023 08:35 UTC
Views: 179