Petit tuto sur les class

Petit tuto sur les class - PHP - Programmation

Marsh Posté le 20-10-2006 à 23:37:25    

Hello  :hello: ,
 
Je me suis fait un petit tuto pour bien apprendre la gestion des class.
 
Jme suis créer un ptit truc pour commander des voitures doccaz.
 
Seulement j'ai un soucis , je n'arrive pas a afficher le montant total de la commande, comment reprendre dynamiquement et pas a la main le total de chaque commande de voiture ?
 

Code :
  1. class vehicule_occasion {
  2.   var $modele;
  3.   var $annee;
  4.   var $voiture;
  5.  
  6.  
  7.   function ajouter($id_voiture,$nombre)
  8.   {
  9.    $this->voiture[$id_voiture] += $nombre;
  10.   }
  11.  
  12.   function calculerPrix($id_voiture)
  13.   {
  14.     $montant = $this->voiture[$id_voiture] * $this->prix[$id_voiture];
  15.     return $montant;
  16.   }
  17.  
  18.   function calculerPrixFinal($total)
  19.   {
  20.     $montant = $this->calculerPrix(0)+$this->calculerPrix(1);
  21.     return $montant;
  22.   }
  23.  
  24.   function afficherCommande($total)
  25.   {
  26.     for($i=0;$i<$total;$i++)
  27.     {
  28.       echo "Voiture : ".$this->modele[$i];
  29.       echo "<br>Voiture : ".$this->annee[$i];
  30.       echo "<br>Nombre commandé : ".$this->voiture[$i];
  31.       echo "<br>Montant Commande : ".$this->calculerPrix($i)." Euros";
  32.       echo "<hr>";
  33.     }
  34.        
  35.         echo "Totale de votre commande : ".$this->calculerPrixFinal($total);   
  36.         echo " Euros<BR>";
  37.   }
  38.    
  39. }
  40. $vehicule = new vehicule_occasion();
  41. $vehicule->modele[0]="Peugeot 405 GRD";
  42. $vehicule->annee[0]="1982";
  43. $vehicule->prix[0]=4890;
  44. $vehicule->ajouter(0,4);
  45. $vehicule->modele[1]="Peugeot 205 GTi";
  46. $vehicule->annee[1]="1988";
  47. $vehicule->prix[1]=3456;
  48. $vehicule->ajouter(1,1);
  49. $nombre_produit = 2;
  50. $vehicule->afficherCommande($nombre_produit);

Reply

Marsh Posté le 20-10-2006 à 23:37:25   

Reply

Marsh Posté le 21-10-2006 à 00:22:28    

Code :
  1. function afficherCommande($total)
  2.   {
  3.     for($i=0;$i<$total;$i++)
  4.     {
  5.       echo "Voiture : ".$this->modele[$i];
  6.       echo "<br>Voiture : ".$this->annee[$i];
  7.       echo "<br>Nombre commandé : ".$this->voiture[$i];
  8.       echo "<br>Montant Commande : ".$this->calculerPrix($i)." Euros";
  9.       $montant_total += $this->calculerPrix($i)
  10.       echo "<hr>";
  11.     }
  12.        
  13.         echo "Totale de votre commande : ".$montant_total;   
  14.         echo " Euros<BR>";
  15.   }
  16.    
  17. }


Voila la solution la plus simple et dynamique


Message édité par Alisteroid le 21-10-2006 à 00:28:46
Reply

Marsh Posté le 21-10-2006 à 00:28:27    

Code :
  1. function calculerPrix($id_voiture)
  2.   {
  3.     $montant = $this->voiture[$id_voiture] * $this->prix[$id_voiture];
  4.     calculerPrixFinal($montant);
  5.     return $montant;
  6.   }
  7.  
  8.   function calculerPrixFinal($montant=null)
  9.   {
  10.     if ($montant !=null)           
  11.         $montant_total += $montant;
  12.     else return $montant_total;
  13.   }
  14.  
  15.   function afficherCommande($total)
  16.   {
  17.     for($i=0;$i<$total;$i++)
  18.     {
  19.       echo "Voiture : ".$this->modele[$i];
  20.       echo "<br>Voiture : ".$this->annee[$i];
  21.       echo "<br>Nombre commandé : ".$this->voiture[$i];
  22.       echo "<br>Montant Commande : ".$this->calculerPrix($i)." Euros";
  23.       echo "<hr>";
  24.     }
  25.        
  26.         echo "Totale de votre commande : ".$this->calculerPrixFinal();   
  27.         echo " Euros<BR>";
  28.   }
  29.    
  30. }


autre solution :D
Je débute aussi en objets php :D


Message édité par Alisteroid le 21-10-2006 à 00:30:23
Reply

Marsh Posté le 21-10-2006 à 11:41:02    

sebondus > Merci beaucoup :)

Reply

Marsh Posté le 21-10-2006 à 11:47:49    

De rien ;)

Reply

Marsh Posté le 27-10-2006 à 09:49:00    

Bon j'en ai refais un pour faire un systeme simple de calcul de chiffres seulement ca ne fonctionne pas, le total des 2 chiffres n'apparait pas.
 
Si qqun a une solution et meme des bons tutoriaux sur les classes  :whistle:  
 

