Créer et instancier une classe - Classe Complexe
Objectif :
- Créer une classe php
- Définir les propriétés et méthodes d’une classe.
- Définir un constructeur.
- Instancier la classe.
Énoncé :
- Écrire une classe Complexe permettant de représenter des nombres complexes.
Note
Un nombre complexe est un nombre qui peut s'écrire sous la forme :
Z = PartieRéelle + PartieImaginaire * i
Où PartieRéelle et PartieImaginaire sont des nombres réels et i un nombre imaginaire tel que i²=-1.
Calcul avec des nombres complexes :
Soit les deux nombres complexes suivants : z1=a+ib et z2=x+iy .
Addition : z1+z2=(a+x)+i*(b+y)
Soustraction : z1-z2=(a-x)+i*(b-y)
Produit : z1*z2= (a*x)-(b*y)+i*(x*b+a*y)
Division : z1/z2=((a*x+b*y)/(x2+y2)) +i *((b*x-a*y)/(x2+y2))
- Définir les méthodes d’accès aux attributs de la classe.
- Définir un constructeur d’initialisation pour la classe.
- Ajouter les méthodes suivantes :
Ajouter(Complexe) : Elle permet de renvoyer le nombre complexe obtenu en ajoutant au nombre en cours un nombre complexe passé en argument.
Soustraire(Complexe)
Multiplier(Complexe).
Diviser(Complexe).
la méthode magique __toString() : qui permet de représenter le nombre complexe sous la forme : a+b*i.
- Écrire un script permettant de tester la classe Complexe :
Exemple d’exécution :
le premier nombre complexe est :
3+1*I
le deuxieme nombre complexe est :
1+2*I
L'Addition des deux nombres renvoie :
4+3*I
La soustraction des deux nombres renvoie :
2-1*I
La multiplication des deux nombres renvoie :
1+7*I
La division des deux nombres renvoie :
1-0.2*I
Script php de la classe Complexe : par convention on enregistre ce script avec l’extension ".class.php" :
<?php class Complexe { private $reel; private $im; //constructeur public function __construct($r, $im) { $this->reel = $r; $this->im = $im; } //les getters et les setters public function set_reel($reel){ $this->reel = $reel; } public function get_reel(){ return $this->reel; } public function set_im($im){ $this->im = $im; } public function get_im(){ return $this->im; } //La fonction Ajouter public function ajouter(Complexe $complexe) { $reel=$this->reel+$complexe->reel; $imagin=$this->im+$complexe->im; return new Complexe($reel,$imagin); } public function soustraire(Complexe $complexe) { $reel=$this->reel-$complexe->reel; $imagin=$this->im-$complexe->im; return new Complexe($reel,$imagin); } public function multiplier(Complexe $complexe) { $reel=($this->reel * $complexe->reel)-($this->im * $complexe->im); $imagin=($this->reel * $complexe->im)+($this->im * $complexe->reel); return new Complexe($reel,$imagin); } public function diviser(Complexe $complexe) { $fract=pow($complexe->reel,2)+pow($complexe->im,2); $reel=(($this->reel * $complexe->reel)+($this->im * $complexe->im))/$fract; $imagin=($this->im * $complexe->reel)-($this->reel * $complexe->im)/$fract; return new Complexe($reel,$imagin); } public function __toString() { if($this->im>=0) return $this->reel."+".$this->im."*I"; else return $this->reel.$this->im."*I"; } } ?>
Script php de test de la classe complexe :
<?php include_once("Complexe.class.php"); $c1 = new Complexe(3,1); $c2 = new Complexe(1,2); echo "<p> le premier nombre complexe est :</p>"; echo $c1;//Appel de la fonction __toString echo "<p> le deuxieme nombre complexe est :</p>"; echo $c2; echo "<p>L'Addition des deux nombres renvoie :</p>"; echo $c1->ajouter($c2) ;//Appel de la fonction __toString de l'objet resultat echo "<p>La soustraction des deux nombres renvoie :</p>"; echo $c1->soustraire($c2) ; echo "<p>La multiplication des deux nombres renvoie :</p>"; echo $c1->multiplier($c2) ; echo "<p>La division des deux nombres renvoie :</p>"; echo $c1->diviser($c2) ;