Les interfaces en ActionScript 3

L’utilisation d’interfaces produit du code à écrire en plus, et surtout à maintenir ! Néanmoins, elle sont extrêmement pratiques lorsque vous utilisez plusieurs classes qui représentent quelque chose de visuel ou qui doivent savoir faire plusieurs actions, qui ne sont pas forcément écrites de la même manière ou qui n’utilisent pas le même support (exemple: un gestionnaire de sauvegarde – il peut y en avoir une classe pour sauvegarder dans PostgreSQL, une pour MySQL, une pour XML mais qui utilisent la même interface car doivent supporter les fonctions insert, update et delete par exemple). Bref, dans ces cas là – ou pour garantir une extensibilité et une réutilisabilité importante -, pour être sûr que votre classe contient bien les bonnes fonctions, il est préférable d’utiliser des interfaces.

En ActionScript, le comportement des interfaces est le suivant:

  • Vous devez les définir dans package
  • Vous devez lister toutes les fonctions (supposées publiques) que la classe doit avoir, sans préciser leurs types (public, private, protected…)
  • Une fonction est définie par son nom, ses paramètres et sa valeur de retour
  • Une interface peut étendre une autre interface en utilisant extends
  • Une classe peut implémenter une seule interface, en utilisant implements

Prenons un package com.graphics.engines, avec une interface IGraphicEngine :

Et ma classe Pie de ce même package, va implémenter cette interface:

Ainsi, ma classe Pie est obligée de contenir les méthodes/fonctions de l’interface IGraphicEngine, sinon le compilateur ne va pas vouloir continuer ! :-)

facebooktwittergoogle_plusredditpinterestlinkedinmail

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">