IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Attributs et mot clé "final"


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut [POO] Attributs et mot clé "final"
    Salut tout le monde,
    Je suis entrain de reécrire un programme en PHP que j'ai réalisé avant en java, j'ai besoin de savoir l'équivalent du mot clé final qui est devant une variable dans le langage java mais en PHP

    Merci à vous

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 368
    Billets dans le blog
    17
    Par défaut
    En PHP cela n'existe pas pour les propriétés, juste pour les classes ou les méthodes.
    http://www.php.net/manual/fr/language.oop5.final.php

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    Salut,
    Merci pour votre réponse, j'ai remarqué que ca existe pour les classes et les méthodes et j'ai souhaité que ca existe aussi pour les variables
    Mon problème est que j'ai réecrit le meme code en php mais celui en Java donne un résultat différent, la seule chose qui est différente entre les deux codes est les variables qui sont final dans la version java
    Avez vous une solution??

  4. #4
    mon_nom_est_personne
    Invité(e)
    Par défaut
    peu tu nous copier ton code, car p-e que le probleme est tout autre ( loop non cassée etc...)

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    OK, voilà mon code, c'est une classe qui modélise l'algorithme de Dijkstra

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    <?php
     
     class Dijkstra  //c'est la classe qui modélise le graphe
     {
      	var $arc= array();       // Matrice d'adjacense qui modélise les arcs entre les noeuds
    	var $nombre=0;  		 //pour maintenir le nombre des sommets
    	var $infini = 0;
     
    	 function Dijkstra ($nombre,&$ourMap, $infini)//initialisation de graphe durant les itérations
       {
           $this -> arc = &$ourMap;
    	   $this -> nombre = $nombre; 
    	   $this -> infini=$infini;
       }
     
       function ChercheVoisin($noeud)
       {	//construit un tableau des sommets adjacents d'un sommet
     
    		  $count=0;
    		  $voisins = array();
    		//trouver les voisins
     
    		  for ($i = 0; $i<count($this -> arc[$noeud]); $i++)
    		  {
     
    			  if ($this -> arc[$noeud][$i]>0 )
    			  {
    			   //stocker les voisins dans rep
    			   $voisins[$count++]=$i;
    			   }
    		  }
    		   return $voisins;    
    		}
     
     
      //application de Dijkstra
     //pour faire l'appel il faut désigner le graphe , le départ et l'arrivée
     	function trouverChemin($depart,$arrivee)
    	{
     
    		//Tableau des distances
          	$distance = array();
            //Tableau des predecesseurs
            $predecesseurs = array();
            //Tableau des valeurs 0 ou 1 pour marquer si chaque sommet est visité ou non
            $marque = array();
     
            for ($i = 0; $i < $this -> nombre; $i++)
    		 {
     
            	//initialisation du tableau distance à* l'infinie
                $distance[$i]=$this -> infini;
    			$marque [$i]=false;
                }
                //initialisation de la distance de la source à 0
            $distance[$depart]=0;
     
            for ($i = 0; $i < $this -> nombre; $i++) 
    		{
    			//extraire le minimum du tableau distance en tenant compte que les sommets à* comparer ne sont pas visités	
                $min= $this -> ExtraireMin ($distance, $marque);
                //changer la valeur* à true pour dire que ce sommet est visité
                $marque[$min]=true;
     
    			//chercher les voisins du sommet actuel
                $SesVoisins= array();
    			$SesVoisins= $this -> ChercheVoisin($min);
     
                //chercher le voisin le plus proche
                for ($j = 0; $j < count($SesVoisins); $j++) {
                    $voisinActuel = $SesVoisins [$j]; 
                    //avoir la nouvelle distance pour le sommet actuel en ajoutant la valeur du nouveau arc à* la distance totale
                    $distanceActuelle = $distance[$min] + $this -> arc [$min][$voisinActuel];
                    //si c'est le voisin trouvé est le plus proche changer la distance et le predecesseur
                    if ($distanceActuelle <$distance[$voisinActuel]) 
    				{
                        $distance[$voisinActuel]=$distanceActuelle;
                        $predecesseurs[$voisinActuel]=$min;
     
                       }
                }
     
     
             }
    	 //pour récupérer le chemin entre le point de départ et l'arrivée
    			$chemin=array();
    			$x=$arrivee;
    			while($x!=$depart)
    			{
    				array_unshift($chemin, $x);
    				$x=$predecesseurs[$x];
    			}
    			array_unshift($chemin, $depart);
    		//retourner le tableau contenant la sécance des sommets
            return $chemin;
    	}
    		function ExtraireMin($distance, $marque){
     
    		//initialiser x à* l'infinie
            $x =$this -> infini;
            $y=0;
     
    		//trouver la valeur minimale du tableau 
     
            for ($i = 0; $i < count($distance); $i++) 
    		{
                 if (!$marque[$i] && $distance[$i]< $x) 
    			 {
     
                    $y=$i;
                    $x=$distance[$i];
     
                }
     
            }
    		//retourner la valeur trouvée
            return $y;
        }
     }
     
    //je test avec  $matrice_cout =array(array(0,5),array(5,0)) et count($ourVille)=2
     
    $graphe = new Dijkstra(count($ourVille), $matrice_cout, 100000);
     
    //$depart = 0 et $arrivee = 1
     
    $res=$graphe -> trouverChemin($depart,$arrivee);
     
    ?>
    ca doit retourner un tableau $chemin qui contient: 0 et 1 mais ca retourne un tableau vide

  6. #6
    mon_nom_est_personne
    Invité(e)
    Par défaut
    ok ok un truc qui devrais t'aider c'est de casser tes loop example

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for ($i = 0; $i<count($this -> arc[$noeud]); $i++)
    {
     
    if ($this -> arc[$noeud][$i]>0 )
    {
    //stocker les voisins dans rep
    $voisins[$count++]=$i;
    break;
    }
    }
    tu as peut-etre des boucles qui reecrivent plusieurs fois et comme cette algo est tres recurssif ...

    Sinon en quel mesure les resultats sont differents ?

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo