Comment utiliser les pointeurs et les références en programmation ?

fermer la fenetre

Des Applications Performantes Sans Vous Prendre La Tête !

Recevez la formation "Développement Facilte" GRATUITEMENT
Avec tous les Codes Sources Commentés
 
(Les événements, la programmation orientée objets, les modèles de conception, Les éditeurs, les outils, 
l'efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)

Renseignez votre prénom et votre adresse email ci-dessous :

Voici un nouveau tutoriel qui va vous permettre de comprendre la différence entre un pointeur et une référence.

Et surtout, vous allez apprendre à en tirer parti avec votre langage de programmation 😉

Tout est dans le cours vidéo ci-dessous.

[ppmaccordion][ppmtoggle title=”Afficher le texte de la vidéo”]

Comment utiliser les pointeurs et les références en programmation ?

Bonjour à tous et bienvenu sur Développement Facile.

Dans ce nouveau cours, vous allez comprendre et apprendre à utiliser les pointeurs et les références. Vous avez sûrement déjà entendu parler du concept de pointeurs, plus ou moins, en fonction du langage de programmation que vous utilisez. Il faut savoir que les pointeurs sont très présents en C et en Assembleur, et dans les langages de plus haut niveau, l’utilisation des pointeurs est supprimée, elle a l’été remplacée par des référence. Les références c’est beaucoup plus simple à comprendre, à utiliser.

Définition d’un pointeur

Donc pour les langages de haut niveau, c’est l’ActionScript, Java, JavaScript. Ils utilisent plutôt des références. Alors aujourd’hui un pointeur, qu’est-ce que c’est ?
Un pointeur ça contient une adresse mémoire qui elle, sauvegarde une information, un entier par exemple, ou un caractère. Alors qu’une référence, une variable elle pointe vers une valeur. C’est-à-dire que dans une fonction, quand vous passez en entrée une variable, c’est une référence à une variable qui est transmise. Donc la valeur est copiée à l’intérieur de la fonction, c’est à dire que la fonction elle peut lire et écrire dans cette variable qui est transmise, mais elle ne peut pas modifier la variable originale, ce n’est pas possible. Alors qu’avec un pointeur, il est possible de passer à une fonction, l’adresse de la variable, et justement l’intérieur de la fonction d’accéder en lecture et en écriture à la variable originale, depuis le code de la fonction.

Exemple de référence

Donc, par exemple, vous avez une classe voiture, vous commencez à la connaître, je l’ai utilisée dans plusieurs tutoriels. Vous créez une instance de la classe voiture, oVoitureRenault, et pour le paramètre marque, la propriété marque, vous lui affectez le nom Renault.
Ensuite vous avez un autre objet, donc une variable oVoiture2, qui est typée avec la classe voiture, et vous faites oVoiture2 = oVoitureRenault. Si vous affichez oVoitureRenault.marque ça affiche Renault et oVoiture2.marque, ça affichera Renault, c’est à dire que les deux instances les deux objets voitures Renault, voiture 2, contiennent le même objet, c’est identique.
Par contre si vous utilisez oVoitures2.marque = BMW, donc vous changez la marque de l’objet numéro 2, et derrière vous réaffichez oVoitureRenault.marque, ça va afficher BMW et oVoiture2.marque, exactement BMW, normal. C’est à dire que oVoitureRenault et oVoiture2 ciblent exactement le même objet, en affectant oVoitureRenault à oVoiture2, vous avez copié une référence, c’est une copie de valeur, donc ça cible le même objet, donc que vous modifiez l’instance oVoitureRenault ou oVoiture2, finalement, ça modifie les deux objets en même temps.

Copie de référence

Donc, oVoitureRenault = oVoiture2, c’est une syntaxe fausse si vous souhaitez copier l’objet, il est possible de créer deux objets identiques en copie complet, mais pas par référence. Vous devez prévoir dans la classe voiture une méthode clone, et cette méthode clone, comme vous l’appelez c’est elle qui va s’occuper de créer à l’intérieur une nouvelle instance de la voiture et de reprendre tous les paramètres de configuration de l’objet, de les affecter, pour vous redonner un objet identique à oVoitureRenault, mais en même temps qui soit différent parce que ce sera une nouvelle instance. Donc là, ce sera un vrai clone. Prévoyez une méthode clone dans les classes, où vous souhaitez effectuer une copie d’objet directement.
Particularité des “pointeurs”

Je vais vous montrer un petit exemple pour mieux comprendre la différence.
C’est à dire que, dans cet exemple en ActionScript, vous passer un objet oPoint : point, là vous faites un passage par référence, c’est-à-dire que, les coordonnées de point son passées comme une référence à l’objet, et comme je vous l’ai dit, si vous modifiez les paramètres de point ou de coordonnée, donc de coordonnée ici, eh bien ça va modifier le paramètre en entrée. Car c’est un passage par référence, alors que si vous faites un passage par copie de valeur, vous récupérez une nouvelle instance de l’objet avec oPoint.X le paramètre d’entrée, et là vous modifiez directement, juste o, aux coordonnées X,Y, dans votre nouvel objet, c’est une nouvelle instance, donc ça n’aura aucune influence sur cet objet-là.
C’est une petite subtilité à comprendre, donc je vous le répète les objets sont toujours passés par valeur, mais l’accès au champ de ces objets se fait par adresse, donc si oVoiture est un objet et que vous le transmettez dans une fonction, la fonction elle ne peut pas modifier l’objet oVoiture directement, par contre elle peut modifier les champs de voiture, les propriétés. Par exemple sa marque, sa couleur comme je vous le montrer dans l’exemple en ActionScript avec l’objet point.

Les pointeurs/références

Les variables, il faut savoir qu’elles pointent toujours vers une donnée. New classe, ça permet de créer une nouvelle instance donc un nouvel objet donc avec l’exemple que vous trouverez en téléchargement sous la vidéo en ActionScript, faites la différence entre une valeur et une référence, ça va vous aider par exemple de manipuler d’une façon différente, certaines de vos données.

A vous de jouer !

Comme d’habitude, téléchargez l’exemple de code source sous ce cours vidéo, et maintenant mettez en pratique la notion de pointeur de références, de valeurs, dans vos applications. Si vous avez des questions, ça va vous paraitre encore un petit peu flou malgré les exemples, posez-moi directement vos questions sous ce cours vidéo et je vous dis à très bientôt sur Développement Facile.

 

[/ppmtoggle][/ppmaccordion]

Téléchargez un exemple de code source

Dans cet exemple en ActionScript, vous allez comprendre la différence entre un passage par référence et un passage par valeur d’une variable.

Downloads

Comment mettez-vous en mettre les subtilités entre pointeur, référence et valeur ?

Dans quel contexte et avec quel langage, utilisez-vous plutôt des pointeurs (langage C), des références (PHP) et des valeurs (ActionScript) ?

Créez des Applications Performantes avec la Formation Gratuite Développement Facile !

Recevez des Cours Vidéos avec les codes sources 
(Les événements, la POO, les modèles de conception, Les éditeurs, 
efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)