JeuWeb - Crée ton jeu par navigateur
[Réglé] Ajouter des méthodes génériques à chaque classe ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Réglé] Ajouter des méthodes génériques à chaque classe ? (/showthread.php?tid=1907)

Pages : 1 2


RE: Ajouter des méthodes génériques à chaque classe ? - naholyr - 20-10-2007

Oui tout-à-fait

Code PHP :
<?php 
class Mere {
public
$nom = "Maman";
function
a() { echo "a"; }
function
b() { echo "b"; }
function
affiche_nom() { echo $this->nom; }
}

class
Enfant extends Mere { // J'étends Mere, j'ai donc les méthodes a() et b()
function b() { // surcharge d'une méthode de ma classe mère
parent::b(); // j'appelle la version «d'origine» de cette méthode (facultatif)
echo "B"; // et j'ajoute ma sauce à moi
}
function
c() { echo "c"; } // Et j'ajoute une fonction rien qu'à moi
}

class
PetitEnfant extends Enfant { // J'ai toutes les propriétés de Enfant, mais je ne connais pas ma grand-mère
// ce qui signifie que dans mes méthodes je ne peux pas appeler parent::parent::methode() !
function a() {
parent::a(); // J'appelle la version de ma mère, donc de la classe Enfant, en l'occurrence comme Enfant n'a pas
// surchargé cette méthode, c'est directement la version de Mere que j'appelle
echo "c";
}
}

$o = new PetitEnfant;
$o->nom = "Bébé";
$o->a(); // "ac"
$o->b(); // "bB"
$o->affiche_nom(); // "Bébé"



RE: Ajouter des méthodes génériques à chaque classe ? - Sephi-Chan - 20-10-2007

Merci Naholyr pour cette explication détaillée ! Elle donne une réponse pratique (par le code) à ma question initiale. Voici donc un sujet dont je garde la trace pour mon making-of. :p


Sephi-Chan


RE: [Réglé] Ajouter des méthodes génériques à chaque classe ? - Ludvig - 21-10-2007

Salut !

juste en passant (vue que le sujet est [Réglé])

J'ai tilté légèrement sur le

>imaginons 2 fonctions génériques que je voudrais intégrer à plein d'autres classes : isValidName et isValidEmail.

Tu n'a nullement besoin de les hériter dans d'autres classes,
ça peut (et ici je trouve que oui) être même un peu anti-intuitif.


Chaqu'un son style mais si il faut faire "POO" alors moi j'aurais préféré faire d'abord deux classes :
Code PHP :
<?php 
class cValidName
{
private var
$name;
public function
__construct()
{
$name='';
}

SetName($newname);
GetName();
IsNameOk();

...
};
et
Code PHP :
<?php 
class cValidEmail
{
private var
$mail;
public function
__construct()
{
$mail='';
}

SetMail($newmail);
GetMail();
IsMailOk();
...
};

ou même les deux dans un :
Code PHP :
<?php 
class cValid
{
private var
$string;
public function
__construct()
{
$string='';
}

SetString($newstring);

GetString();
IsNameOk();
IsMailOk();

...
};





puis dans ton class DataControl tu rajouts simplement :

Code PHP :
<?php 
class DataControl
{
cValidName Nom1;
cValidEmail Mail1;
cValidName Nom2;
...


}

puis

Code PHP :
<?php 
$account
= new DataControl();
$account ->Nom1->SetName("Ludvig");
if(
$account ->IsNameOk())
{
// ...
}
else
{
echo
'error<br>';
}


Du coup le nom et le mail c'est devenu des Objets propres à eux mêmes.
Ce qui souvent est l'idée derrière le POO.



Enfin je dis ça, j'espère que ça t'aidera a mieux avancer dans le jungle POO ^^



/Lud


RE: [Réglé] Ajouter des méthodes génériques à chaque classe ? - naholyr - 21-10-2007

Oui enfin là ça devient un peu lourd pour finalement pas grand-chose, ce qu'on reproche hélas souvent à la POO Sad


RE: [Réglé] Ajouter des méthodes génériques à chaque classe ? - Ludvig - 25-10-2007

Yup, les langages interprétés (php,java,...) souffrent tous de ce fléau Sad

Vive le C++ (h)