Code :
  1. <?
  2. class Chiffre {
  3.     function calculerTOTAL($nombre=null)
  4.      {
  5.         if ($nombre!=null)           
  6.           $total += $nombre;
  7.         else
  8.           return $total;
  9.      }
  10.    
  11.      function ajouter($nombre) {
  12.         $this->nombreTo[$nombre] += $nombre;
  13.         $chif = $this->nombreTo[$nombre];
  14.         calculerTOTAL($chif);
  15.     }
  16.    
  17.     function view() {
  18.         echo count($this->nombreTo).' chiffres<br>';
  19.         echo $this->calculerTOTAL();
  20.     }
  21. }
  22. $calcul = new Chiffre(); 
  23. $calcul->ajouter(584);
  24. $calcul->ajouter(24424);
  25. $calcul->view();
  26. ?>

Reply

Marsh Posté le 27-10-2006 à 09:52:02    

bin $total est une variable locale à la fonction calculerTOTAL, fonction qui de surcroit ne retourne rien si $nombre n'est pas null ou retourne null si $nombre est null.
Donc à quoi t'attends-tu exactement?

Reply

Marsh Posté le 27-10-2006 à 10:01:21    

J'aimerai incrémenter le nombre pour chaque ajout pour ensuite derriere afficher le total
 
 
Tu ferais comment ?

Reply

Marsh Posté le 27-10-2006 à 10:06:11    

Je crois qu'il y a un truc qui ne va pas lorsque tu appelle ta classe. Ta classe telle que tu l'a défini gére qu'un véhicule et non pas un ensemble donc si tu as deux voiture doit faire ceci.

Code :
  1. $Vehicule = array();
  2. $Vehicule[0] = new MaClasse()
  3. $Vehicule[0]->Modele = '....';
  4. ...
  5. $Vehicule[1] = new MaClasse()
  6. $Vehicule[1]->Modele = '....';
  7. ...


 
 


Message édité par Berceker United le 27-10-2006 à 10:08:19
Reply

Marsh Posté le 27-10-2006 à 10:10:38    

berceker u nited > ma class sur les voitures marche sans soucis

Message cité 1 fois
Message édité par nycius le 27-10-2006 à 10:10:54
Reply

Marsh Posté le 27-10-2006 à 10:10:38   

Reply

Marsh Posté le 27-10-2006 à 10:57:49    

nycius a écrit :

J'aimerai incrémenter le nombre pour chaque ajout pour ensuite derriere afficher le total
Tu ferais comment ?


Pour commencer, apprendre "l'objet" en php4 c'est comme apprendre à planter des clous avec une agrapheuse, c'est pas la meilleure façon ... Je te conseillerais d'au moins faire ça en php5!
Ensuite ta classe est mal nommée, il ne s'agit pas d'un chiffre mais d'un nombre. De surcroît tu ne lui a déclaré aucun attribut c'est n'importe quoi. Donc refaite en php5, ça donnerait quelque chose dans le genre:

Code :
  1. class Nombre {
  2.   private $valeur;
  3.   function __construct( $nb=0){
  4.     $this->valeur = $nb;
  5.   }
  6.   public function ajouter( $nb){
  7.     if ( is_int($nb) ){
  8.       $this->valeur += $nb;
  9.     } else if (is_object($nb) && get_class($nb)=='Nombre'){
  10.       $this->valeur += $nb->valeur;
  11.     }
  12.   }
  13.   function __toString(){
  14.     return (string)$this->valeur;
  15.   }
  16. }


 

nycius a écrit :

berceker u nited > ma class sur les voitures marche sans soucis


c'est pas parce qu'elle "marche" qu'elle est logique et/ou correctement implémentée hein :/

Message cité 1 fois
Message édité par anapajari le 27-10-2006 à 10:58:37
Reply

Marsh Posté le 27-10-2006 à 11:20:15    

anapajari a écrit :


[...]
c'est pas parce qu'elle "marche" qu'elle est logique et/ou correctement implémentée hein :/


 
Merci  :jap:.
 
Un classe n'est pas un "sac à fonction" ou boite à outils. Avant de coder il faut que tu comprennes ce que c'est la notion objet et être sur d'avoir bien compris au risque de se retrouver avec quelque chose d'ingérable donc autant rester sur du procédurale. C'est pas une critique insultante que je fais je parle par expérience car je suis passé par là. L'objet c'est pas du code, c'est pas une façon de développé c'est purement une vue d'esprit qui peut être compréhensible pour un non developpeur. Un boucher, charcutier, prostituer peuvent être capable de comprendre la logique.  
Voila, bon courage Nycius car c'est en étant face au problème que tu apprendras et comprendra.


Message édité par Berceker United le 27-10-2006 à 11:20:49
Reply

Marsh Posté le 27-10-2006 à 11:26:57    

berceker u nited > Exact, je veux apprendre l'objet donc je me fais des tutos comme ceux la.
Si tu as un bon site de tuto/exemple/methodo sur les class en php4/5 je suis preneur

Reply

Marsh Posté le 27-10-2006 à 12:13:09    

Ben nous pouvons déjà commencer par se que souhaite faire.  
Première avant de parler de code il faut analyser le scénario. Tu veux gérer les commandes de voiture d'occasion. Dé là, tu peux isoler des mots clés. Voiture et Commande.  
Maintenant seul toi peux répondre à ces questions :
- Comment tu identifies, caractérise un véhicule.
- Idem pour la commande


Message édité par Berceker United le 27-10-2006 à 12:13:24
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed