[POO] Constructeur parent et constructeur fille

Eléphant du PHP | 53 Messages

17 juin 2008, 11:04

Bonjour à tous!

Voilà j'ai une question qui me taraude ...

J'ai fait 2 classes :
  • 1 classe-mère Personne qui prend 3 arguments (nom, prenom, age)
  • 1 classe-fille Etudiant qui prend 5 arguments (nom, prenom, age, liste_matieres, notes)
Dans mon constructeur parent je mets des valeurs par défaut
__construct($nom = "inconnu", $prenom = "inconnu", $age = "inconnu"){

}
Dans mon constructeur fille j'ai donc
__construct($nom, $prenom, $age,$liste_matieres,$notes){

parent::__construct($nom,$prenom,$age);

}
Et je me suis dit : "Comment je fais pour que mon instance fille (Etudiant) puisse être appelée et avoir des valeurs par défaut comme si je faisais

$personne = new Personne();
$etudiant = new Etudiant();

J'ai essayé en mettant des valeurs NULL ou autre mais ça marche pas ... Est-ce un problème de conceptualisation ou un truc qui m'aurait échappé en POO ?

merci de méclairer ! :wink:

ViPHP
ViPHP | 4674 Messages

17 juin 2008, 11:11

Hey :),

Tout simplement en faisant :
class Etudiant extends Personne {

    public function __construct ( $nom = 'inconnu', $prenom = 'inconnu' … ) {

        parent::__construct($nom, prenom, $age);
    }
}
Il faut bien sûr que les paramètres optionnels soient en dernier. J'entends par là que si $notes est obligatoire, il doit être placé avant $nom et $prenom.

Il n'y a pas de conception particulière ici, à moins que tu te sois mélanger les 0 et les 1 avec l'héritage ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 53 Messages

17 juin 2008, 11:21

Hey :),

Tout simplement en faisant :
class Etudiant extends Personne {

    public function __construct ( $nom = 'inconnu', $prenom = 'inconnu' … ) {

        parent::__construct($nom, prenom, $age);
    }
}
Il faut bien sûr que les paramètres optionnels soient en dernier. J'entends par là que si $notes est obligatoire, il doit être placé avant $nom et $prenom.

Il n'y a pas de conception particulière ici, à moins que tu te sois mélanger les 0 et les 1 avec l'héritage ?
Oki c'est bien ce que je pensais, on doit redéfinir les valeurs par défaut comme pour la classe Paren alors...

pas moyen de se servir de l'initialisation par défaut de la classe mère, faut redéfinir

ViPHP
ViPHP | 4674 Messages

17 juin 2008, 11:30

Si Etudiant avait un constructeur identique à celui de Personne, ça ne servirait à rien de le déclarer, donc on n'aurait pas à réécrire les valeurs par défaut. Mais là, tu réécris le constructeur, il est donc différent pour PHP, il ne peut pas associer les paramètres entre eux, c'est impossible. Ça n'est même présent dans aucun langage :?.

Si ton sujet est résolu, pense à le marquer comme tel avant qu'un modo ne viennent de taper sur les doigts ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).