La communication, dans une organisation comme dans une application informatique, est un élément essentiel à l'efficacité et au succès d'un système. Les objets doivent communiquer efficacement entre eux afin d'assurer le bon fonctionnement du programme.
La communication inter-objet peut se concrétiser de deux façons: par des messages ou par des événements.
Un message, c'est simplement un objet qui appelle une méthode d'un autre objet. Les méthodes d'un objet jouent un rôle important dans la communication inter-objet car on les utilise comme récepteur de messages. En d'autres termes, quand un objet veut envoyer un message à un autre objet, l'émetteur invoque une méthode d'un récepteur.
Nous avons déjà vu comme invoquer une méthode. L'exemple suivant invoque la méthode getPaiementMensuel et stocke la valeur dans une variable lePaiement:
var lePaiement:Number = monPretAuto.getPaiementMensuel();
public function getPaiementMensuel():Number {
var paiementMensuel:Number = super.getPaiementMensuel()
+ this.getFraisBancaires();
return paiementMensuel;
}
L'objet émetteur demande à un autre objet nommé monPretAuto le montant du paiement mensuel. Il ne donne aucun paramètre, comme l'indique les parenthèses vides. Le récepteur du message peut répondre par son instruction return, et le résultat sera stocké dans la nouvelle variable lePaiement. En spécifiant le type de renvoi, on s'assure de la qualité des informations reçues par le récepteur.
La capacité d'invoquer des méthodes peut sembler banale, mais il s'agit d'un concept simple qui permet aux applications d'être flexible et modifiable. Avec la capacité de définir des fonctionnalités une fois, et une seule fois, comme étant les méthodes d'un objet, et la capacité d'interagir avec ces méthodes à partir d'un n'importe quel objet, on peut éviter tout redondance dans le code. Chaque bloc de fonctionnalité existe à un seul endroit dans la système; on va à un seul endroit si on veut le modifier, et il n'y a qu'un seul bloc de code à modifier.
L'autre forme de communication entre les objets a lieu par des événements. Un événement c'est une action qui déclenche un code. Souvent, les actions sont produites par l'utilisateur, autrement elles le sont par le système lui-même.
La prédominance de la POO dans les dernières décennies est directement reliée au développement et à la popularité des interfaces graphiques (GUI). Cela tient en la capacité des langages orientés objet de capter les événements. À chaque fois qu'un utilisateur interagit avec un élément d'interface, un événement est déclenché. C'est la POO qui a rendu les interfaces graphiques possibles.
Les événements déclenchés par l'utilisateur sont nombreux dans Flash. Ils répondent au clic de la souris, aux touches appuyées sur le clavier, aux actions de survol, de glissement... Les événements du système répondent au mouvement de la tête de lecture, à l'arrivée ou au chargement de données.
Les écouteurs sont un moyen simple de gérer les événements. Un écouteur est un objet qui est informé lorsque survient un événement. Pour créer un écouteur, l'objet sur lequel l'événement va se produire doit connaitre l'objet qui doit répondre à cet événement. On nomme ce processus enregistrer ou souscrire un écouteur à un objet.
La syntaxe de base pour ajouter un écouteur à un objet est la suivante:
objetEcoute.evenement = function() {
instructions;
}
sourceEvenement.addListener(objetEcoute);
Pour ajouter un écouteur, on utilise l'instruction addListener(). Ici, nous avons ajouté un écouteur (monEcouteur) à la classe Key pour capter le code des touches du clavier.
var monEcouteur:Object = new Object();
monEcouteur.onKeyDown = function() {
trace("Le code ASCII de la touche est: " + Key.getAscii());
}
Key.addListener(monEcouteur);