Séance G : Synthèse des concepts
OBJECTIFS :
Construire des classes mettant en œuvre les concepts d’interface, d’héritage et d’encapsulation.
Être capable d’écrire seul(e) du code PHP en POO
TRAVAIL DEMANDE
Codez en PHP les classes suivantes en les regroupant dans un fichier nommé individu.php.
** Ci-dessous le fichier seance8.php **
<?php
/*---------------------------------------------------------
Application : tp1.php
Module M3203 - MMI 2ème année
IUT de Troyes
---------------------------------------------------------*/
// Classe Individu
require('individu.php');
/* Les lignes de code de chaque instance ont été placées en
commentaires afin de tester progressivement votre code
Travail à faire : supprimez les commentaires et testez chaque
instanciation.
*/
/*==========================================
Une instance de la classe Etudiant
========================================== */
echo '-------------Début etape 1--------------------------------<br>';
// Nombre d'individus
echo Etudiant::getNombreIndividus();
// Instanciation
$individu1=new Etudiant('Durand','Paul','homme','1234567890A','GEA',16);
// Paul Durand se présente
echo $individu1->sePresente().'<br>';
// Paul Durand travaille 35 heures
echo $individu1->travailler(35);
// Paul Durand prend 2 jours de congés
echo $individu1->reposer(2);
// Paul Durand a travaille 30 heures
echo $individu1->travailler(30);
// Paul Durand prend 2 jours de congés
echo $individu1->reposer(1);
// Déclaration du salaire de Paul Durand
echo $individu1->declareSalaire();
// Remise à zéro du salaire de Paul Durand
$individu1->RAZrevenu();
// Vérification du salaire de Paul Durand après Remise à zéro
echo $individu1->declareSalaire();
// Affichage de l'âge de Paul Durand
echo $individu1->getAge();
// Modification de l'âge de Paul Durand
$individu1->setAge(17);
// Affichage de l'âge de Paul Durand
echo $individu1->getAge();
// Paul Durand a travaille 10 heures
echo $individu1->travailler(10);
// fin de cette partie
echo '---------------fin etape 1--------------------------------<br>';
/*==========================================
Une autre instance de la classe Etudiant
========================================== */
echo '-------------Début etape 2--------------------------------<br>';
// Instanciation
$individu2=new Etudiant('Fraichi','Sarah','femme','9012345678B','TC',18);
// Sarah Fraichi se présente
echo $individu2->sePresente().'<br>';
// Sarah Fraichi travaille 20 heures
echo $individu2->travailler(20);
// Déclaration du salaire de Sarah Fraichi
echo $individu2->declareSalaire();
// Nombre d'individus
echo Etudiant::getNombreIndividus();
// Fin de cette partie
echo '---------------fin etape 2--------------------------------<br>';
/*==========================================
Une instance de la classe Individu
========================================== */
echo '-------------Début etape 3--------------------------------<br>';
//$individu3=new individu('Palenor','Hubert','homme');
// Hubert Palenor se présente
//$individu3->sePresente().'<br>';
// Fin de cette partie
echo '---------------fin etape 3--------------------------------<br>';
/*==========================================
Une instance de la classe Etudiant_src
========================================== */
echo '-------------Début etape 4--------------------------------<br>';
// Instanciation
$individu4=new Etudiant_mmi('Hontoi','Franck','homme','6789012345C',18,'Web avancé');
// Franck Hontoi se présente
echo $individu4->sePresente().'<br>';
// Franck Hontoi travaille 35 heures
echo $individu4->travailler(35);
// Franck Hontoi déclare ses revenus
echo $individu4->declareSalaire();
// Franck Hontoi obtient sa note d'examen
echo $individu4->evaluer(11);
// Quelle est l'option de Franck Hontoi
echo $individu4->quelleOption();
// Franck Hontoi change d'option
echo $individu4->ChangerOption('Conception graphique');
// Quelle est l'option de Franck Hontoi
echo $individu4->quelleOption();
// Nombre d'individus
echo Etudiant::getNombreIndividus();
unset($individu4);
echo Etudiant::getNombreIndividus();
echo '---------------fin etape 4--------------------------------<br>';
?>
Vous pouvez bien sûr commenter des éléments dans le fichier seance8.php pour effectuer vos tests. A la fin de la séance, l'ensemble des appels du fichier doivent fonctionner.
Classe Individu et interface iHumain
La classe Individu est une classe abstraite qui implémente l’interface iHumain qui définit les méthodes
travailler($nombreheures)
reposer($nombrejours)
sePresente()
Les attributs
Les 5 propriétés protected de la classe Individu sont :
$nom
: valeur alphanumérique$prenom
: valeur alphanumérique$genre
: valeur alphanumérique (homme ou femme, autre)$revenu
: revenu en euros, valeur numérique calculée valant 0 par défaut$conges
: nombre de congés, valeur numérique calculée valant 0 par défaut
Les méthodes
La méthode
travailler($nombreheures)
permet de calculer le revenu cumulé d’un individu sur la base horaire de 9.5 euros. A chaque appel de cette méthode, on cumulera le salaire calculé au salaire précédent.La méthode
reposer($nombrejours)
permet de cumuler le nombre de jours de congés pris. (A chaque appel de la méthode, on cumule les congés)La méthode
sePresente()
retourne un texte avec le nom et le prénom de l’individuLa méthode
RAZrevenu()
permettra de remettre à zéro le revenu.La méthode
RAZconges()
permettra de remettre à zéro le nombre de jours de congésLa méthode
declareSalaire()
retournera un texte indiquant le nom, le prénom et le revenu de l’individus
Codez cette classe
Classe Etudiant
La classe Etudiant est une classe qui hérite de la classe Individu
Les attributs
Les propriétés protected de la classe Etudiant sont :
$numetudiant
: 10 chiffres et une lettre$age
: valeur numérique$formation
: valeur alphanumérique$resultat
: valeur alphanumérique calculée lors de l’évaluation (méthode évaluer) qui prendra deux valeurs possibles ‘reçu(e)’ ou ‘ajourné(e)’
Cette classe possède également un attribut propre à la classe $nbetudiants
qui permettra de connaître le nombre d’instances créées.
Les méthodes
La méthode
travailler($nombreheures)
permet de calculer le revenu cumulé d’un(e) étudiant(e) sur la base horaire de 9.5 euros. Mais ce tarif horaire sera minoré de 20% si l’étudiant(e) est âgé(e) de moins de 18 ans. A chaque appel de cette méthode, on cumulera le salaire calculé au salaire précédent.La méthode
evaluer($noteExamen)
retournera un texte précisant le nom, le prénom et l’indication reçu(e) ou ajourné(e) à l’examen selon la note. Pour être reçu, il faut avoir la moyenne.D’autres méthodes sont à créer : observez le code du fichier seance8.php (ci-dessus) pour les repérer.
Codez cette classe
Classe Etudiant_mmi
La classe Etudiant_mmi hérite de la classe Etudiant. Il n’est pas possible d’hériter de la classe Etudiant_mmi.
Les attributs
Une propriété privé : $option
. Valeur alphanumérique indiquant le titre de l’option choisie par un(e) étudiant(e) au semestre 4
Les méthodes
La méthode
quelleOption()
retourne un texte indiquant le nom, le prénom et l’option choisieLa méthode
ChangerOption($option)
permet de modifier l’option de l’étudiantLa méthode
sePresente
reprend la méthode initiale et complète le texte par ‘ et je suis en MMI’.
Codez cette classe
Dernière mise à jour