From e3f63974b4aa5af5943b4078c4774f38cb726658 Mon Sep 17 00:00:00 2001 From: Juan Date: Tue, 4 Jan 2022 09:10:11 +0100 Subject: [PATCH] PHP examples --- b1-algo/php-poo/carre-2.php | 48 +++++++++++++++ b1-algo/php-poo/cercle-2.php | 54 ++++++++++++++++ b1-algo/php-poo/cercle.php | 20 ++++++ b1-algo/php-poo/exemple-utilisateurs.txt | 41 +++++++++++++ b1-algo/php-poo/formes-2.php | 63 +++++++++++++++++++ b1-algo/php-poo/formes.php | 75 +++++++++++++++++++++++ b1-algo/php-poo/objets/formes.php | 102 +++++++++++++++++++++++++++++++ b1-algo/php-poo/polymorphisme.php | 30 +++++++++ b1-algo/php-poo/test.php | 10 ++- 9 files changed, 442 insertions(+), 1 deletion(-) create mode 100644 b1-algo/php-poo/carre-2.php create mode 100644 b1-algo/php-poo/cercle-2.php create mode 100644 b1-algo/php-poo/cercle.php create mode 100644 b1-algo/php-poo/exemple-utilisateurs.txt create mode 100644 b1-algo/php-poo/formes-2.php create mode 100644 b1-algo/php-poo/formes.php create mode 100644 b1-algo/php-poo/objets/formes.php create mode 100644 b1-algo/php-poo/polymorphisme.php diff --git a/b1-algo/php-poo/carre-2.php b/b1-algo/php-poo/carre-2.php new file mode 100644 index 0000000..9eb091a --- /dev/null +++ b/b1-algo/php-poo/carre-2.php @@ -0,0 +1,48 @@ +longeur = $longeur; + $this->largeur = $largeur; + } + + function surface() + { + return $this->longeur * $this->largeur; + } + + function perimetre() + { + return 2 * $this->longeur + 2 * $this->largeur; + } + } + + class carre extends rectangle + { + function __construct($c) + { + parent::__construct($c,$c); + } + } + + $rectangle = new rectangle(4,3); + echo ". Un rectangle de 4 par 3 a un périmètre de "; + echo $rectangle->perimetre(); + echo " et une surface de "; + echo $rectangle->surface(); + + $carre = new carre(4); + echo ". Un carré de côté 4 a un périmètre de "; + echo $carre->perimetre(); + echo " et une surface de "; + echo $carre->surface(); diff --git a/b1-algo/php-poo/cercle-2.php b/b1-algo/php-poo/cercle-2.php new file mode 100644 index 0000000..0761152 --- /dev/null +++ b/b1-algo/php-poo/cercle-2.php @@ -0,0 +1,54 @@ +rayon = $rayon; + } + + function surface() + { + return M_PI * $this->rayon * $this->rayon; + } + + function rayon() + { + return $this->rayon; + } + + function changer_rayon($rayon) + { + if($rayon < 0) + { + echo " Erreur : impossible de définir un cercle de rayon négatif! "; + } + else + { + $this->rayon = $rayon; + } + } +} + +$cercle3 = new cercle(3); +echo $cercle3->surface(); + +echo " "; + +$cercle5 = new cercle(5); +echo $cercle5->surface(); + +echo " "; + +$cercleN = new cercle(2); +echo $cercleN->surface(); + +echo " "; + +$cercleN->changer_rayon(7); +echo $cercleN->surface(); + +echo " "; +$cercleN->changer_rayon(-1); +echo $cercleN->rayon(); \ No newline at end of file diff --git a/b1-algo/php-poo/cercle.php b/b1-algo/php-poo/cercle.php new file mode 100644 index 0000000..3b8021e --- /dev/null +++ b/b1-algo/php-poo/cercle.php @@ -0,0 +1,20 @@ +rayon * $this->rayon; + } +} + +$cercle3 = new cercle(); +$cercle3->rayon = 3; +//Attention la ligne ci-dessous produit une erreur +//$cercle3->abcisse = 22; +echo $cercle3->surface(); \ No newline at end of file diff --git a/b1-algo/php-poo/exemple-utilisateurs.txt b/b1-algo/php-poo/exemple-utilisateurs.txt new file mode 100644 index 0000000..ea38b0e --- /dev/null +++ b/b1-algo/php-poo/exemple-utilisateurs.txt @@ -0,0 +1,41 @@ +// définir un objet abstrait personne qui a un nom et un prenom +objet abstrait personne + var protégée nom, prenom chaînes; + + methode constructeur(n,p) + ceci->nom = n; + ceci->prenom = p; + fin methode + + methode abstraite se_connecter(); +fin objet + +// définir un objet utilisateur héritant de personne +// mais avec un mail et un mot de passe +objet utilisateur étend personne + var protégée mail, mdp chaînes; + + methode constructeur(n,p,mail,mdp) + parent->constructeur(n,p); + ceci->mail = mail; + ceci->mdp = mdp; + fin methode; + + methode se_connecter() + connection(ceci->mail, ceci->mdp) + fin methode; +fin objet; + +// définir un client qui est un utilisateur +// mais avec un numero client +objet client étend utilisateur + var privée numero; + methode constructeur(n,p,mail,mdp, num) + parent->constructeur(n,p,mail,mdp); + ceci->numero = num; + fin methode; +fin objet; + +// tous doivent pouvoir se connecter, +// pour la connection on a à disposition la fonction externe : +// connection(mail, motdepase) diff --git a/b1-algo/php-poo/formes-2.php b/b1-algo/php-poo/formes-2.php new file mode 100644 index 0000000..6b3de34 --- /dev/null +++ b/b1-algo/php-poo/formes-2.php @@ -0,0 +1,63 @@ +longeur = $longeur; + $this->largeur = $largeur; + } + + function surface() + { + return $this->longeur * $this->largeur; + } + + function perimetre() + { + return 2 * $this->longeur + 2 * $this->largeur; + } + } + + class triangle_rectangle extends forme + { + protected $hauteur; + protected $base; + + function __construct($h, $b) + { + $this->hauteur = $h; + $this->base = $b; + } + + function hypothenuse() + { + return sqrt($this->hauteur*$this->hauteur + $this->base*$this->base); + } + + function surface() + { + return ($this->hauteur * $this->base) / 2; + } + + function perimetre() + { + return $this->hauteur + $this->base + $this->hypothenuse(); + } + } + + $triangle_rectangle = new triangle_rectangle(4,3); + echo ". Un triangle rectangle de 4 par 3 a un périmètre de "; + echo $triangle_rectangle->perimetre(); + echo " une hypothénuse de "; + echo $triangle_rectangle->hypothenuse(); + echo " et une surface de "; + echo $triangle_rectangle->surface(); \ No newline at end of file diff --git a/b1-algo/php-poo/formes.php b/b1-algo/php-poo/formes.php new file mode 100644 index 0000000..62a3bd7 --- /dev/null +++ b/b1-algo/php-poo/formes.php @@ -0,0 +1,75 @@ +rayon = $rayon; + } + + function surface() + { + return M_PI * $this->rayon * $this->rayon; + } + + function perimetre() + { + return M_PI * $this->rayon * 2; + } + } + + class rectangle extends forme + { + protected $longeur; + protected $largeur; + + function __construct($longeur, $largeur) + { + $this->longeur = $longeur; + $this->largeur = $largeur; + } + + function surface() + { + return $this->longeur * $this->largeur; + } + + function perimetre() + { + return 2 * $this->longeur + 2 * $this->largeur; + } + } + + class carre extends rectangle + { + function __construct($cote) + { + $this->longeur = $cote; + $this->largeur = $cote; + } + } + + $cercle = new cercle(3); + echo "Un cercle de rayon 3 a un périmètre de "; + echo $cercle->perimetre(); + echo " et une surface de "; + echo $cercle->surface(); + + $rectangle = new rectangle(4,3); + echo ". Un rectangle de 4 par 3 a un périmètre de "; + echo $rectangle->perimetre(); + echo " et une surface de "; + echo $rectangle->surface(); + + $carre = new carre(4); + echo ". Un carré de côté 4 a un périmètre de "; + echo $carre->perimetre(); + echo " et une surface de "; + echo $carre->surface(); diff --git a/b1-algo/php-poo/objets/formes.php b/b1-algo/php-poo/objets/formes.php new file mode 100644 index 0000000..ea92ff7 --- /dev/null +++ b/b1-algo/php-poo/objets/formes.php @@ -0,0 +1,102 @@ +rayon = $rayon; + } + + function surface() + { + return M_PI * $this->rayon * $this->rayon; + } + + function perimetre() + { + return M_PI * $this->rayon * 2; + } + } + + class rectangle extends forme + { + protected $longeur; + protected $largeur; + + function __construct($longeur, $largeur) + { + $this->longeur = $longeur; + $this->largeur = $largeur; + } + + function surface() + { + return $this->longeur * $this->largeur; + } + + function perimetre() + { + return 2 * $this->longeur + 2 * $this->largeur; + } + } + + class carre extends rectangle + { + function __construct($cote) + { + $this->longeur = $cote; + $this->largeur = $cote; + } + + function type() + { + return "Carré"; + } + } + + class triangle_rectangle extends forme + { + protected $hauteur; + protected $base; + + function __construct($h, $b) + { + $this->hauteur = $h; + $this->base = $b; + } + + function hypothenuse() + { + return sqrt($this->hauteur*$this->hauteur + $this->base*$this->base); + } + + function surface() + { + return ($this->hauteur * $this->base) / 2; + } + + function perimetre() + { + return $this->hauteur + $this->base + $this->hypothenuse(); + } + + function type() + { + return "Triangle Rectangle"; + } + } diff --git a/b1-algo/php-poo/polymorphisme.php b/b1-algo/php-poo/polymorphisme.php new file mode 100644 index 0000000..10ac26c --- /dev/null +++ b/b1-algo/php-poo/polymorphisme.php @@ -0,0 +1,30 @@ +type(); + echo "\n périmètre de la forme ".$i." : "; + echo $tdf[$i]->perimetre(); + echo "\n surface de la forme ".$i." : "; + echo $tdf[$i]->surface(); + } + if($tdf[$i] instanceof triangle_rectangle) + { + echo "\n hypothenuse de la forme ".$i." : "; + echo $tdf[$i]->hypothenuse(); + } + } \ No newline at end of file diff --git a/b1-algo/php-poo/test.php b/b1-algo/php-poo/test.php index a9bede2..b300b23 100644 --- a/b1-algo/php-poo/test.php +++ b/b1-algo/php-poo/test.php @@ -1,2 +1,10 @@