Cette discussion fait suite au topic "Apprendre la POO doucement..." lancé par Supercanard, que je remercie pour son indulgence, puisque je me suis permis de poser quelques questions personnelles à propos de la POO dans son fil de discussion...
Du coup, pour ne pas trop gêner son échange, et pour séparer un peu les sujets afin que chacun puisse les suivre au mieux, j'ai décidé de lancer cette autre discussion à propos des mystères de la POO
Je remercie ici aussi à Cyrano et à Ryle pour leurs réponses déjà très instructives sur l'autre topic... en espérant qu'ils voudront bien venir par ici me prodiguer d'autres conseils et avis...
...
Alors, poursuivant avec mes interrogations sur la pertinence de développer en POO, je tente de me faire une idée, la plus claire possible, du principe et des concepts attachés à la POO, afin de pouvoir choisir, un jours peut-être en toute connaissance de cause, entre la POO et le procédural...
Pour l'instant, à vrai dire, j'ai un peu de mal à percevoir tous les avantages que Ryle a si bien expliqué dans son message, même si je comprends le but, leur application effective me semble encore bien confuse...
Pour illustrer l'ampleur de mon égarement dans le monde impitoyable
...
Il s'agit donc, tout bêtement, d'imaginer un simple carnet de contacts (faut bien commencer avec des choses simples au début... non ?
Méthode POO
<?php
// Class 'contact'
class contact {
var $nom;
var $prenom;
var $telephone;
function contact($leNom, $lePrenom, $leTelephone) {
// Constructeur avec valeurs par defaut pour les proprietes
list ($this->nom, $this->prenom, $this->telephone) = array($leNom, $lePrenom, $leTelephone);
}
function lire() {
// Retourne les infos du contact sur une ligne
return $this->prenom.' '.$this->nom.' - Tél. : '.$this->telephone;
}
function modifier($variable, $valeur) {
// Modifie une info du contact
if (isset($this->$variable)) { $this->$variable = $valeur; }
}
}
// Creation d'un nouveau contact
// Instance '$claude' de la class 'contact' avec des valeurs passees au constructeur
$claude = new contact('François', 'Claude', 'Il pleur...');
echo $claude->lire(); // Affichage : Claude François - Tél. : Il pleur...
echo "\n".'<br /><br />'."\n";
// Modification des certaines infos
$claude->modifier('nom', 'Nougaro');
$claude->modifier('telephone', '');
echo $claude->lire(); // Affichage : Claude Nougaro - Tél. :
?>
Méthode Procédurale<?php
// Fonctions de travail
function contact($nom, $prenom, $telephone) {
// Retourne une nouvelle liste contact
return array('nom'=>$nom, 'prenom'=>$prenom, 'telephone'=>$telephone);
}
function lire($contact) {
// Retourne les infos du contact sur une ligne
return $contact['prenom'].' '.$contact['nom'].' - Tél. : '.$contact['telephone'];
}
function modifier($contact, $variable, $valeur) {
// Modifie une info du contact et retourne la liste mise a jour
if (isset($contact[$variable])) { $contact[$variable] = $valeur; }
return $contact;
}
// Creation d'un nouveau contact
$claude = contact('Françaois', 'Claude', 'Il pleur...');
echo lire($claude); // Affichage : Claude François - Tél. : Il pleur...
echo "\n".'<br /><br />'."\n";
// Modification des certaines infos
$claude = modifier($claude, 'nom', 'Nougaro');
$claude = modifier($claude, 'telephone', '');
echo lire($claude); // Affichage : Claude Nougaro - Tél. :
?>
...Bon, je ne sais pas vous, mais moi j'ai encore du mal à percevoir les avantages de la méthode POO sur une manipulation de ce type...
Alors, ce qui serait sympa et fort instructif, et là je m'adresses aux Pros de la POO, c'est que, à partir de ce simple exemple, on arriver à illustrer le plus clairement possible ce qu'apporterai la POO par rapport au procédural si on voulait améliorer ou étoffer ces codes... vous voyez ?
Bref, s'il y a des courageux volontaires pour éclairer un peu
Merci encore pour vos lumières